BemsWebApplication.FacilityTempSet = function (params, viewInfo) { "use strict"; var endpointSelector = ""; if (BemsWebApplication.config.mode == "production") { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production; } else { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local; } var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass'); var AIR_HANDLING = $Code.FacilityType.AIR_HANDLING; var TEMP_SET = $Code.Formula[AIR_HANDLING].TEMP_SET; var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true), floorDataSource = BemsWebApplication.db.createDataSource('CmFloor'), zoneDataSource = BemsWebApplication.db.createDataSource('CmZone'); // 설비분류 데이터소스 var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType'); var facilityTypes = ko.observableArray(); var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()]; var buildings = ko.observableArray(), floors = ko.observableArray(), zones = ko.observableArray(); var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()], searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()], searchBuildings = ko.observableArray(), searchFloors = ko.observableArray(), searchBuildingId = ko.observable(), searchFloorId = ko.observable(); var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId'), defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'), defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId'); var searchDeferred = new $.Deferred(); var handleFirstClassChangedValueInSearchView = function (e) { if (e.value === 0) { initializeSearchClasses(); return; } BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray); }; var handleSecondClassChangedValueInSearchView = function (e) { if (e.value === 0) { initializeSearchClasses(true); return; } BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray); }; var handleBuildingInSearchView = function (e) { if (e.value === 0) { searchFloors(defaultSearchFloorArray.slice(0)); searchFloorId(0); return 0; } BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, searchFloors, defaultSearchFloorArray); } function initializeSearchClasses(onlyThird) { if (onlyThird === undefined || onlyThird === false) { searchFacilityClasses[1](defaultSearchClassArray.slice(0)); searchFacilityClassValues[1](0); } searchFacilityClasses[2](defaultSearchClassArray.slice(0)); searchFacilityClassValues[2](0); } function setupDropZone(isEditModeInPopup, dataViewModel) { var timer = null; isEditModeInPopup.subscribe(function (value) { if (value) { if (timer) { clearInterval(timer); } timer = setInterval(function () { if ($('#facilityDropZone').length) { if (_.isNull(dropZone)) { dropZone = BWA.DropZone.create({ id: '#facilityDropZone', categoryId: $Code.FileCategory.FACILITY, uploadedFileInfo: uploadedFileInfo, handleRemoveBeforePromise: function () { var keys = BWA.db.extractKeysObject('CmFacility', dataViewModel); return BWA.db.CmFacility.update(keys, { FileId: null }); }, handleSuccess: function (fileInfo) { dataViewModel.FileId(fileInfo.FileId); }, handleRemovedFile: function () { dataViewModel.FileId(null); }, }); uploadedFileInfo.SiteId = dataViewModel.SiteId(); uploadedFileInfo.FileId = dataViewModel.FileId(); if (uploadedFileInfo.FileId) { BWA.db.CmFile.byKey(uploadedFileInfo).done(function (data) { dropZone.removeAllFiles(); dropZone.emit('addedfile', { name: data.Name, size: data.FileSize }); }); } } } }, 100); } else { if (timer) { clearInterval(timer); timer = null; } dropZone = null; } }); } var facilityOptions = BemsWebApplication.Factory.Facility; var viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'CmFacilityTempSet', { rowUpdated: function (e) { var PropertyId, controlvalue; var now = new Date(); var SiteId = e.key.SiteId; var FacilityCode = e.key.FacilityCode; var data = e.data; var data_columns = Object.getOwnPropertyNames(data).toString(); var nowmonth = now.getMonth() + 1; var nowmonth = "T" + nowmonth; if (data_columns == nowmonth) { if (data_columns == "T1") { controlvalue = data.T1; } else if (data_columns == "T2") { controlvalue = data.T2; } else if (data_columns == "T3") { controlvalue = data.T3; } else if (data_columns == "T4") { controlvalue = data.T4; } else if (data_columns == "T5") { controlvalue = data.T5; } else if (data_columns == "T6") { controlvalue = data.T6; } else if (data_columns == "T7") { controlvalue = data.T7; } else if (data_columns == "T8") { controlvalue = data.T8; } else if (data_columns == "T9") { controlvalue = data.T9; } else if (data_columns == "T10") { controlvalue = data.T10; } else if (data_columns == "T11") { controlvalue = data.T11; } else { controlvalue = data.T12; } controlvalue = parseFloat(controlvalue); var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 1 }); dataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], "and", ["FacilityCode", "=", FacilityCode], "and", ["FormulaId", "=", TEMP_SET] ]); dataSource.load() .done(function (result) { if (result.length == 0) { utils.toast.show("[BemsFormulaParameter] 공조기 온도 설정 데이터가 없습니다."); } else { PropertyId = result[0].ParameterPropertyId; var store = new DevExpress.data.ODataStore({ url: endpointSelector + "/BemsControlPointHistory", key: ["CreateDateTime", "PropertyId", "FacilityCode", "SiteId"], keyType: { CreateDateTime: "DateTime", PropertyId: "Int32", FacilityCode: "Int32", SiteId: "Int32" } }); store.insert({ SiteId: SiteId, FacilityTypeId: AIR_HANDLING, FacilityCode: FacilityCode, PropertyId: PropertyId, CreateDateTime: now, ControlValue: controlvalue, WriteServiceName: null, ActionDateTime: null }) } }) .fail(function (error) { utils.toast.show(error); }); } }, rowAlternationEnabled: true, editing: { editMode: 'cell', // 14.1은 batch, row 두가지 밖에 없다. cell->row로 동작중이다. 2015 07 15 hcLee editEnabled: true, }, dataSourceOptions: { select: ['SiteId', 'FacilityCode', 'CmFacility/Name', 'T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'], expand: ['CmFacility'], extendOptions: { forceOriginalField: true, } }, columns: [ { dataField: 'FacilityCode', caption: $G('number'), width: '4%', alignment: 'center' }, { dataField: 'CmFacility/Name', caption: '공조기명', width: '10%', alignment: 'center', allowEditing: false }, { dataField: 'T1', caption: '1월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T2', caption: '2월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T3', caption: '3월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T4', caption: '4월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T5', caption: '5월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T6', caption: '6월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T7', caption: '7월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T8', caption: '8월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T9', caption: '9월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T10', caption: '10월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T11', caption: '11월 설정온도', width: '8%', alignment: 'center' }, { dataField: 'T12', caption: '12월 설정온도', width: '8%', alignment: 'center' } ], popupWidth: 480, searchViewItems: [ { id: 'CmFacility/BuildingId', ignoreValue: 0, defaultValue: 0, value: searchBuildingId, dataSource: searchBuildings, handleChangedValue: handleBuildingInSearchView }, { id: 'CmFacility/FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'CmFacility/BuildingId', value: searchFloorId, dataSource: searchFloors }, { id: 'CmFacility/Name' } ], promiseDataInSearchView: searchDeferred.promise(), handleViewShowing: function () { facilityClassDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['ParentFacilityClassId', '=', null] ]); facilityTypeDataSource.filter([ ['FacilityTypeId', '=', 1] ]); // 빌딩 데이터 로드 시점 $.when(facilityClassDataSource.load(), buildingDataSource.load(), facilityTypeDataSource.load() ).done(function (result1, result2, result3) { buildings(result2[0]); searchBuildings(defaultSearchBuildingArray.slice(0).concat(result2[0])); searchFloors(defaultSearchFloorArray.slice(0)); searchDeferred.resolve(); }); }, handleViewShown: function (dataViewModel, isEditModeInPopup) { setupDropZone(isEditModeInPopup, dataViewModel); }, handleViewHidden: function () { $SearchView.visibleObservable(false); // hcLee 2015 03 23 visiblePopup(false); }, handlePopupShowing: function (that) { }, }); floorDataSource.filter('BuildingId', -1); zoneDataSource.filter('FloorId', -1); viewModel.handleSelectBoxChangeFirstClass = function (e) { BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[1]); viewModel.dataModel.SecondClassId(null); viewModel.dataModel.ThirdClassId(null); }; viewModel.handleSelectBoxChangeSecondClass = function (e) { BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[2]); viewModel.dataModel.ThirdClassId(null); }; viewModel.handleSelectBoxChangeBuilding = function (e) { BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floors); viewModel.dataModel.FloorId(null); viewModel.dataModel.ZoneId(null); }; viewModel.handleSelectBoxChangeFloor = function (e) { BWA.DataUtil.setArrayDataSourceFilter(zoneDataSource, 'FloorId', e.value, zones); viewModel.dataModel.ZoneId(null); }; function refreshList() { } viewModel.facilityTypes = facilityTypes; viewModel.dataModel.ClassName = ko.observable(); viewModel.facilityClasses = facilityClasses; viewModel.searchFacilityClasses = searchFacilityClasses; viewModel.buildings = buildings; viewModel.floors = floors; viewModel.zones = zones; return viewModel; };