BemsWebApplication.CheckGroupManagement = function(params, viewInfo) { "use strict"; var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true); var businessFields = ko.observableArray(), searchBusinessFields = ko.observableArray(); var factory = BemsWebApplication.Factory.CheckGroup; var deferredForSearch = new $.Deferred(); var selectedCheckGroupId; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsFacilityScheduleCheckGroup', { dataSourceOptions: factory.getDataSourceOptions(), columns: factory.defaultColumns, promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: searchBusinessFields }, { id: 'Name' } ], handleViewShowing: function() { businessFieldDataSource.load().done(function(result) { businessFields(result); searchBusinessFields($SearchView.createDefaultArray('BusinessFieldId').slice(0).concat(businessFields())); deferredForSearch.resolve(); }); }, handlePopupShowing: function(that) { }, handlePopupShown: function(that) { var targetFacilityDataGrid = $('#gridTargetFacilityContainer').dxDataGrid('instance'); targetFacilityDataGrid.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['CheckGroupId', '=', selectedCheckGroupId] ]); }, handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data.BusinessFieldName); selectedCheckGroupId = data.CheckGroupId(); popupVisible(true); }, handleSaveButtonInPopup: function() { return BemsWebApplication.api.postWithDataGrid('FmsFacilityScheduleCheckGroupToFacility', 'gridFacilityContainer', { SiteId: BWA.UserInfo.SiteId(), CheckGroupId: selectedCheckGroupId, FacilityCode: null }); //var facilityDataGrid = $( '#gridFacilityContainer' ).dxDataGrid( 'instance' ); //var items = facilityDataGrid.getSelectedRowsData(); //var postData = []; //$.each( items, function( i, item ) { // postData.push( { // SiteId: $KoValue( item.SiteId ), // CheckGroupId: selectedCheckGroupId, // FacilityCode: $KoValue( item.FacilityCode ) // } ); //} ); //BemsWebApplication.api.post( 'FmsFacilityScheduleCheckGroupToFacility', postData ); }, handleInitializeDataModelValue: function(v) { v.WorkTypeId($Code.WorkType.REGULAR_CHECK); } }); var targetFacilityDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.CheckGroupTargetFacility, select: [ 'SiteId', 'CheckGroupId', 'FacilityCode', 'ParentFacilityName', 'FirstClassName', 'SecondClassName', 'ThirdClassName', 'Name', 'Nickname', 'BuildingName', 'FloorName', 'ZoneName', 'ManufactureModel', 'MainContactorUserName', 'SubContactorUserName' ] } }); var facilityDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.Facility, select: [ 'SiteId', 'FacilityCode', 'ParentFacilityName', 'FirstClassName', 'SecondClassName', 'ThirdClassName', 'Name', 'Nickname', 'BuildingName', 'FloorName', 'ZoneName', 'ManufactureModel', 'MainContactorUserName', 'SubContactorUserName' ] } }); var cellPrepared = function(cellElement, cellInfo) { switch (cellInfo.column.dataField) { case 'ClassName': { $(cellElement).text(cellInfo.data.FirstClassName() + '-' + cellInfo.data.SecondClassName() + '-' + cellInfo.data.ThirdClassName()); break; } case 'Name': { $(cellElement).text(cellInfo.data.Name() + ' / ' + cellInfo.data.Nickname()); break; } case 'Location': { $(cellElement).text(cellInfo.data.BuildingName() + ' ' + cellInfo.data.FloorName() + ' ' + cellInfo.data.ZoneName()); break; } } } var dataGridOptions = { dxDataSource: targetFacilityDataSource, columns: [ { dataField: 'ClassName', caption: $G('facilityClassName'), width: '25%', alignment: 'center', allowFiltering: false }, { dataField: 'Name', caption: $G('facilityName'), width: '25%', alignment: 'center' }, { dataField: 'MainContactorUserName', caption: $G('facilityMainContactorUserName'), width: '15%', alignment: 'center', allowFiltering: false }, { dataField: 'SubContactorUserName', caption: $G('facilitySubContactorUserName'), width: '15%', alignment: 'center', allowFiltering: false }, { dataField: 'Location', caption: $G('facilityLocation'), width: '20%', alignment: 'center' } ] }; viewModel.isNewInPopup.subscribe(function(value) { if (value) { var facilityDataGrid = $('#gridFacilityContainer').dxDataGrid('instance'); if (facilityDataGrid !== undefined) facilityDataGrid.clearSelection(); } }); viewModel.isEditModeInPopup.subscribe(function(value) { var facilityDataGrid = $('#gridFacilityContainer').dxDataGrid('instance'); var targetFacilityDataGrid = $('#gridTargetFacilityContainer').dxDataGrid('instance'); if (facilityDataGrid !== undefined && value) { facilityDataGrid.clearSelection(); var items = targetFacilityDataGrid._controllers.data._dataSource._items; var keys = []; $.each(items, function(i, item) { keys.push({ FacilityCode: item.FacilityCode(), SiteId: item.SiteId() }); }); facilityDataGrid.selectRows(keys); } else { } }); viewModel.tabsItems = [ { text: '기본 정보' }, { text: '대상 시설' } ]; viewModel.currentTabIndex = ko.observable(0); var dataModel = viewModel.dataModel; viewModel.multiViewItems = [ { dataModel: dataModel, viewModel: viewModel, template: 'generalInfo' }, { dataModel: dataModel, viewModel: viewModel, facilityDataGridOptions: utils.datagrid.defaultOptions($.extend({}, dataGridOptions, { visible: viewModel.isEditModeInPopup, dxDataSource: facilityDataSource, selection: { mode: 'multiple', allowSelectAll: true }, cellPrepared: BemsWebApplication.Factory.Facility.cellPrepared })), targetFacilityDataGridOptions: utils.datagrid.defaultOptions($.extend({}, dataGridOptions, { visible: viewModel.viewModeInPopup, dxDataSource: targetFacilityDataSource, cellPrepared: BemsWebApplication.Factory.Facility.cellPrepared, contentReadyAction: function(e) { console.log(e.model); } })), template: 'targetFacility' } ]; viewModel.businessFields = businessFields; return viewModel; };