BemsWebApplication.LegalCheckGroupManagement = function(params, viewInfo) { "use strict"; var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true); var corporationDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeCorporation', true, true); var businessFields = ko.observableArray(); var corporations = ko.observableArray(); var searchBusinessFields = ko.observableArray(); var selectedSeniorData = ko.observable(); var deferredForSearch = new $.Deferred(); var factory = BemsWebApplication.Factory.LegalCheckGroup; var selectedCheckGroupId; function formatSenior(seniorItemName, seniorItemPeopleCount, seniorUserName) { return '{0} / {1}({2})'.formati(seniorItemName, seniorUserName, seniorItemPeopleCount); } var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsFacilityScheduleCheckGroup', { dataSourceOptions: factory.getDataSourceOptions(), columns: factory.defaultColumns, cellPrepared: factory.cellPrepared, promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: searchBusinessFields }, { id: 'Name' } ], handleViewShowing: function(dataViewModel) { businessFieldDataSource.load().done(function(result) { businessFields(result); searchBusinessFields($SearchView.createDefaultArray('BusinessFieldId').slice(0).concat(businessFields())); deferredForSearch.resolve(); }); dataViewModel.Senior = $KoSet(dataViewModel.Senior); }, handlePopupShowing: function() { corporationDataSource.load().done(function(result) { corporations(result); }); //targetFacilityDataSource.load().done( function( result ) { // var targetFacilityDataGrid = $( '#gridTargetFacilityContainer' ).dxDataGrid( 'instance' ); // targetFacilityDataGrid.refresh(); //}); }, handlePopupShown: function() { var targetFacilityDataGrid = $('#gridTargetFacilityContainer').dxDataGrid('instance'); targetFacilityDataGrid.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['CheckGroupId', '=', selectedCheckGroupId] ]); // targetFacilityDataGrid.refresh(); }, handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dm = viewModel.dataModel; dm.BusinessFieldName = $KoSet(dm.BusinessFieldName, data.BusinessFieldName); dm.CorporationName = $KoSet(dm.CorporationName, data.CorporationName); dm.Senior = $KoSet(dm.Senior, formatSenior(data.SeniorItemName(), data.SeniorItemPeopleCount(), data.SeniorUserName()) ); //var targetFacilityDataGrid = $( '#gridTargetFacilityContainer' ).dxDataGrid( 'instance' ); //targetFacilityDataGrid.filter( [ // [ 'SiteId', '=', BWA.UserInfo.SiteId() ], // 'and', // [ 'CheckGroupId', '=', data.CheckGroupId() ] //] ); selectedCheckGroupId = data.CheckGroupId(); popupVisible(true); }, handleSaveButtonInPopup: function(isInsert) { return BemsWebApplication.api.postWithDataGrid('FmsFacilityScheduleCheckGroupToFacility', 'gridFacilityContainer', { SiteId: BWA.UserInfo.SiteId(), CheckGroupId: selectedCheckGroupId, FacilityCode: null }); }, handleInitializeDataModelValue: function(v) { v.WorkTypeId($Code.WorkCodeType.LegalCheckGroup); } }); var facilityFactory = BemsWebApplication.Factory.Facility; var targetFacilityDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.CheckGroupTargetFacility, select: facilityFactory.selectItemsInDataSource } }); var facilityDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: facilityFactory.getDataSourceForRefDataGrid() }, 'CmFacility'); var cellPrepared = facilityFactory.cellPrepared; var dataGridOptions = { dxDataSource: targetFacilityDataSource, columns: facilityFactory.getColumns([ /* { dataField: 'ClassName', width: '35%' }, { dataField: 'Name', width: '30%' }, { dataField: 'Location', width: '30%' } */ /* { dataField: 'FirstClassName', caption: '대분류', width: '7%', alignment: 'center', allowFiltering: false }, { dataField: 'SecondClassName', caption: '중분류', width: '10%', alignment: 'center', allowFiltering: false }, { dataField: 'ThirdClassName', caption: '소분류', width: '10%', alignment: 'center', allowFiltering: false }, { dataField: 'Name', width: '30%' }, { dataField: 'FloorName', caption: $G('facilityLocation'), width: '20%', alignment: 'center' } */ ]), height: 400, }; viewModel.isNewInPopup.subscribe(function(value) { if (value) { var facilityDataGrid = $('#gridFacilityContainer').dxDataGrid('instance'); if (_.isUndefined(facilityDataGrid) === false) 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: cellPrepared })), targetFacilityDataGridOptions: utils.datagrid.defaultOptions($.extend({}, dataGridOptions, { visible: viewModel.isViewModeInPopup, dxDataSource: targetFacilityDataSource, cellPrepared: cellPrepared, contentReadyAction: function(e) { //console.log(e.model); } })), template: 'targetFacility' } ]; selectedSeniorData.subscribe(function(value) { if (_.isEmpty(value)) return; viewModel.dataModel.SeniorId(value.SeniorId); viewModel.dataModel.Senior(formatSenior(value.SeniorItemName, value.SeniorItemPeopleCount, value.SeniorItemUserName)); }); viewModel.businessFields = businessFields; viewModel.corporations = corporations; viewModel.seniorSearchPopup = $SeniorSearchPopup(viewModel, selectedSeniorData); viewModel.handleButtonSearchSenior = function() { viewModel.seniorSearchPopup.show(); }; return viewModel; };