in source/idea/idea-cluster-manager/webapp/src/pages/hpc/queues.tsx [155:290]
buildListing() {
return (
<IdeaListView
ref={this.listing}
preferencesKey={"queues"}
showPreferences={false}
title="Queue Profiles"
description="Scale-Out Queue Management"
selectionType="single"
primaryAction={{
id: "submit-queue",
text: "Create Queue Profile",
onClick: () => {
this.props.navigate("/soca/queues/create");
},
}}
secondaryActionsDisabled={!this.isSelected()}
secondaryActions={[
{
id: "edit-queue-profile",
text: "Edit Queue Profile",
onClick: () => {
this.props.navigate(`/soca/queues/update?id=${this.getSelected()?.queue_profile_id}`);
},
},
{
id: "enable-queue-profile",
text: this.isSelectedQueueProfileEnabled() ? "Disable Queue Profile" : "Enable Queue Profile",
onClick: () => {
if (this.isSelectedQueueProfileEnabled()) {
this.schedulerAdmin()
.disableQueueProfile({
queue_profile_id: this.getSelected()?.queue_profile_id,
})
.then(
(_) => {
this.setState(
{
queueSelected: false,
},
() => {
this.props.onFlashbarChange({
items: [
{
type: "success",
content: `Queue Profile: ${this.getSelected()?.name} disabled successfully`,
dismissible: true,
},
],
});
this.getListing().fetchRecords();
}
);
},
(error) => {
this.props.onFlashbarChange({
items: [
{
type: "error",
content: `Failed to disable queue profile: ${error.message}`,
dismissible: true,
},
],
});
}
);
} else {
this.schedulerAdmin()
.enableQueueProfile({
queue_profile_id: this.getSelected()?.queue_profile_id,
})
.then(
(_) => {
this.setState(
{
queueSelected: false,
},
() => {
this.props.onFlashbarChange({
items: [
{
type: "success",
content: `Queue Profile: ${this.getSelected()?.name} enabled successfully`,
dismissible: true,
},
],
});
this.getListing().fetchRecords();
}
);
},
(error) => {
this.props.onFlashbarChange({
items: [
{
type: "error",
content: `Failed to enable queue profile: ${error.message}`,
dismissible: true,
},
],
});
}
);
}
},
},
]}
onRefresh={() => {
this.setState(
{
queueSelected: false,
},
() => {
this.getListing().fetchRecords();
}
);
}}
onSelectionChange={() => {
this.setState(
{
queueSelected: true,
splitPanelOpen: true,
},
() => {}
);
}}
onFetchRecords={() => {
return this.schedulerAdmin().listQueueProfiles({
filters: this.getListing().getFilters(),
paginator: this.getListing().getPaginator(),
});
}}
columnDefinitions={HPC_QUEUE_TABLE_COLUMN_DEFINITIONS}
/>
);
}