BemsWebApplication.Zone = function (params, viewInfo) { "use strict"; var ZoneInfo = ko.observableArray(); var CmZoneDataSource = BemsWebApplication.db.createDataSource('CmZone'); var RowBuildingId; var RowName, RowFloorId; var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true), floorDataSource = BemsWebApplication.db.createDataSource('CmFloor', true); var buildings = ko.observableArray(), floors = ko.observableArray(); var buildingsForSearch = ko.observableArray(), floorsForSearch = ko.observableArray(), buildingIdForSerach = ko.observable(), floorIdForSerach = ko.observable(), defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'), defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId'); var deferredForSearch = new $.Deferred(); function handleBuildingInSearchView(e) { if (e.value === 0) { floorsForSearch(getDefaultFloorForSearch()); } else { BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch()); } floorIdForSerach(0); } var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmZone', { rowAlternationEnabled: true, /* editing: { editMode: 'batch', editEnabled: true, //removeEnabled: true, //insertEnabled: true },*/ dataSourceOptions: { select: ['SiteId', 'FloorId', 'BuildingId', 'ZoneId', 'Name', 'CmBuilding/Name', 'CmFloor/Name', 'Target_temperature', 'Target_humidity'], expand: ['CmBuilding', 'CmFloor'], extendOptions: { forceOriginalField: true, } }, columns: [ { dataField: 'ZoneId', caption: $G('number'), width: '15%', alignment: 'center', sortOrder: 'desc' }, /* { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '22%', alignment: 'center', allowEditing: false }, { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '23%', alignment: 'center', allowEditing: false }, { dataField: 'Name', caption: $G('zoneName'), width: '40%', alignment: 'center', allowEditing: false }, */ { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '22%', alignment: 'center' }, { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '23%', alignment: 'center' }, { dataField: 'Name', caption: $G('zoneName'), width: '40%', alignment: 'center' }, //{ dataField: 'Target_temperature', caption: '목표온도', width: '40%', alignment: 'center' }, //{ dataField: 'Target_humidity', caption: '목표습도', width: '40%', alignment: 'center' } //utils.datagrid.columnIsUse( '15%' ) ], // 2019.04.17 엑셀 출력 기능 추가 ~~~ "export": { enabled: true, fileName: '구역 정보 목록' }, onExporting: function (e) { e.component.columnOption("ZoneId", "visible", false); }, onExported: function (e) { e.component.columnOption("ZoneId", "visible", true); }, // ~~~ 2019.04.17 엑셀 출력 기능 추가 popupWidth: 480, promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: buildingIdForSerach, dataSource: buildingsForSearch, handleChangedValue: handleBuildingInSearchView }, { id: 'FloorId', ignoreValue: 0, defaultValue: 0, value: floorIdForSerach, dataSource: floorsForSearch }, //withCheckId: 'BuildingId', { id: 'Name' } ], handleViewShowing: function () { buildingDataSource.load().done(function (buildingResults) { $("#gridContainer").dxDataGrid({ paging: { pageSize: 18 } }); buildings(buildingResults); //buildingsForSearch( $SearchView.createArrayOfSelectBox( 'BuildingId', buildings() ) ); //floorsForSearch( getDefaultFloorForSearch() ); buildingsForSearch(defaultSearchBuildingArray.slice(0).concat(buildingResults)); floorsForSearch(defaultSearchFloorArray.slice(0)); buildingIdForSerach(0); floorIdForSerach(0); deferredForSearch.resolve(); }); }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); // hcLee 2016 02 16 키필드가 콤보로 제공될때 등록시만 보이고 수정시에는 안보기에 하기 위하여 꼭 필요 !!! viewModel.isNewInPopup(false); //$("#textBuildingName").show(); var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.BuildingName = $KoSet(dataModel.BuildingName, data['CmBuilding/Name']); dataModel.FloorName = $KoSet(dataModel.FloorName, data['CmFloor/Name']); RowBuildingId = data.BuildingId; RowFloorId = data.FloorId; RowName = data.Name; //alert(dataModel.BuildingName()); popupVisible(true); }, handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) { if (isNewInPopup() == false) { BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors); } }, viewHidden: function () { $SearchView.visibleObservable(false); // hcLee 2015 03 23 visiblePopup(false); }, handleBeforeDelete: function (db) { //alert('handleAfterDelete ' + db.SiteId + db.BuildingId + db.FloorId + db.ZoneId); var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel'](); dataViewModel.SiteId = db.SiteId; dataViewModel.BuildingId = db.BuildingId; dataViewModel.FloorId = db.FloorId; dataViewModel.ZoneId = db.ZoneId; var promise = BemsWebApplication.api.post('BemsMonitoringPoint/RemoveZoneTempHumiSet', dataViewModel); promise.done(function () { }); }, // 이름 중복 방지 handlePopupShowing: function () { CmZoneDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); CmZoneDataSource.load().done(function (result) { ZoneInfo(result); }); }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { var dfd = $.Deferred(); var isDuplicated = false; for (var i = 0; i < ZoneInfo().length; i++) { if (dataModel.BuildingId() == ZoneInfo()[i].BuildingId() && dataModel.FloorId() == ZoneInfo()[i].FloorId() && dataModel.Name() == ZoneInfo()[i].Name()) { isDuplicated = true; break; } } if (!BWA.DataUtil.isValidInputValue(dataModel.BuildingId()) || !BWA.DataUtil.isValidInputValue(dataModel.FloorId()) || !BWA.DataUtil.isValidInputValue(dataModel.Name())) return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)'); else { if (isDuplicated) return dfd.resolve(false, '이미 동일 정보가 존재합니다.'); else return dfd.resolve(true); } }, beforeUpdateDataViewModel: function () { var isDuplicated = false; for (var i = 0; i < ZoneInfo().length; i++) { if (viewModel.dataModel.Name() == ZoneInfo()[i].Name() && RowName() != ZoneInfo()[i].Name() && viewModel.dataModel.BuildingId() == ZoneInfo()[i].BuildingId() && viewModel.dataModel.FloorId() == ZoneInfo()[i].FloorId()) { isDuplicated = true; break; } } if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name()) || !BWA.DataUtil.isValidInputValue(viewModel.dataModel.FloorId()) || !BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('이미 동일 명칭이 존재합니다.', 'error'); return 0; } else return 2; } }, handleAfterInsert: function (db) { //alert('handleAfterInsert' + db.SiteId + db.BuildingId + db.FloorId + db.ZoneId); //var data = new CmZoneTempHumiSet(); var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel'](); dataViewModel.SiteId = db.SiteId; dataViewModel.BuildingId = db.BuildingId; dataViewModel.FloorId = db.FloorId; dataViewModel.ZoneId = db.ZoneId; /* dataViewModel.T1 = 0; dataViewModel.T2 = 0; dataViewModel.T3 = 0; dataViewModel.T4 = 0; dataViewModel.T5 = 0; dataViewModel.T6 = 0; dataViewModel.T7 = 0; dataViewModel.T8 = 0; dataViewModel.T9 = 0; dataViewModel.T10 = 0; dataViewModel.T11 = 0; dataViewModel.T12 = 0; dataViewModel.H1 = 0; dataViewModel.H2 = 0; dataViewModel.H3 = 0; dataViewModel.H4 = 0; dataViewModel.H5 = 0; dataViewModel.H6 = 0; dataViewModel.H7 = 0; dataViewModel.H8 = 0; dataViewModel.H9 = 0; dataViewModel.H10 = 0; dataViewModel.H11 = 0; dataViewModel.H12 = 0;*/ //r promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumi', dataViewModel.toJS()); var promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumiSet', dataViewModel); promise.done(function () { ; }); }, }); function getDefaultFloorForSearch() { return $SearchView.createDefaultArray('FloorId'); } floorDataSource.filter('BuildingId', -1); //viewModel.dataModel.ClassName = ko.observable(); viewModel.dataModel.BuildingName = ko.observable(); viewModel.dataModel.FloorName = ko.observable(); viewModel.buildings = buildings; //viewModel.buildingsForSearch = buildingsForSearch; viewModel.floors = floors; //viewModel.floorsForSearch = floorsForSearch; viewModel.handleSelectBoxChangeBuilding = function (e) { //BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floors ); if (viewModel.dataModel.BuildingId() != null) { floorDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], "and", ['BuildingId', '=', viewModel.dataModel.BuildingId()] ]); } floorDataSource.load().done(function (result) { floors(result); }); viewModel.dataModel.FloorId(null); } viewModel.searchViewPopup = BWA.Popup.SearchView.create({ parentPopupId: 'popupDetail', parentPopupVisible: viewModel.popupVisible, handleSearch: function (filter, searchItems) { } }); /* viewModel.popupInsertButtonOptions.action = function () { alert('insett'); }*/ return viewModel; };