{
    "id": "time-tracking",
    "title": "Time Tracking",
    "className": "com.armedia.acm.services.timesheet.model.AcmTimesheet",
    "configurable": true,
    "initialLinksShown": true,
    "menus": [
        {
            "menuId": "leftnav",
            "menuItemURL": "time-tracking.main",
            "menuItemTitle": "timeTracking.menus.leftnav.item",
            "moduleId": "time",
            "iconClass": "fa fa-clock-o",
            "position": 150
        },
        {
            "menuId": "topbar",
            "menuItemURL": "frevvo.new-timesheet",
            "menuItemTitle": "timeTracking.menus.topbar.item",
            "moduleId": "time",
            "iconClass": "fa fa-clock-o",
            "position": 80,
            "formsType": "frevvo"
        },
        {
            "menuId": "topbar",
            "menuItemURL": "newTimesheet",
            "menuItemTitle": "timeTracking.menus.topbar.item",
            "moduleId": "time",
            "modalDialog": {
                "moduleName": "time-tracking",
                "templateUrl": "modules/time-tracking/views/components/time-tracking-new-timesheet-modal.client.view.html",
                "controllerName": "TimeTracking.NewTimesheetController"
            },
            "iconClass": "fa fa-clock-o",
            "position": 80,
            "formsType": "angular"
        }
    ],
    "tree": {
        "pageSize": 32,
        "sorters": [
            {
                "desc": "timeTracking.tree.sorters.dateAsc",
                "name": "create_date_tdt ASC",
                "default": true
            },
            {
                "desc": "timeTracking.tree.sorters.dateDesc",
                "name": "create_date_tdt DESC"
            },
            {
                "desc": "timeTracking.tree.sorters.idAsc",
                "name": "id ASC"
            },
            {
                "desc": "timeTracking.tree.sorters.idDesc",
                "name": "id DESC"
            },
            {
                "desc": "timeTracking.tree.sorters.nameDesc",
                "name": "name DESC"
            }
        ],
        "nodeTypes": [
            {
                "type": "prev",
                "icon": "fa fa-arrow-up"
            },
            {
                "type": "next",
                "icon": "fa fa-arrow-down"
            },
            {
                "type": "p/TIMESHEET",
                "icon": "fa fa-clock-o",
                "components": [
                    "details",
                    "person",
                    "summary",
                    "tasks",
                    "tags"
                ]
            },
            {
                "type": "p/TIMESHEET/detail",
                "icon": "fa fa-info-circle",
                "label": "timeTracking.tree.nodeTypes.details.label",
                "components": [
                    "details"
                ]
            },
            {
                "type": "p/TIMESHEET/person",
                "icon": "fa fa-user",
                "label": "timeTracking.tree.nodeTypes.person.label",
                "components": [
                    "person"
                ]
            },
            {
                "type": "p/TIMESHEET/summary",
                "icon": "fa fa-clock-o",
                "label": "timeTracking.tree.nodeTypes.summary.label",
                "components": [
                    "summary"
                ]
            },
            {
                "type": "p/TIMESHEET/tags",
                "label": "timeTracking.tree.nodeTypes.tags.label",
                "icon": "fa fa-tags",
                "components": [
                    "tags"
                ]
            },
            {
                "type": "p/TIMESHEET/tasks",
                "icon": "fa fa-check-circle",
                "label": "timeTracking.tree.nodeTypes.tasks.label",
                "components": [
                    "tasks"
                ]
            },
            {
                "type": "p/ERROR",
                "icon": "fa fa-question"
            }
        ]
    },
    "components": [
        {
            "id": "main",
            "title": "timeTracking.comp.main.title",
            "icon": "fa fa-tachometer",
            "enabled": false,
            "configurable": true,
            "type": "empty",
            "editable": false,
            "widgets": [
                {
                    "id": "details",
                    "type": "component",
                    "columnDefs": [
                        {
                            "name": "details",
                            "displayName": "timeTracking.comp.details.table.columns.title",
                            "headerCellFilter": "translate",
                            "cellTemplate": "<div ng-bind-html='row.entity.details'></div>"
                        },
                        {
                            "name": "modified",
                            "displayName": "timeTracking.comp.details.table.columns.modified",
                            "headerCellFilter": "translate",
                            "cellTemplate": "<div>{{ row.entity.modified | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>"
                        },
                        {
                            "name": "modifier",
                            "displayName": "timeTracking.comp.details.table.columns.modifier",
                            "headerCellFilter": "translate",
                            "lookup": "userFullNames"
                        }
                    ]
                },
                {
                    "id": "person",
                    "type": "component",
                    "columnDefs": [
                        {
                            "name": "fullName",
                            "displayName": "timeTracking.comp.person.table.columns.fullName",
                            "headerCellFilter": "translate"
                        },
                        {
                            "name": "userId",
                            "displayName": "timeTracking.comp.person.table.columns.userId",
                            "headerCellFilter": "translate"
                        }
                    ]
                },
                {
                    "id": "summary",
                    "type": "component"
                },
                {
                    "id": "tags",
                    "type": "component",
                    "columnDefs": [
                        {
                            "name": "tagName",
                            "displayName": "timeTracking.comp.tags.table.columns.tag",
                            "headerCellFilter": "translate"
                        },
                        {
                            "name": "created",
                            "displayName": "timeTracking.comp.tags.table.columns.created",
                            "cellTemplate": "<div>{{ row.entity.created | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>",
                            "headerCellFilter": "translate"
                        },
                        {
                            "name": "creator",
                            "displayName": "timeTracking.comp.tags.table.columns.createdBy",
                            "headerCellFilter": "translate",
                            "lookup": "userFullNames"
                        }
                    ]
                },
                {
                    "id": "tasks",
                    "type": "component",
                    "columnDefs": [
                        {
                            "field": "alerts",
                            "displayName": "",
                            "cellTemplate": "<div><a ng-if=\"row.entity.isOverdue\" tooltip=\"{{'timeTracking.comp.tasks.table.overdue.tooltip' | translate}}\" tooltip-append-to-body=\"true\" tooltip-class=\"tooltip-overdue\"><i class=\"fa fa-exclamation-circle icon-overdue\"></i></a><a ng-if=\"row.entity.isDeadline\" tooltip=\"{{'timeTracking.comp.tasks.table.deadline.tooltip' | translate}}\" tooltip-append-to-body=\"true\" tooltip-class=\"tooltip-due-soon\"><i class=\"fa fa-exclamation-triangle icon-due-soon\"></i></a></div>",
                            "width": 40,
                            "enableSorting": false,
                            "enableColumnMenu": false
                        },
                        {
                            "name": "title",
                            "field": "title_parseable",
                            "sortField": "title_parseable_lcs",
                            "displayName": "timeTracking.comp.tasks.table.columns.title",
                            "headerCellFilter": "translate",
                            "cellTemplate": "<div>{{row.entity.title_parseable}}</div>"
                        },
                        {
                            "name": "assignee",
                            "field": "assignee_id_lcs",
                            "displayName": "timeTracking.comp.tasks.table.columns.assignee",
                            "headerCellFilter": "translate",
                            "lookup": "userFullNames"
                        },
                        {
                            "name": "created",
                            "field": "create_date_tdt",
                            "displayName": "timeTracking.comp.tasks.table.columns.created",
                            "headerCellFilter": "translate",
                            "cellTemplate": "<div>{{ row.entity.create_date_tdt | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>"
                        },
                        {
                            "name": "priority",
                            "field": "priority_lcs",
                            "displayName": "timeTracking.comp.tasks.table.columns.priority",
                            "headerCellFilter": "translate"
                        },
                        {
                            "name": "due",
                            "field": "dueDate_tdt",
                            "displayName": "timeTracking.comp.tasks.table.columns.due",
                            "headerCellFilter": "translate",
                            "cellTemplate": "<div>{{ row.entity.dueDate_tdt | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>"
                        },
                        {
                            "name": "status",
                            "field": "status_lcs",
                            "displayName": "timeTracking.comp.tasks.table.columns.status",
                            "headerCellFilter": "translate"
                        }
                    ]
                },
                {
                    "id": "hoursSummary",
                    "type": "component",
                    "columnDefs": [
                        {
                            "name": "date",
                            "displayName": "timeTracking.widgets.summary.table.columns.date",
                            "headerCellFilter": "translate"
                        },
                        {
                            "name": "object.title",
                            "displayName": "timeTracking.widgets.summary.table.columns.objectTitle",
                            "headerCellFilter": "translate"
                        },
                        {
                            "name": "object.number",
                            "displayName": "timeTracking.widgets.summary.table.columns.objectNumber",
                            "headerCellFilter": "translate"
                        },
                        {
                            "name": "value",
                            "displayName": "timeTracking.widgets.summary.table.columns.hours",
                            "headerCellFilter": "translate"
                        }
                    ]
                }
            ]
        },
        {
            "id": "info",
            "title": "timeTracking.comp.info.title",
            "enabled": false,
            "configurable": true,
            "type": "empty",
            "editable": false
        },
        {
            "id": "actions",
            "title": "timeTracking.comp.actions.title",
            "enabled": false,
            "configurable": true,
            "type": "empty",
            "editable": false
        },
        {
            "id": "details",
            "title": "timeTracking.comp.details.title",
            "icon": "fa fa-info-circle",
            "enabled": true,
            "configurable": true,
            "type": "empty"
        },
        {
            "id": "person",
            "title": "timeTracking.comp.person.title",
            "className": "com.armedia.acm.services.participants.model.AcmParticipant",
            "icon": "fa fa-user",
            "enabled": true,
            "configurable": true,
            "type": "grid",
            "enableFiltering": true,
            "paginationPageSizes": [
                2,
                5,
                10,
                20,
                50
            ],
            "paginationPageSize": 5,
            "columnDefs": [
                {
                    "name": "fullName",
                    "displayName": "timeTracking.comp.person.table.columns.fullName",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "userId",
                    "displayName": "timeTracking.comp.person.table.columns.userId",
                    "headerCellFilter": "translate"
                }
            ]
        },
        {
            "id": "summary",
            "title": "timeTracking.comp.summary.title",
            "icon": "fa fa-clock-o",
            "enabled": true,
            "configurable": true,
            "type": "grid",
            "enableFiltering": true,
            "paginationPageSizes": [
                2,
                5,
                10,
                20,
                50
            ],
            "paginationPageSize": 5,
            "columnDefs": [
                {
                    "name": "code",
                    "displayName": "timeTracking.comp.summary.table.columns.code",
                    "headerCellFilter": "translate",
                    "cellTemplate": "<a href='#' ng-click='grid.appScope.onClickObjectType($event, row.entity)'>{{row.entity.code}}</a>"
                },
                {
                    "name": "type",
                    "displayName": "timeTracking.comp.summary.table.columns.type",
                    "cellFilter": "mapKeyValue: grid.appScope.customization.labels",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "chargeRole",
                    "displayName": "timeTracking.comp.summary.table.columns.role",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "value",
                    "displayName": "timeTracking.comp.summary.table.columns.value",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "totalCost",
                    "displayName": "timeTracking.comp.summary.table.columns.cost",
                    "headerCellFilter": "translate",
                    "cellTemplate": "<div>${{ row.entity.totalCost | number : 2}}</div>"
                },
                {
                    "name": "date",
                    "displayName": "timeTracking.comp.summary.table.columns.date",
                    "headerCellFilter": "translate",
                    "cellTemplate": "<div>{{ row.entity.date | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>"
                },
                {
                    "name": "modified",
                    "displayName": "timeTracking.comp.summary.table.columns.modified",
                    "headerCellFilter": "translate",
                    "cellTemplate": "<div>{{ row.entity.modified | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>"
                }
            ]
        },
        {
            "id": "tags",
            "title": "timeTracking.comp.tags.title",
            "icon": "fa fa-tags",
            "enabled": true,
            "configurable": true,
            "type": "grid",
            "autoSuggestObjectType": "TAG",
            "typeAheadColumn": "title_parseable",
            "enableFiltering": true,
            "paginationPageSizes": [
                5,
                10,
                20,
                50
            ],
            "paginationPageSize": 5,
            "columnDefs": [
                {
                    "name": "tagName",
                    "displayName": "timeTracking.comp.tags.table.columns.tag",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "created",
                    "displayName": "timeTracking.comp.tags.table.columns.created",
                    "cellTemplate": "<div>{{ row.entity.created | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "creator",
                    "displayName": "timeTracking.comp.tags.table.columns.createdBy",
                    "headerCellFilter": "translate",
                    "lookup": "userFullNames"
                }
            ],
            "filters": "\"Object Type\": TAG",
            "filterName": "Object Type"
        },
        {
            "id": "tasks",
            "title": "timeTracking.comp.tasks.title",
            "icon": "fa fa-check-circle",
            "enabled": true,
            "configurable": true,
            "type": "grid",
            "enableFiltering": true,
            "paginationPageSizes": [
                5,
                10,
                20,
                50
            ],
            "paginationPageSize": 5,
            "columnDefs": [
                {
                    "field": "alerts",
                    "displayName": "",
                    "cellTemplate": "<div><a ng-if=\"row.entity.isOverdue\" tooltip=\"{{'timeTracking.comp.tasks.table.overdue.tooltip' | translate}}\" tooltip-append-to-body=\"true\" tooltip-class=\"tooltip-overdue\"><i class=\"fa fa-exclamation-circle icon-overdue\"></i></a><a ng-if=\"row.entity.isDeadline\" tooltip=\"{{'timeTracking.comp.tasks.table.deadline.tooltip' | translate}}\" tooltip-append-to-body=\"true\" tooltip-class=\"tooltip-due-soon\"><i class=\"fa fa-exclamation-triangle icon-due-soon\"></i></a></div>",
                    "width": 40,
                    "enableSorting": false,
                    "enableColumnMenu": false
                },
                {
                    "name": "title",
                    "field": "title_parseable",
                    "sortField": "title_parseable_lcs",
                    "displayName": "timeTracking.comp.tasks.table.columns.title",
                    "headerCellFilter": "translate",
                    "cellTemplate": "<a href='#' ng-click='grid.appScope.onClickObjLink($event, row.entity)'>{{row.entity.title_parseable}}</a>"
                },
                {
                    "name": "assignee",
                    "field": "assignee_id_lcs",
                    "displayName": "timeTracking.comp.tasks.table.columns.assignee",
                    "headerCellFilter": "translate",
                    "lookup": "userFullNames"
                },
                {
                    "name": "created",
                    "field": "create_date_tdt",
                    "displayName": "timeTracking.comp.tasks.table.columns.created",
                    "headerCellFilter": "translate",
                    "cellTemplate": "<div>{{ row.entity.create_date_tdt | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>"
                },
                {
                    "name": "priority",
                    "field": "priority_lcs",
                    "displayName": "timeTracking.comp.tasks.table.columns.priority",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "due",
                    "field": "dueDate_tdt",
                    "displayName": "timeTracking.comp.tasks.table.columns.due",
                    "headerCellFilter": "translate",
                    "cellTemplate": "<div>{{ row.entity.dueDate_tdt | date: ('common.defaultDateTimeUIFormat' | translate)}}</div>"
                },
                {
                    "name": "status",
                    "field": "status_lcs",
                    "displayName": "timeTracking.comp.tasks.table.columns.status",
                    "headerCellFilter": "translate"
                }
            ]
        },
        {
            "id": "times",
            "title": "timeTracking.comp.newTimesheet.time.title",
            "className": "com.armedia.acm.services.timesheet.model.AcmTime",
            "icon": "fa fa-check-circle",
            "enabled": true
        },
        {
            "id": "newTimeObjectPicker",
            "title": "timeTracking.comp.newTimesheet.objectPicker.title",
            "enabled": "true",
            "configurable": true,
            "type": "grid",
            "enableFiltering": false,
            "emptySearch": false,
            "hideTypeahead": true,
            "showFacets": false,
            "multiSelect": false,
            "searchFilter": "\"Object Type\": COMPLAINT|CASE_FILE",
            "columnDefs": [
                {
                    "name": "name",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.name",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "object_type_s",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.type",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "title_parseable",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.title",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "object_id_s",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.id",
                    "headerCellFilter": "translate"
                }
            ],
            "paginationPageSizes": [
                5,
                10,
                20,
                50
            ],
            "paginationPageSize": 10,
            "start": 0
        },
        {
            "id": "otherChargeCodePicker",
            "title": "timeTracking.comp.newTimesheet.otherChargeCodePicker.title",
            "enabled": true,
            "type": "grid",
            "enableFiltering": false,
            "configurable": true,
            "otherTypeChargeCodes": [
                {
                    "name": "LEAP",
                    "type": "OTHER"
                },
                {
                    "name": "Training",
                    "type": "OTHER"
                },
                {
                    "name": "Conference",
                    "type": "OTHER"
                }
            ],
            "columnDefs": [
                {
                    "name": "name",
                    "displayName": "timeTracking.comp.newTimesheet.otherChargeCodePicker.table.columns.name",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "type",
                    "displayName": "timeTracking.comp.newTimesheet.otherChargeCodePicker.table.columns.type",
                    "headerCellFilter": "translate"
                }
            ]
        },
        {
            "id": "userSearch",
            "title": "timeTracking.comp.newTimesheet.userSearch.title",
            "enableFiltering": false,
            "configurable": true,
            "multiSelect": false,
            "showFacets": false,
            "columnDefs": [
                {
                    "name": "name",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.name",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "object_type_s",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.type",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "title",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.title",
                    "headerCellFilter": "translate"
                },
                {
                    "name": "object_id_s",
                    "displayName": "timeTracking.comp.newTimesheet.objectPicker.table.columns.username",
                    "headerCellFilter": "translate"
                }
            ],
            "paginationPageSizes": [
                5,
                10,
                20,
                50
            ],
            "paginationPageSize": 10,
            "start": 0
        }
    ]
}