getTableColumns()

in client/client/app/components/ngbTargetPanel/ngbTargetsTab/ngbTargetsForm/ngbTargetGenesTable/ngbTargetGenesTable.controller.js [293:429]


    getTableColumns() {
        const headerCells = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_header.tpl.html');
        const inputCell = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_inputCell.tpl.html');
        const selectCell = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_selectCell.tpl.html');
        const listCell = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_listCell.tpl.html');
        const removeCell = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_removeCell.tpl.html');
        const additionalCell = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_additionalCell.tpl.html');
        const tableCell = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_tableCell.tpl.html')
        const launchCell = require('./ngbTargetGenesTableCells/ngbTargetGenesTable_launchCell.tpl.html');

        const result = [];
        const columnsList = this.ngbTargetGenesTableService.currentColumnFields;

        for (let i = 0; i < columnsList.length; i++) {
            let columnSettings = null;
            const column = columnsList[i];
            const columnName = this.ngbTargetGenesTableService.getColumnName(column);
            const isColumnSort = this.ngbTargetGenesTableService.getIsColumnSort(columnName);
            const settings = {
                name: column,
                displayName: columnName,
                enableHiding: false,
                field: column,
                headerTooltip: column,
                headerCellTemplate: headerCells,
                minWidth: 40,
                width: '*'
            }
            const defaultSettings = {
                ...settings,
                enableColumnMenu: false,
                enableSorting: false,
                enableFiltering: false,
            };
            const parasiteSettings = {
                ...settings,
                enableColumnMenu: isColumnSort,
                enableSorting: isColumnSort,
                enableFiltering: this.displayFilters,
            };
            switch (column) {
                case 'geneId':
                case 'taxId':
                case 'speciesName':
                    if (this.isParasite) {
                        columnSettings = {
                            ...parasiteSettings,
                            cellTemplate: inputCell,
                        };
                    } else {
                        columnSettings = {
                            ...defaultSettings,
                            cellTemplate: inputCell,
                        };
                    }
                    break;
                case 'geneName':
                    if (this.isParasite) {
                        columnSettings = {
                            ...parasiteSettings,
                            cellTemplate: listCell,
                        };
                    } else {
                        columnSettings = {
                            ...defaultSettings,
                            cellTemplate: listCell,
                        };
                    }
                    break;
                case 'priority':
                case 'status':
                    if (this.isParasite) {
                        columnSettings = {
                            ...parasiteSettings,
                            cellTemplate: selectCell,
                        };
                    } else {
                        columnSettings = {
                            ...defaultSettings,
                            cellTemplate: selectCell,
                        };
                    }
                    break;
                case 'additionalGenes':
                case 'ttdTargets':
                    columnSettings = {
                        ...parasiteSettings,
                        enableColumnMenu: false,
                        enableSorting: false,
                        enableFiltering: this.displayFilters,
                        cellTemplate: tableCell,
                    };
                    break;
                case 'remove':
                    columnSettings = {
                        ...defaultSettings,
                        minWidth: 38,
                        maxWidth: 38,
                        cellTemplate: removeCell,
                        enableColumnMenu: false,
                        enableSorting: false,
                        enableFiltering: false,
                        enableMove: false,
                    };
                    break;
                case 'launch':
                    columnSettings = {
                        ...defaultSettings,
                        minWidth: 38,
                        maxWidth: 38,
                        cellTemplate: launchCell,
                        enableColumnMenu: false,
                        enableSorting: false,
                        enableFiltering: false,
                        enableMove: false,
                    };
                    break;
                default:
                    if (this.isParasite) {
                        columnSettings = {
                            ...parasiteSettings,
                            cellTemplate: additionalCell,
                        };
                    } else {
                        columnSettings = {
                            ...defaultSettings,
                            cellTemplate: additionalCell,
                        };
                    }
                    break;
            }
            if (columnSettings) {
                result.push(columnSettings);
            }
        }
        return result;
    }