private _createSortByMenu()

in desktop/src/@batch-flask/ui/abstract-list/abstract-list-base.ts [524:571]


    private _createSortByMenu() {
        const sortOptions = Object.keys(this._config.sorting as any).map((key) => {
            return new ContextMenuItem({
                label: inflection.humanize(inflection.underscore(key)),
                click: () => {
                    this.dataPresenter.sortBy(key);
                },
                checked: this.dataPresenter.sortingBy.key === key,
                type: "checkbox",
            });
        });

        const ascending = this.dataPresenter.sortingBy.direction === SortDirection.Asc;
        const sortDirections = [
            new ContextMenuItem({
                label: "Ascending",
                click: () => {
                    this.dataPresenter.updateSortDirection(SortDirection.Asc);
                },
                checked: ascending,
                type: "checkbox",
            }),
            new ContextMenuItem({
                label: "Descending",
                click: () => {
                    this.dataPresenter.updateSortDirection(SortDirection.Desc);
                },
                checked: !ascending,
                type: "checkbox",
            }),
        ];
        return new MultiContextMenuItem({
            label: "Sort by",
            subitems: [
                new ContextMenuItem({
                    label: "Default",
                    click: () => {
                        this.dataPresenter.sortBy(null);
                    },
                    checked: this.dataPresenter.sortingBy.key === null,
                    type: "checkbox",
                }),
                ...sortOptions,
                new ContextMenuSeparator(),
                ...sortDirections,
            ],
        });
    }