BemsWebApplication.WorkResult = function(params, viewInfo) { "use strict"; var facilityFactory = BemsWebApplication.Factory.Facility; var workResultFactory = BemsWebApplication.Factory.WorkResult; var workRequestDataModel = $.extend({ 'WorkTypeName': ko.observable(), 'ChargeCompanyName': ko.observable(), 'RequesterCompanyName': ko.observable(), 'BusinessFieldName': ko.observable(), 'FacilityName': ko.observable(), 'ProgressName': ko.observable(), }, new BemsWebApplication.FmsWorkRequestViewModel()), workRequestDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.db.FmsWorkRequest, select: [ 'SiteId', 'RequestId', 'WorkTypeId', 'BusinessFieldId', 'CheckGroupId', 'ScheduleId', 'ProgressId', 'RequesterDepartmentId', 'FacilityCode', 'ChargeCompanyId', 'RequesterUserId', 'RequesterName', 'RequesterCompanyId', 'RequesterPost', 'RequesterMobileNo', 'IsReceiveSms', 'IsSendTeamSms', 'Title', 'Content', 'RequestedDate', 'FmsWorkCodeType/Name', 'CmCompany/Name', 'CmCompany1/Name', 'CmBusinessField/Name', 'CmFacility/Name', 'FmsWorkCodeProgress/Name' ], expand: ['CmBusinessField', 'CmFacility', 'FmsWorkCodeType', 'FmsWorkCodeProgress'], extendOptions: { multipleItems: [ { id: 'CompanyId', entries: ['CmCompany', 'CmCompany1'], fields: ['ChargeCompanyId', 'RequesterCompanyId'] } ], alterNames: { 'CmCompany/ChargeCompanyId/Name': 'ChargeCompanyName', 'CmCompany/RequesterCompanyId/Name': 'RequesterCompanyName', 'CmBusinessField/Name': 'BusinessFieldName', 'CmFacility/Name': 'FacilityName', 'FmsWorkCodeType/Name': 'WorkTypeName', 'FmsWorkCodeProgress/Name': 'ProgressName' } } } }), facilityDataSource = facilityFactory.getDataSourceWithRelation(BemsWebApplication.db.FmsWorkOrderToFacility, { select: ['ProgressId', 'FmsWorkCodeProgress/Name'], expand: ['FmsWorkCodeProgress'] }); var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true), workTypeDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeType', true, true), companyDataSource = BemsWebApplication.db.createDataSource('CmCompany', true, true), progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress', true, true); var deferredForSearch = new $.Deferred(); var workTypesForSearch = ko.observableArray(), businessFieldsForSearch = ko.observableArray(), companiesForSearch = ko.observableArray(), progressesForSearch = ko.observableArray(), targetFacilities = ko.observableArray(); var timer = null, popupElement = null, workContentsPopup = null; //params.shownActionInPopup = function( e ) { // console.log( $(e.element[0]).html() ); // $( e.element ).on( 'transitioned', function( e ) { // console.log( e ); // } ); //} //params.popupPosition = ko.observable( { my: 'center', at: 'center', of: window } ); //params.popupPosition.subscribe( function( value ) { // console.log( value ); //} ); params.popupPosition = { offset: '-200 0' }; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsWorkOrder', { dataSourceOptions: workResultFactory.getDataSourceOptionsWithFilter(params.filter || [ ['FmsWorkRequest/FmsWorkCodeProgress/ProgressId', '<', $Code.WorkProgress.WorkConfirm] ]), columns: workResultFactory.defaultColumns, promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'FmsWorkRequest/WorkTypeId', ignoreValue: 0, defaultValue: 0, dataSource: workTypesForSearch }, { id: 'Title' }, { id: 'OrderedDate', type: 'dateRange', isOnlyDate: true }, { id: 'CmUser/Name' }, { id: 'ChargeCompanyId', ignoreValue: 0, defaultValue: 0, dataSource: companiesForSearch }, { id: 'FmsWorkRequest/CmBusinessField/BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, { id: 'FmsWorkRequest/ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch }, ], handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data.BusinessFieldName); dataModel.ChargeCompanyName = $KoSet(dataModel.ChargeCompanyName, data.CompanyName); dataModel.EmergencyName = $KoSet(dataModel.EmergencyName, data.EmergencyName); //dataModel.WorkTypeName = $KoSet( dataModel.WorkTypeName, data.FmsWorkCodeType_Name ); //dataModel.ChargeCompanyName = $KoSet( dataModel.ChargeCompanyName, data.CmCompany_ChargeCompanyId_Name ); //dataModel.BusinessFieldName = $KoSet( dataModel.BusinessFieldName, data.CmBusinessField_Name ); //dataModel.FacilityName = $KoSet( dataModel.FacilityName, data.CmFacility_Name ); if (_.isUndefined(params.selectedData) === false) { params.selectedData(data); } workRequestDataSource.filter( ['SiteId', '=', data.SiteId()], 'and', ['RequestId', '=', data.RequestId()] ); workRequestDataSource.load().done(function(result) { if (result.length > 0) { BWA.DataUtil.copyViewModel(result[0], workRequestDataModel); } facilityDataSource.filter( ['SiteId', '=', data.SiteId()], 'and', ['OrderId', '=', data.OrderId()] ); refreshFaciliyList(); }).always(function() { popupVisible(true); }); }, handleAfterLoadingModelByKey: function(data, dataViewModel) { }, handleViewShowing: function(dataModel) { $.when( businessFieldDataSource.load(), workTypeDataSource.load(), companyDataSource.load(), progressDataSource.load()) .done(function(businessFieldResult, workTypeResult, companyResult, progressResult) { businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFieldResult[0])); workTypesForSearch($SearchView.createArrayOfSelectBox('WorkTypeId', workTypeResult[0])); companiesForSearch($SearchView.createArrayOfSelectBox('CompanyId', companyResult[0])); progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', progressResult[0])); deferredForSearch.resolve(); }); }, handleViewShown: function() { }, contentReadyActionInPopup: function(e) { params.mainPopupElement(e.element.offsetParent()); }, }); function refreshFaciliyList() { var deferred = new $.Deferred(); facilityDataSource.load().done(function(facilities) { targetFacilities(facilities); deferred.resolve(targetFacilities()); }); return deferred.promise(); } params.mainPopupElement = ko.observable(); viewModel.refreshFaciliyList = refreshFaciliyList; viewModel.toolbarItems = [ { location: 'before', text: '작업관리' }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: viewModel.handlePopupButtonClose } } ]; var tabIndex = ko.observable(0); viewModel.tabsOptions = { dataSource: [ { text: '작업요청' }, { text: '작업지시' }, { text: '대상시설' } ], selectedIndex: tabIndex }; workContentsPopup = BemsWebApplication.Factory.WorkResultContentsPopup.create(viewModel, params); viewModel.multiViewOptions = { dataSource: [ { viewModel: viewModel, dataModel: workRequestDataModel, template: 'workRequest' }, { viewModel: viewModel, dataModel: viewModel.dataModel, template: 'workOrder' }, { viewModel: viewModel, dataGridOptions: { dataSource: targetFacilities, columns: facilityFactory.getColumns([ //{ dataField: 'ClassName', width: '40%' }, { dataField: 'FmsFacilityCodeClass/Name', width: '10%' }, { dataField: 'FmsFacilityCodeClass1/Name', width: '15%' }, { dataField: 'FmsFacilityCodeClass2/Name', width: '15%' }, { dataField: 'Name', width: '40%' }, { dataField: 'FmsWorkCodeProgress_Name', caption: $G('workProgress'), alignment: 'center', width: '20%' } ]), cellPrepared: facilityFactory.cellPrepared, hoverStateEnabled: true, selection: { mode: 'single' }, contentReadyAction: function(e) { workContentsPopup.setFacilityGridViewInstance(e.component); }, rowClick: function(clickRow) { workContentsPopup.setSelectedFacility(clickRow.data); workContentsPopup.visible(false); workContentsPopup.visible(true); }, height: 400 }, template: 'targetFacility' } ], swipeEnabled: true, selectedIndex: tabIndex, height: '520px' }; viewModel.workRequestDataModel = workRequestDataModel; return viewModel; };