export class ExceptionViewController extends BaseViewController { constructor( options = {} ) { _.defaults( options, { el: '#exception_view_container', status_array: null, } ); super( options ); } init( options ) { //this._super('initialize', options ); this.edit_view_tpl = 'ExceptionEditView.html'; this.permission_id = 'punch'; this.viewId = 'Exception'; this.script_name = 'ExceptionView'; this.context_menu_name = $.i18n._( 'Exceptions' ); this.navigation_label = $.i18n._( 'Exception' ); this.api = TTAPI.APIException; this.initPermission(); this.render(); this.buildContextMenu(); this.initData(); } onCustomContextClick( id ) { switch ( id ) { case 'edit_employee': case 'edit_pay_period': case 'edit_pay_period_schedule': case 'schedule': case 'timesheet': case 'send_message': this.onNavigationClick( id ); break; } } setCustomDefaultMenuIcon( id, context_btn, grid_selected_length ) { switch ( id ) { case 'timesheet': this.setDefaultMenuViewIcon( context_btn, grid_selected_length, 'punch' ); break; case 'schedule': this.setDefaultMenuViewIcon( context_btn, grid_selected_length, 'schedule' ); break; case 'edit_employee': this.setDefaultMenuEditEmployeeIcon( context_btn, grid_selected_length ); break; case 'edit_pay_period_schedule': this.setDefaultMenuEditIcon( context_btn, grid_selected_length, 'pay_period_schedule' ); break; case 'edit_pay_period': this.setDefaultMenuEditIcon( context_btn, grid_selected_length, 'pay_period_schedule' ); break; case 'send_message': this.setDefaultMenuSendMessageIcon( context_btn, grid_selected_length ); break; } } initPermission() { super.initPermission(); if ( PermissionManager.validate( this.permission_id, 'view' ) || PermissionManager.validate( this.permission_id, 'view_child' ) ) { this.show_search_tab = true; } else { this.show_search_tab = false; } } autoOpenEditViewIfNecessary() { //Auto open edit view. Should set in IndexController //Don't have any edit view //Error: Uncaught TypeError: undefined is not a function in /interface/html5/views/BaseViewController.js?v=7.4.3-20140924-084605 line 2751 this.autoOpenEditOnlyViewIfNecessary(); } setDefaultMenuEditEmployeeIcon( context_btn, grid_selected_length ) { if ( !this.editChildPermissionValidate( 'user' ) ) { ContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false ) } if ( grid_selected_length === 1 ) { ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true ); } else { ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false ); } } setDefaultMenuSendMessageIcon( context_btn, grid_selected_length, pId ) { if ( grid_selected_length > 0 ) { ContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true ); ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true ); } else { ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false ); } } onNavigationClick( iconName ) { var select_item = this.getSelectedItem(); //There are cases where select_item might be null. The export button for example. if ( select_item != null ) { var user_id = select_item.user_id; } switch ( iconName ) { case 'edit_employee': IndexViewController.openEditView( this, 'Employee', user_id ); break; case 'edit_pay_period': var pay_period_id = select_item.pay_period_id; if ( pay_period_id ) { IndexViewController.openEditView( this, 'PayPeriods', pay_period_id ); } break; case 'edit_pay_period_schedule': var pay_period_schedule_id = select_item.pay_period_schedule_id; if ( pay_period_schedule_id ) { IndexViewController.openEditView( this, 'PayPeriodSchedule', pay_period_id ); } break; case 'schedule': var filter = { filter_data: {} }; var include_users = { value: [user_id] }; filter.filter_data.include_user_ids = include_users; filter.select_date = select_item.date_stamp; Global.addViewTab( this.viewId, $.i18n._( 'Exception' ), window.location.href ); IndexViewController.goToView( 'Schedule', filter ); break; case 'timesheet': filter = { filter_data: {} }; filter.user_id = user_id; filter.base_date = select_item.date_stamp; Global.addViewTab( this.viewId, $.i18n._( 'Exception' ), window.location.href ); IndexViewController.goToView( 'TimeSheet', filter ); break; case 'send_message': LocalCacheData.default_filter_for_next_open_view = { to_user_id: _.uniq( this.getSelectedItems().map( exception => exception.user_id ) ) }; IndexViewController.openEditView( this, 'MessageControl', null, 'onAddClick' ); break; } } initOptions() { var $this = this; var options = [ { option_name: 'status', field_name: 'user_status_id', api: TTAPI.APIUser }, { option_name: 'severity', api: TTAPI.APIExceptionPolicy }, { option_name: 'type', field_name: 'exception_policy_type_id', api: TTAPI.APIExceptionPolicy }, ]; this.initDropDownOptions( options ); var user_group_api = TTAPI.APIUserGroup; user_group_api.getUserGroup( '', false, false, { onResult: function( res ) { res = res.getResult(); res = Global.buildTreeRecord( res ); if ( !$this.sub_view_mode && $this.basic_search_field_ui_dic['group_id'] ) { $this.basic_search_field_ui_dic['group_id'].setSourceData( res ); $this.adv_search_field_ui_dic['group_id'].setSourceData( res ); } } } ); } getCustomContextMenuModel() { var context_menu_model = { exclude: ['default'], include: [ { label: $.i18n._( 'Send Message' ), id: 'send_message', menu_align: 'right', vue_icon: 'tticon tticon-send_black_24dp', }, { label: $.i18n._( 'Jump To' ), id: 'jump_to_header', menu_align: 'right', action_group: 'jump_to', action_group_header: true, permission_result: false // to hide it in legacy context menu and avoid errors in legacy parsers. }, { label: $.i18n._( 'TimeSheet' ), id: 'timesheet', menu_align: 'right', action_group: 'jump_to', group: 'navigation', }, { label: $.i18n._( 'Schedules' ), id: 'schedule', menu_align: 'right', action_group: 'jump_to', group: 'navigation', }, { label: $.i18n._( 'Edit Employee' ), id: 'edit_employee', menu_align: 'right', action_group: 'jump_to', group: 'navigation', }, { label: $.i18n._( 'Edit Pay Period' ), id: 'edit_pay_period', menu_align: 'right', action_group: 'jump_to', group: 'navigation', }, { label: $.i18n._( 'Edit PP Schedule' ), id: 'edit_pay_period_schedule', menu_align: 'right', action_group: 'jump_to', group: 'navigation', }, { label: $.i18n._( 'Export' ), id: 'export_excel', group: 'other', vue_icon: 'tticon tticon-file_upload_black_24dp', sort_order: 9000 } ] }; return context_menu_model; } getSearchPanelFilter( getFromTabIndex, save_temp_filter ) { if ( Global.isSet( getFromTabIndex ) ) { var search_tab_select_index = getFromTabIndex; } else { search_tab_select_index = this.search_panel.getSelectTabIndex(); } // var basic_fields_len = this.search_fields.length; var target_ui_dic = null; if ( search_tab_select_index === 0 ) { this.filter_data = []; target_ui_dic = this.basic_search_field_ui_dic; } else if ( search_tab_select_index === 1 ) { this.filter_data = []; target_ui_dic = this.adv_search_field_ui_dic; } else { return; } var $this = this; $.each( target_ui_dic, function( key, content ) { $this.filter_data[key] = { field: key, id: '', value: target_ui_dic[key].getValue( true ) }; if ( key === 'show_pre_mature' && $this.filter_data[key].value !== true ) { delete $this.filter_data[key]; return false; } if ( $this.temp_basic_filter_data ) { $this.temp_basic_filter_data[key] = $this.filter_data[key]; } if ( $this.temp_adv_filter_data ) { $this.temp_adv_filter_data[key] = $this.filter_data[key]; } } ); if ( save_temp_filter ) { if ( search_tab_select_index === 0 ) { $this.temp_basic_filter_data = Global.clone( $this.filter_data ); } else if ( search_tab_select_index === 1 ) { $this.temp_adv_filter_data = Global.clone( $this.filter_data ); } } } onGridDblClickRow() { var context_menu_array = ContextMenuManager.getMenuModelByMenuId( this.determineContextMenuMountAttributes().id ); var len = context_menu_array.length; var need_break = false; for ( var i = 0; i < len; i++ ) { if ( need_break ) { break; } let context_btn = context_menu_array[i]; let id = context_menu_array[i].id; switch ( id ) { case 'timesheet': if ( context_btn.visible && !context_btn.disabled ) { this.onNavigationClick( 'timesheet' ); return; } break; } } for ( var i = 0; i < len; i++ ) { if ( need_break ) { break; } let context_btn = context_menu_array[i]; let id = context_menu_array[i].id; switch ( id ) { case 'schedule': need_break = true; if ( context_btn.visible && !context_btn.disabled ) { this.onNavigationClick( 'schedule' ); return; } break; } } } buildSearchFields() { super.buildSearchFields(); this.search_fields = [ new SearchField( { label: $.i18n._( 'Employee Status' ), in_column: 1, field: 'user_status_id', multiple: true, basic_search: true, adv_search: true, layout_name: 'global_option_column', form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Pay Period' ), in_column: 1, field: 'pay_period_id', layout_name: 'global_Pay_period', api_class: TTAPI.APIPayPeriod, multiple: true, basic_search: true, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Employee' ), in_column: 1, field: 'user_id', layout_name: 'global_user', api_class: TTAPI.APIUser, multiple: true, basic_search: true, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Severity' ), in_column: 1, field: 'severity_id', multiple: true, adv_search: true, basic_search: false, layout_name: 'global_option_column', form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Exception' ), in_column: 1, field: 'exception_policy_type_id', multiple: true, adv_search: true, basic_search: false, layout_name: 'global_option_column', form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Group' ), in_column: 2, multiple: true, field: 'group_id', layout_name: 'global_tree_column', tree_mode: true, basic_search: true, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Default Branch' ), in_column: 2, field: 'default_branch_id', layout_name: 'global_branch', api_class: TTAPI.APIBranch, multiple: true, basic_search: true, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Default Department' ), field: 'default_department_id', in_column: 2, layout_name: 'global_department', api_class: TTAPI.APIDepartment, multiple: true, basic_search: true, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Branch' ), in_column: 2, field: 'branch_id', layout_name: 'global_branch', api_class: TTAPI.APIBranch, multiple: true, basic_search: false, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Department' ), field: 'department_id', in_column: 2, layout_name: 'global_department', api_class: TTAPI.APIDepartment, multiple: true, basic_search: false, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Title' ), in_column: 3, field: 'title_id', layout_name: 'global_job_title', api_class: TTAPI.APIUserTitle, multiple: true, basic_search: false, adv_search: true, form_item_type: FormItemType.AWESOME_BOX } ), new SearchField( { label: $.i18n._( 'Show Pre-Mature' ), in_column: 3, field: 'show_pre_mature', basic_search: false, adv_search: true, form_item_type: FormItemType.CHECKBOX } ) ]; } getFilterColumnsFromDisplayColumns() { var column_filter = {}; column_filter.exception_color = true; column_filter.exception_background_color = true; column_filter.user_id = true; column_filter.pay_period_id = true; column_filter.pay_period_schedule_id = true; return this._getFilterColumnsFromDisplayColumns( column_filter, true ); } setGridCellBackGround() { var data = this.grid.getGridParam( 'data' ); //Error: TypeError: data is undefined in /interface/html5/framework/jquery.min.js?v=7.4.6-20141027-074127 line 2 > eval line 70 if ( !data ) { return; } var len = data.length; for ( var i = 0; i < len; i++ ) { var item = data[i]; if ( item.exception_background_color ) { var severity = $( 'tr[id=\'' + item.id + '\']' ).find( 'td[aria-describedby="' + this.ui_id + '_grid_severity"]' ); severity.css( 'background-color', item.exception_background_color ); severity.css( 'font-weight', 'bold' ); } if ( item.exception_color ) { var code = $( 'tr[id=\'' + item.id + '\']' ).find( 'td[aria-describedby="' + this.ui_id + '_grid_exception_policy_type_id"]' ); code.css( 'color', item.exception_color ); code.css( 'font-weight', 'bold' ); } } } } ExceptionViewController.loadView = function() { Global.loadViewSource( 'Exception', 'ExceptionView.html', function( result ) { var args = {}; var template = _.template( result ); Global.contentContainer().html( template( args ) ); } ); };