a65cc428f59514bb6960dfd03c1227ed70983dc7.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. BemsWebApplication.Zone = function (params, viewInfo) {
  2. "use strict";
  3. var ZoneInfo = ko.observableArray();
  4. var CmZoneDataSource = BemsWebApplication.db.createDataSource('CmZone');
  5. var RowBuildingId;
  6. var RowName, RowFloorId;
  7. var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true),
  8. floorDataSource = BemsWebApplication.db.createDataSource('CmFloor', true);
  9. var buildings = ko.observableArray(),
  10. floors = ko.observableArray();
  11. var buildingsForSearch = ko.observableArray(),
  12. floorsForSearch = ko.observableArray(),
  13. buildingIdForSerach = ko.observable(),
  14. floorIdForSerach = ko.observable(),
  15. defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),
  16. defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId');
  17. var deferredForSearch = new $.Deferred();
  18. function handleBuildingInSearchView(e) {
  19. if (e.value === 0) {
  20. floorsForSearch(getDefaultFloorForSearch());
  21. }
  22. else {
  23. BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch());
  24. }
  25. floorIdForSerach(0);
  26. }
  27. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmZone', {
  28. rowAlternationEnabled: true,
  29. /*
  30. editing: {
  31. editMode: 'batch',
  32. editEnabled: true,
  33. //removeEnabled: true,
  34. //insertEnabled: true
  35. },*/
  36. dataSourceOptions: {
  37. select: ['SiteId', 'FloorId', 'BuildingId', 'ZoneId', 'Name', 'CmBuilding/Name', 'CmFloor/Name', 'Target_temperature', 'Target_humidity'],
  38. expand: ['CmBuilding', 'CmFloor'],
  39. extendOptions: {
  40. forceOriginalField: true,
  41. }
  42. },
  43. columns: [
  44. { dataField: 'ZoneId', caption: $G('number'), width: '15%', alignment: 'center', sortOrder: 'desc' },
  45. /*
  46. { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '22%', alignment: 'center', allowEditing: false },
  47. { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '23%', alignment: 'center', allowEditing: false },
  48. { dataField: 'Name', caption: $G('zoneName'), width: '40%', alignment: 'center', allowEditing: false }, */
  49. { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '22%', alignment: 'center' },
  50. { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '23%', alignment: 'center' },
  51. { dataField: 'Name', caption: $G('zoneName'), width: '40%', alignment: 'center' },
  52. //{ dataField: 'Target_temperature', caption: '목표온도', width: '40%', alignment: 'center' },
  53. //{ dataField: 'Target_humidity', caption: '목표습도', width: '40%', alignment: 'center' }
  54. //utils.datagrid.columnIsUse( '15%' )
  55. ],
  56. // 2019.04.17 엑셀 출력 기능 추가 ~~~
  57. "export": {
  58. enabled: true,
  59. fileName: '구역 정보 목록'
  60. },
  61. onExporting: function (e) {
  62. e.component.columnOption("ZoneId", "visible", false);
  63. },
  64. onExported: function (e) {
  65. e.component.columnOption("ZoneId", "visible", true);
  66. },
  67. // ~~~ 2019.04.17 엑셀 출력 기능 추가
  68. popupWidth: 480,
  69. promiseDataInSearchView: deferredForSearch.promise(),
  70. searchViewItems: [
  71. { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: buildingIdForSerach, dataSource: buildingsForSearch, handleChangedValue: handleBuildingInSearchView },
  72. { id: 'FloorId', ignoreValue: 0, defaultValue: 0, value: floorIdForSerach, dataSource: floorsForSearch }, //withCheckId: 'BuildingId',
  73. { id: 'Name' }
  74. ],
  75. handleViewShowing: function () {
  76. buildingDataSource.load().done(function (buildingResults) {
  77. $("#gridContainer").dxDataGrid({
  78. paging: {
  79. pageSize: 18
  80. }
  81. });
  82. buildings(buildingResults);
  83. //buildingsForSearch( $SearchView.createArrayOfSelectBox( 'BuildingId', buildings() ) );
  84. //floorsForSearch( getDefaultFloorForSearch() );
  85. buildingsForSearch(defaultSearchBuildingArray.slice(0).concat(buildingResults));
  86. floorsForSearch(defaultSearchFloorArray.slice(0));
  87. buildingIdForSerach(0);
  88. floorIdForSerach(0);
  89. deferredForSearch.resolve();
  90. });
  91. },
  92. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  93. dataGrid.clearSelection();
  94. // hcLee 2016 02 16 키필드가 콤보로 제공될때 등록시만 보이고 수정시에는 안보기에 하기 위하여 꼭 필요 !!!
  95. viewModel.isNewInPopup(false);
  96. //$("#textBuildingName").show();
  97. var data = clickRow.data;
  98. var dataModel = viewModel.dataModel;
  99. dataModel.BuildingName = $KoSet(dataModel.BuildingName, data['CmBuilding/Name']);
  100. dataModel.FloorName = $KoSet(dataModel.FloorName, data['CmFloor/Name']);
  101. RowBuildingId = data.BuildingId;
  102. RowFloorId = data.FloorId;
  103. RowName = data.Name;
  104. //alert(dataModel.BuildingName());
  105. popupVisible(true);
  106. },
  107. handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {
  108. if (isNewInPopup() == false) {
  109. BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors);
  110. }
  111. },
  112. viewHidden: function () {
  113. $SearchView.visibleObservable(false); // hcLee 2015 03 23
  114. visiblePopup(false);
  115. },
  116. handleBeforeDelete: function (db) {
  117. //alert('handleAfterDelete ' + db.SiteId + db.BuildingId + db.FloorId + db.ZoneId);
  118. var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel']();
  119. dataViewModel.SiteId = db.SiteId;
  120. dataViewModel.BuildingId = db.BuildingId;
  121. dataViewModel.FloorId = db.FloorId;
  122. dataViewModel.ZoneId = db.ZoneId;
  123. var promise = BemsWebApplication.api.post('BemsMonitoringPoint/RemoveZoneTempHumiSet', dataViewModel);
  124. promise.done(function () {
  125. });
  126. },
  127. // 이름 중복 방지
  128. handlePopupShowing: function () {
  129. CmZoneDataSource.filter([
  130. ["SiteId", "=", BWA.UserInfo.SiteId()]
  131. ]);
  132. CmZoneDataSource.load().done(function (result) {
  133. ZoneInfo(result);
  134. });
  135. },
  136. beforeInsertingDataViewModel: function (dataModel, dbModelId) {
  137. var dfd = $.Deferred();
  138. var isDuplicated = false;
  139. for (var i = 0; i < ZoneInfo().length; i++) {
  140. if (dataModel.BuildingId() == ZoneInfo()[i].BuildingId() && dataModel.FloorId() == ZoneInfo()[i].FloorId() && dataModel.Name() == ZoneInfo()[i].Name()) {
  141. isDuplicated = true;
  142. break;
  143. }
  144. }
  145. if (!BWA.DataUtil.isValidInputValue(dataModel.BuildingId())
  146. || !BWA.DataUtil.isValidInputValue(dataModel.FloorId())
  147. || !BWA.DataUtil.isValidInputValue(dataModel.Name()))
  148. return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)');
  149. else {
  150. if (isDuplicated)
  151. return dfd.resolve(false, '이미 동일 정보가 존재합니다.');
  152. else
  153. return dfd.resolve(true);
  154. }
  155. },
  156. beforeUpdateDataViewModel: function () {
  157. var isDuplicated = false;
  158. for (var i = 0; i < ZoneInfo().length; i++) {
  159. if (viewModel.dataModel.Name() == ZoneInfo()[i].Name() && RowName() != ZoneInfo()[i].Name()
  160. && viewModel.dataModel.BuildingId() == ZoneInfo()[i].BuildingId() && viewModel.dataModel.FloorId() == ZoneInfo()[i].FloorId()) {
  161. isDuplicated = true;
  162. break;
  163. }
  164. }
  165. if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())
  166. || !BWA.DataUtil.isValidInputValue(viewModel.dataModel.FloorId())
  167. || !BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) {
  168. utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');
  169. return 0;
  170. }
  171. else {
  172. if (isDuplicated) {
  173. utils.toast.show('이미 동일 명칭이 존재합니다.', 'error');
  174. return 0;
  175. }
  176. else
  177. return 2;
  178. }
  179. },
  180. handleAfterInsert: function (db) {
  181. //alert('handleAfterInsert' + db.SiteId + db.BuildingId + db.FloorId + db.ZoneId);
  182. //var data = new CmZoneTempHumiSet();
  183. var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel']();
  184. dataViewModel.SiteId = db.SiteId;
  185. dataViewModel.BuildingId = db.BuildingId;
  186. dataViewModel.FloorId = db.FloorId;
  187. dataViewModel.ZoneId = db.ZoneId;
  188. /*
  189. dataViewModel.T1 = 0;
  190. dataViewModel.T2 = 0;
  191. dataViewModel.T3 = 0;
  192. dataViewModel.T4 = 0;
  193. dataViewModel.T5 = 0;
  194. dataViewModel.T6 = 0;
  195. dataViewModel.T7 = 0;
  196. dataViewModel.T8 = 0;
  197. dataViewModel.T9 = 0;
  198. dataViewModel.T10 = 0;
  199. dataViewModel.T11 = 0;
  200. dataViewModel.T12 = 0;
  201. dataViewModel.H1 = 0;
  202. dataViewModel.H2 = 0;
  203. dataViewModel.H3 = 0;
  204. dataViewModel.H4 = 0;
  205. dataViewModel.H5 = 0;
  206. dataViewModel.H6 = 0;
  207. dataViewModel.H7 = 0;
  208. dataViewModel.H8 = 0;
  209. dataViewModel.H9 = 0;
  210. dataViewModel.H10 = 0;
  211. dataViewModel.H11 = 0;
  212. dataViewModel.H12 = 0;*/
  213. //r promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumi', dataViewModel.toJS());
  214. var promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumiSet', dataViewModel);
  215. promise.done(function () {
  216. ;
  217. });
  218. },
  219. });
  220. function getDefaultFloorForSearch() {
  221. return $SearchView.createDefaultArray('FloorId');
  222. }
  223. floorDataSource.filter('BuildingId', -1);
  224. //viewModel.dataModel.ClassName = ko.observable();
  225. viewModel.dataModel.BuildingName = ko.observable();
  226. viewModel.dataModel.FloorName = ko.observable();
  227. viewModel.buildings = buildings;
  228. //viewModel.buildingsForSearch = buildingsForSearch;
  229. viewModel.floors = floors;
  230. //viewModel.floorsForSearch = floorsForSearch;
  231. viewModel.handleSelectBoxChangeBuilding = function (e) {
  232. //BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floors );
  233. if (viewModel.dataModel.BuildingId() != null) {
  234. floorDataSource.filter([
  235. ['SiteId', '=', BWA.UserInfo.SiteId()],
  236. "and",
  237. ['BuildingId', '=', viewModel.dataModel.BuildingId()]
  238. ]);
  239. }
  240. floorDataSource.load().done(function (result) {
  241. floors(result);
  242. });
  243. viewModel.dataModel.FloorId(null);
  244. }
  245. viewModel.searchViewPopup = BWA.Popup.SearchView.create({
  246. parentPopupId: 'popupDetail',
  247. parentPopupVisible: viewModel.popupVisible,
  248. handleSearch: function (filter, searchItems) {
  249. }
  250. });
  251. /*
  252. viewModel.popupInsertButtonOptions.action = function () {
  253. alert('insett');
  254. }*/
  255. return viewModel;
  256. };