BemsWebApplication.WorkRequest = function(params, viewInfo) { "use strict"; 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), businessFields = ko.observableArray(), workTypes = ko.observableArray(), companies = ko.observableArray(), progresses = ko.observableArray(); var deferredForSearch = new $.Deferred(); var workTypesForSearch = ko.observableArray(), companiesForSearch = ko.observableArray(), businessFieldsForSearch = ko.observableArray(), progressesForSearch = ko.observableArray(); var selectedFacilityData = ko.observable(), selectedUserData = params.selectedUserData || ko.observable(); var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsWorkRequest', { dataSourceOptions: { select: ['SiteId', 'RequestId', 'FmsWorkCodeType/Name', 'CmBusinessField/Name', 'CmCompany/Name', 'CmCompany1/Name', 'Title', 'RequesterName', 'RequestedDate', 'FmsWorkCodeProgress/Name', 'CmFacility/Name'], expand: ['FmsWorkCodeType', 'CmBusinessField', 'FmsWorkCodeProgress', 'CmFacility'], extendOptions: { multipleItems: [{ id: 'CompanyId', entries: ['CmCompany', 'CmCompany1'], fields: ['ChargeCompanyId', 'RequesterCompanyId'] }] } }, columns: [ { dataField: 'Number', caption: $G('number'), width: '10%', alignment: 'center' }, { dataField: 'FmsWorkCodeType_Name', caption: $G('workTypeName'), width: '15%', alignment: 'center' }, { dataField: 'CmBusinessField_Name', caption: $G('businessFieldName'), width: '12%', alignment: 'center' }, { dataField: 'Title', caption: $G('requestTitle'), width: '25%', alignment: 'center' }, { dataField: 'RequesterName', caption: $G('requesterName'), width: '13%', alignment: 'center' }, { dataField: 'RequestedDate', caption: $G('requestedDate'), width: '13%', alignment: 'center' }, { dataField: 'FmsWorkCodeProgress_Name', caption: $G('workProgressName'), width: '12%', alignment: 'center' } ], promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'WorkTypeId', ignoreValue: 0, defaultValue: 0, dataSource: workTypesForSearch }, { id: 'RequesterName' }, { id: 'RequesterPost' }, { id: 'Title' }, { id: 'ChargeCompanyId', ignoreValue: 0, defaultValue: 0, dataSource: companiesForSearch }, { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, { id: 'ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch }, { id: 'RequestedDate', type: 'dateRange', isOnlyDate: true} ], handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data.CmBusinessField_Name); 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); popupVisible(true); }, handleAfterLoadingModelByKey: function(data, dataViewModel) { if (typeof viewInfo.handleAfterLoadingModelByKey === 'function') { viewInfo.handleAfterLoadingModelByKey(data, dataViewModel); } }, beforeInsertingDataViewModel: function(dataModel) { dataModel.ProgressId($Code.WorkProgress.Request); dataModel.RequestedDate(moment().toDate()); // hcLee 2015 11 30 return true; }, handleViewShowing: function(dataModel) { $.when( businessFieldDataSource.load(), workTypeDataSource.load(), companyDataSource.load(), progressDataSource.load()) .done(function(businessFieldResult, workTypeResult, companyResult, progressResult) { businessFields(businessFieldResult[0]); workTypes(workTypeResult[0]); companies(companyResult[0]); progresses(progressResult[0]); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFields())); workTypesForSearch($SearchView.createArrayOfSelectBox('WorkTypeId', workTypes())); companiesForSearch($SearchView.createArrayOfSelectBox('CompanyId', companies())); progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', progresses())); deferredForSearch.resolve(); }); dataModel.FacilityName = $KoSet(dataModel.FacilityName); if (typeof viewInfo.handleViewShowing === 'function') { viewInfo.handleViewShowing(); } }, handleViewShown: function() { } }); viewModel.facilitySearchPopup = BWA.Popup.Facility.create(viewModel, selectedFacilityData); viewModel.handleButtonSearchFacility = function() { viewModel.facilitySearchPopup.show(); }; viewModel.userSearchPopup = $UserSearchPopup(viewModel, params.selectedUserData || selectedUserData); viewModel.handleButtonSearchUser = function() { viewModel.userSearchPopup.show(); }; selectedFacilityData.subscribe(function(value) { viewModel.dataModel.FacilityCode(value.FacilityCode); viewModel.dataModel.FacilityName(value.Name); }); if (selectedUserData) { selectedUserData.subscribe(function(value) { viewModel.dataModel.RequesterUserId(value.UserId); viewModel.dataModel.RequesterName(value.Name); viewModel.dataModel.RequesterCompanyId(value.CompanyId); viewModel.dataModel.RequesterDepartmentId(value.DepartmentId); viewModel.dataModel.RequesterPost('{0} / {1}'.formati(value.CompanyName, value.DepartmentName)); }); } viewModel.businessFields = businessFields; viewModel.workTypes = workTypes; viewModel.companies = companies; viewModel.progresses = progresses; var tabIndex = ko.observable(0); // viewModel.currentTabIndex = currentTabIndex; viewModel.tabsOptionsInWorkRequestPopup = { dataSource: [ { text: '작업요청' }, { text: '작업지시' }, { text: '대상시설' } ], selectedIndex: tabIndex, visible: params.workOrderVisible || false }; viewModel.multiViewOptionsInWorkRequestPopup = { dataSource: [ { viewModel: viewModel, dataModel: viewModel.dataModel, template: 'workRequest' }, { viewModel: viewModel, dataModel: params.workOrderDataModel || {}, template: 'workOrder' }, { viewModel: viewModel, dataGridOptions: params.facilityDataGridOptions || {}, template: 'targetFacility' } ], swipeEnabled: true, selectedIndex: tabIndex, height: '600px' }; viewModel.workOrderVisible = params.workOrderVisible || false; return viewModel; };