sortColumns()

in client/client/app/components/ngbTargetPanel/ngbTargetsTab/ngbTargetsForm/ngbTargetGenesTable/ngbTargetGenesTable.controller.js [258:291]


    sortColumns() {
        if (!this.gridApi) return;
        const ordered = JSON.parse(localStorage.getItem('targetGenesColumnsOrder'));
        if (ordered && ordered.length) {
            this.gridApi.grid.columns.sort((c2, c1) => {
                if (!ordered.includes(this.removeColumnName)) {
                    if (c2.name === this.removeColumnName) return 1;
                    if (c1.name === this.removeColumnName) return -1;
                }
                if (!ordered.includes(this.launchColumnName)) {
                    if (c2.name === this.launchColumnName) return 1;
                    if (c1.name === this.launchColumnName) return -1;
                }
                if (ordered.includes(c2.name) && ordered.includes(c1.name)) {
                    return ordered.indexOf(c2.name) < ordered.indexOf(c1.name) ? -1 : 1;
                } else if (ordered.includes(c2.name) || ordered.includes(c1.name)) {
                    if (ordered.includes(c2.name)) return -1;
                    if (ordered.includes(c1.name)) return 1;
                }
                return 0;
            })
        } else {
            const defaultOrder = this.gridOptions.columnDefs.map(c => c.name);
            this.gridApi.grid.columns.sort((c2, c1) => {
                if (defaultOrder.includes(c2.name) && defaultOrder.includes(c1.name)) {
                    return defaultOrder.indexOf(c2.name) < defaultOrder.indexOf(c1.name) ? -1 : 1;
                } else if (defaultOrder.includes(c2.name) || defaultOrder.includes(c1.name)) {
                    if (defaultOrder.includes(c2.name)) return -1;
                    if (defaultOrder.includes(c1.name)) return 1;
                }
                return 0;
            })
        }
    }