9a9373daab6c5bc510233010f7a7b4faa671ff92.svn-base 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. BemsWebApplication.FacilityTempSet = function (params, viewInfo) {
  2. "use strict";
  3. var endpointSelector = "";
  4. if (BemsWebApplication.config.mode == "production") {
  5. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production;
  6. } else {
  7. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local;
  8. }
  9. var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');
  10. var AIR_HANDLING = $Code.FacilityType.AIR_HANDLING;
  11. var TEMP_SET = $Code.Formula[AIR_HANDLING].TEMP_SET;
  12. var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true),
  13. floorDataSource = BemsWebApplication.db.createDataSource('CmFloor'),
  14. zoneDataSource = BemsWebApplication.db.createDataSource('CmZone');
  15. // 설비분류 데이터소스
  16. var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType');
  17. var facilityTypes = ko.observableArray();
  18. var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
  19. var buildings = ko.observableArray(),
  20. floors = ko.observableArray(),
  21. zones = ko.observableArray();
  22. var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()],
  23. searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()],
  24. searchBuildings = ko.observableArray(),
  25. searchFloors = ko.observableArray(),
  26. searchBuildingId = ko.observable(),
  27. searchFloorId = ko.observable();
  28. var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId'),
  29. defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),
  30. defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId');
  31. var searchDeferred = new $.Deferred();
  32. var handleFirstClassChangedValueInSearchView = function (e) {
  33. if (e.value === 0) {
  34. initializeSearchClasses();
  35. return;
  36. }
  37. BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);
  38. };
  39. var handleSecondClassChangedValueInSearchView = function (e) {
  40. if (e.value === 0) {
  41. initializeSearchClasses(true);
  42. return;
  43. }
  44. BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);
  45. };
  46. var handleBuildingInSearchView = function (e) {
  47. if (e.value === 0) {
  48. searchFloors(defaultSearchFloorArray.slice(0));
  49. searchFloorId(0);
  50. return 0;
  51. }
  52. BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, searchFloors, defaultSearchFloorArray);
  53. }
  54. function initializeSearchClasses(onlyThird) {
  55. if (onlyThird === undefined || onlyThird === false) {
  56. searchFacilityClasses[1](defaultSearchClassArray.slice(0));
  57. searchFacilityClassValues[1](0);
  58. }
  59. searchFacilityClasses[2](defaultSearchClassArray.slice(0));
  60. searchFacilityClassValues[2](0);
  61. }
  62. function setupDropZone(isEditModeInPopup, dataViewModel) {
  63. var timer = null;
  64. isEditModeInPopup.subscribe(function (value) {
  65. if (value) {
  66. if (timer) { clearInterval(timer); }
  67. timer = setInterval(function () {
  68. if ($('#facilityDropZone').length) {
  69. if (_.isNull(dropZone)) {
  70. dropZone = BWA.DropZone.create({
  71. id: '#facilityDropZone',
  72. categoryId: $Code.FileCategory.FACILITY,
  73. uploadedFileInfo: uploadedFileInfo,
  74. handleRemoveBeforePromise: function () {
  75. var keys = BWA.db.extractKeysObject('CmFacility', dataViewModel);
  76. return BWA.db.CmFacility.update(keys, { FileId: null });
  77. },
  78. handleSuccess: function (fileInfo) {
  79. dataViewModel.FileId(fileInfo.FileId);
  80. },
  81. handleRemovedFile: function () {
  82. dataViewModel.FileId(null);
  83. },
  84. });
  85. uploadedFileInfo.SiteId = dataViewModel.SiteId();
  86. uploadedFileInfo.FileId = dataViewModel.FileId();
  87. if (uploadedFileInfo.FileId) {
  88. BWA.db.CmFile.byKey(uploadedFileInfo).done(function (data) {
  89. dropZone.removeAllFiles();
  90. dropZone.emit('addedfile', {
  91. name: data.Name,
  92. size: data.FileSize
  93. });
  94. });
  95. }
  96. }
  97. }
  98. }, 100);
  99. }
  100. else {
  101. if (timer) {
  102. clearInterval(timer);
  103. timer = null;
  104. }
  105. dropZone = null;
  106. }
  107. });
  108. }
  109. var facilityOptions = BemsWebApplication.Factory.Facility;
  110. var viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'CmFacilityTempSet', {
  111. rowUpdated: function (e) {
  112. var PropertyId, controlvalue;
  113. var now = new Date();
  114. var SiteId = e.key.SiteId;
  115. var FacilityCode = e.key.FacilityCode;
  116. var data = e.data;
  117. var data_columns = Object.getOwnPropertyNames(data).toString();
  118. var nowmonth = now.getMonth() + 1;
  119. var nowmonth = "T" + nowmonth;
  120. if (data_columns == nowmonth) {
  121. if (data_columns == "T1") { controlvalue = data.T1; }
  122. else if (data_columns == "T2") { controlvalue = data.T2; }
  123. else if (data_columns == "T3") { controlvalue = data.T3; }
  124. else if (data_columns == "T4") { controlvalue = data.T4; }
  125. else if (data_columns == "T5") { controlvalue = data.T5; }
  126. else if (data_columns == "T6") { controlvalue = data.T6; }
  127. else if (data_columns == "T7") { controlvalue = data.T7; }
  128. else if (data_columns == "T8") { controlvalue = data.T8; }
  129. else if (data_columns == "T9") { controlvalue = data.T9; }
  130. else if (data_columns == "T10") { controlvalue = data.T10; }
  131. else if (data_columns == "T11") { controlvalue = data.T11; }
  132. else { controlvalue = data.T12; }
  133. controlvalue = parseFloat(controlvalue);
  134. var dataSource = new DevExpress.data.DataSource({
  135. store: {
  136. type: "odata",
  137. url: endpointSelector + "/BemsFormulaParameter"
  138. },
  139. requireTotalCount: true,
  140. pageSize: 1
  141. });
  142. dataSource.filter([
  143. ["SiteId", "=", BWA.UserInfo.SiteId()],
  144. "and",
  145. ["FacilityCode", "=", FacilityCode],
  146. "and",
  147. ["FormulaId", "=", TEMP_SET]
  148. ]);
  149. dataSource.load()
  150. .done(function (result) {
  151. if (result.length == 0) {
  152. utils.toast.show("[BemsFormulaParameter] 공조기 온도 설정 데이터가 없습니다.");
  153. } else {
  154. PropertyId = result[0].ParameterPropertyId;
  155. var store = new DevExpress.data.ODataStore({
  156. url: endpointSelector + "/BemsControlPointHistory",
  157. key: ["CreateDateTime", "PropertyId", "FacilityCode", "SiteId"],
  158. keyType: { CreateDateTime: "DateTime", PropertyId: "Int32", FacilityCode: "Int32", SiteId: "Int32" }
  159. });
  160. store.insert({
  161. SiteId: SiteId,
  162. FacilityTypeId: AIR_HANDLING,
  163. FacilityCode: FacilityCode,
  164. PropertyId: PropertyId,
  165. CreateDateTime: now,
  166. ControlValue: controlvalue,
  167. WriteServiceName: null,
  168. ActionDateTime: null
  169. })
  170. }
  171. })
  172. .fail(function (error) {
  173. utils.toast.show(error);
  174. });
  175. }
  176. },
  177. rowAlternationEnabled: true,
  178. editing: {
  179. editMode: 'cell', // 14.1은 batch, row 두가지 밖에 없다. cell->row로 동작중이다. 2015 07 15 hcLee
  180. editEnabled: true,
  181. },
  182. dataSourceOptions: {
  183. select: ['SiteId', 'FacilityCode', 'CmFacility/Name', 'T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],
  184. expand: ['CmFacility'],
  185. extendOptions: {
  186. forceOriginalField: true,
  187. }
  188. },
  189. columns: [
  190. { dataField: 'FacilityCode', caption: $G('number'), width: '4%', alignment: 'center' },
  191. { dataField: 'CmFacility/Name', caption: '공조기명', width: '10%', alignment: 'center', allowEditing: false },
  192. { dataField: 'T1', caption: '1월 설정온도', width: '8%', alignment: 'center' },
  193. { dataField: 'T2', caption: '2월 설정온도', width: '8%', alignment: 'center' },
  194. { dataField: 'T3', caption: '3월 설정온도', width: '8%', alignment: 'center' },
  195. { dataField: 'T4', caption: '4월 설정온도', width: '8%', alignment: 'center' },
  196. { dataField: 'T5', caption: '5월 설정온도', width: '8%', alignment: 'center' },
  197. { dataField: 'T6', caption: '6월 설정온도', width: '8%', alignment: 'center' },
  198. { dataField: 'T7', caption: '7월 설정온도', width: '8%', alignment: 'center' },
  199. { dataField: 'T8', caption: '8월 설정온도', width: '8%', alignment: 'center' },
  200. { dataField: 'T9', caption: '9월 설정온도', width: '8%', alignment: 'center' },
  201. { dataField: 'T10', caption: '10월 설정온도', width: '8%', alignment: 'center' },
  202. { dataField: 'T11', caption: '11월 설정온도', width: '8%', alignment: 'center' },
  203. { dataField: 'T12', caption: '12월 설정온도', width: '8%', alignment: 'center' }
  204. ],
  205. popupWidth: 480,
  206. searchViewItems: [
  207. { id: 'CmFacility/BuildingId', ignoreValue: 0, defaultValue: 0, value: searchBuildingId, dataSource: searchBuildings, handleChangedValue: handleBuildingInSearchView },
  208. { id: 'CmFacility/FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'CmFacility/BuildingId', value: searchFloorId, dataSource: searchFloors },
  209. { id: 'CmFacility/Name' }
  210. ],
  211. promiseDataInSearchView: searchDeferred.promise(),
  212. handleViewShowing: function () {
  213. facilityClassDataSource.filter([
  214. ['SiteId', '=', BWA.UserInfo.SiteId()],
  215. 'and',
  216. ['ParentFacilityClassId', '=', null]
  217. ]);
  218. facilityTypeDataSource.filter([
  219. ['FacilityTypeId', '=', 1]
  220. ]);
  221. // 빌딩 데이터 로드 시점
  222. $.when(facilityClassDataSource.load(),
  223. buildingDataSource.load(),
  224. facilityTypeDataSource.load()
  225. ).done(function (result1, result2, result3) {
  226. buildings(result2[0]);
  227. searchBuildings(defaultSearchBuildingArray.slice(0).concat(result2[0]));
  228. searchFloors(defaultSearchFloorArray.slice(0));
  229. searchDeferred.resolve();
  230. });
  231. },
  232. handleViewShown: function (dataViewModel, isEditModeInPopup) {
  233. setupDropZone(isEditModeInPopup, dataViewModel);
  234. },
  235. handleViewHidden: function () {
  236. $SearchView.visibleObservable(false); // hcLee 2015 03 23
  237. visiblePopup(false);
  238. },
  239. handlePopupShowing: function (that) {
  240. },
  241. });
  242. floorDataSource.filter('BuildingId', -1);
  243. zoneDataSource.filter('FloorId', -1);
  244. viewModel.handleSelectBoxChangeFirstClass = function (e) {
  245. BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[1]);
  246. viewModel.dataModel.SecondClassId(null);
  247. viewModel.dataModel.ThirdClassId(null);
  248. };
  249. viewModel.handleSelectBoxChangeSecondClass = function (e) {
  250. BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClasses[2]);
  251. viewModel.dataModel.ThirdClassId(null);
  252. };
  253. viewModel.handleSelectBoxChangeBuilding = function (e) {
  254. BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floors);
  255. viewModel.dataModel.FloorId(null);
  256. viewModel.dataModel.ZoneId(null);
  257. };
  258. viewModel.handleSelectBoxChangeFloor = function (e) {
  259. BWA.DataUtil.setArrayDataSourceFilter(zoneDataSource, 'FloorId', e.value, zones);
  260. viewModel.dataModel.ZoneId(null);
  261. };
  262. function refreshList() {
  263. }
  264. viewModel.facilityTypes = facilityTypes;
  265. viewModel.dataModel.ClassName = ko.observable();
  266. viewModel.facilityClasses = facilityClasses;
  267. viewModel.searchFacilityClasses = searchFacilityClasses;
  268. viewModel.buildings = buildings;
  269. viewModel.floors = floors;
  270. viewModel.zones = zones;
  271. return viewModel;
  272. };