buildListing()

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}
            />
        );
    }