getUserManagementColumns()

in client/client/app/shared/components/ngbUserManagement/ngbUserManagementDlg/ngbUserManagementDlg.service.js [106:268]


    getUserManagementColumns(columnsList) {
        const columnDefs = [];
        for (let user = 0; user < columnsList.length; user++) {
            const column = columnsList[user];
            switch (column.toLowerCase()) {
                case 'actions':
                    columnDefs.push({
                        cellTemplate: `
                            <div layout="row" style="flex-flow: row wrap; justify-content: center; align-items: center; width: 100%">
                                <md-button
                                    aria-label="Edit"
                                    class="md-mini md-hue-1 grid-action-button"
                                    ng-if="row.entity.editable"
                                    ng-click="grid.appScope.ctrl.openEditUserDlg(row.entity, $event)">
                                    <ng-md-icon icon="edit"></ng-md-icon>
                                </md-button>
                            </div>`,
                        enableColumnMenu: false,
                        enableSorting: false,
                        enableMove: false,
                        field: column.toLowerCase(),
                        maxWidth: 120,
                        minWidth: 120,
                        name: ''
                    });
                    break;
                case 'groups':
                    columnDefs.push({
                        cellTemplate: `
                            <div layout="row" ng-if="row.entity.groups.length <= 3" style="flex-flow: row wrap; align-items: center;">
                                <span
                                    ng-repeat="group in row.entity.groups track by $index"
                                    class="group-role-tag bordered"
                                    ng-class="{'domain-group': group.isAD}">
                                    {{group.name}}
                                </span>
                            </div>
                            <div layout="row" ng-if="row.entity.groups.length > 3" style="flex-flow: row wrap; align-items: center;">
                                <span
                                    ng-repeat="group in row.entity.groups.slice(0, 3) track by $index"
                                    class="group-role-tag bordered"
                                    ng-class="{'domain-group': group.isAD}">
                                    {{group.name}}
                                </span>
                                <ng-md-icon
                                    icon="more_horiz"
                                    class="md-popover"
                                    ng-mouseover="grid.appScope.ctrl.showPopover(row.entity.groups, $event)">
                                </ng-md-icon>
                            </div>
                        `,
                        enableColumnMenu: false,
                        enableSorting: false,
                        field: 'groups',
                        name: 'Groups',
                        width: '*',
                        minWidth: 50,
                    });
                    break;
                case 'roles':
                    columnDefs.push({
                        cellTemplate: `
                            <div layout="row" ng-if="row.entity.roles.length <= 3" style="flex-flow: row wrap; align-items: center;">
                                <span
                                    ng-repeat="role in row.entity.roles track by $index"
                                    class="group-role-tag bordered">
                                    {{role.name}}
                                </span>
                            </div>
                            <div layout="row" ng-if="row.entity.roles.length > 3" style="flex-flow: row wrap; align-items: center;">
                                <span
                                    ng-repeat="role in row.entity.roles.slice(0, 3) track by $index"
                                    class="group-role-tag bordered">
                                    {{role.name}}
                                </span>
                                <ng-md-icon
                                    icon="more_horiz"
                                    class="md-popover"
                                    ng-mouseover="grid.appScope.ctrl.showPopover(row.entity.roles, $event)">
                                </ng-md-icon>
                            </div>
                        `,
                        enableColumnMenu: false,
                        enableSorting: false,
                        field: 'roles',
                        name: 'Roles',
                        width: '*',
                        minWidth: 50,
                    });
                    break;
                case 'user':
                    columnDefs.push({
                        cellTemplate: `
                                <div class="ui-grid-cell-contents" style="display: flex; flex-direction: column">
                                    <span>{{row.entity.userName}}</span>
                                    <div ng-if="row.entity.userAttributes" style="margin-top: 2px">
                                        {{row.entity.userAttributes}}
                                    </div>
                                </div>
                        `,
                        enableColumnMenu: false,
                        enableSorting: true,
                        field: 'userName',
                        filter: {
                            condition: (term, value, row) => {
                                if (term) {
                                    const user = row.entity;
                                    const matchAttributes = () => {
                                        if (user.attributes) {
                                            for (const key in user.attributes) {
                                                if (user.attributes.hasOwnProperty(key) &&
                                                    user.attributes[key] &&
                                                    user.attributes[key].toLowerCase().indexOf(term.toLowerCase()) >= 0) {
                                                    return true;
                                                }
                                            }
                                        }
                                        return false;
                                    };
                                    return (user.userName || '').toLowerCase().indexOf(term.toLowerCase()) >= 0 ||
                                        matchAttributes();
                                }
                                return true;
                            }
                        },
                        minWidth: 50,
                        name: 'User',
                        width: '*',
                    });
                    break;
                case 'group':
                    columnDefs.push({
                        enableColumnMenu: false,
                        enableSorting: true,
                        field: 'groupName',
                        minWidth: 50,
                        name: 'Group',
                        width: '*',
                    });
                    break;
                case 'role':
                    columnDefs.push({
                        enableColumnMenu: false,
                        enableSorting: true,
                        field: 'roleName',
                        minWidth: 50,
                        name: 'Role',
                        width: '*',
                    });
                    break;
                default:
                    columnDefs.push({
                        field: column.toLowerCase(),
                        minWidth: 50,
                        name: column,
                        width: '*',
                    });
                    break;
            }
        }

        return columnDefs;
    }