db60dec6bfccf364f6d8946748a4b1684a98f8c0.svn-base 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. BemsWebApplication.PatrolPlan = function (params, viewInfo) {
  2. "use strict";
  3. var eq = BWA.DataUtil.constructEqualFilter;
  4. var and = BWA.DataUtil.andFilter;
  5. var SiteId = BWA.UserInfo.SiteId();
  6. var patrolgroupDataSource = BemsWebApplication.db.createDataSource('CmPatrolGroup', true),
  7. patrolcourseDataSource = BemsWebApplication.db.createDataSource('CmPatrolCourse', true);
  8. patrolgroupDataSource.filter([
  9. eq('SiteId', SiteId)
  10. ]);
  11. patrolcourseDataSource.filter([
  12. eq('SiteId', SiteId)
  13. ]);
  14. var CmPatrolPlanDataSource = BemsWebApplication.db.createDataSource('CmPatrolPlan');
  15. var PatrolPlanInfo = ko.observableArray();
  16. var RowName;
  17. var patrolgroups = ko.observableArray(),
  18. patrolcourses = ko.observableArray();
  19. var patrolgroupsForSearch = ko.observableArray(),
  20. patrolcoursesForSearch = ko.observableArray(),
  21. patrolgroupIdForSerach = ko.observable(),
  22. patrolcourseIdForSerach = ko.observable(),
  23. defaultSearchPatrolGroupArray = $SearchView.createDefaultArray('PatrolGroupId'),
  24. defaultSearchPatrolCourseArray = $SearchView.createDefaultArray('PatrolCourseId');
  25. var deferredForSearch = new $.Deferred();
  26. /*
  27. function handleBuildingInSearchView(e) {
  28. if( e.value === 0 ) {
  29. floorsForSearch( getDefaultFloorForSearch() );
  30. }
  31. else {
  32. BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch() );
  33. }
  34. floorIdForSerach( 0 );
  35. }*/
  36. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmPatrolPlan', {
  37. rowAlternationEnabled: true,
  38. /*
  39. editing: {
  40. editMode: 'batch',
  41. editEnabled: true,
  42. //removeEnabled: true,
  43. //insertEnabled: true
  44. },*/
  45. dataSourceOptions: {
  46. select: ['SiteId', 'PatrolPlanId', 'GroupId', 'CourseId', 'Name', 'PlanDesc', 'term', 'inDate', 'CmPatrolGroup/Name', 'CmPatrolCourse/Name'],
  47. expand: ['CmPatrolGroup', 'CmPatrolCourse'],
  48. extendOptions: {
  49. forceOriginalField: true,
  50. },
  51. filter: [
  52. ['SiteId', '=', SiteId]
  53. ]
  54. },
  55. columns: [
  56. { dataField: 'PatrolPlanId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' },
  57. { dataField: 'Name', caption: '순찰계획명', width: '30%', alignment: 'center' },
  58. { dataField: 'CmPatrolGroup/Name', caption: '순찰조', width: '20%', alignment: 'center' },
  59. { dataField: 'CmPatrolCourse/Name', caption: '순찰코스', width: '20%', alignment: 'center' },
  60. // { dataField: 'term', caption: '순찰주기(시간)', width: '10%', alignment: 'center' },
  61. { dataField: 'PlanDesc', caption: '주요점검사항', width: '30%', alignment: 'center' },
  62. {
  63. dataField: 'inDate', caption: '최종변경일', width: '10%', alignment: 'center',
  64. customizeText: function (cellInfo) {
  65. return $G.date(cellInfo.value);
  66. }
  67. },
  68. ],
  69. popupWidth: 580,
  70. promiseDataInSearchView: deferredForSearch.promise(),
  71. searchViewItems: [
  72. //{ id: 'PatrolGroupId', ignoreValue: 0, defaultValue: 0, value: patrolgroupIdForSerach, dataSource: patrolgroupsForSearch, handleChangedValue: handleBuildingInSearchView },
  73. { id: 'GroupId', ignoreValue: 0, defaultValue: 0, value: patrolgroupIdForSerach, dataSource: patrolgroupsForSearch },
  74. { id: 'CourseId', ignoreValue: 0, defaultValue: 0, value: patrolcourseIdForSerach, dataSource: patrolcoursesForSearch },
  75. { id: 'Name' }
  76. ],
  77. handleViewShowing: function () {
  78. patrolgroupDataSource.load().done(function (pgResults) {
  79. patrolgroups(pgResults);
  80. patrolgroupsForSearch(defaultSearchPatrolGroupArray.slice(0).concat(pgResults));
  81. patrolgroupIdForSerach(0);
  82. patrolcourseDataSource.load().done(function (pgResults) {
  83. patrolcourses(pgResults);
  84. patrolcoursesForSearch(defaultSearchPatrolCourseArray.slice(0).concat(pgResults));
  85. patrolcourseIdForSerach(0);
  86. deferredForSearch.resolve();
  87. });
  88. });
  89. },
  90. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  91. dataGrid.clearSelection();
  92. viewModel.isNewInPopup(false); //
  93. var data = clickRow.data;
  94. var dataModel = viewModel.dataModel;
  95. dataModel.PatrolGroupName = $KoSet(dataModel.PatrolGroupName, data['CmPatrolGroup/Name']);
  96. dataModel.PatrolCourseName = $KoSet(dataModel.PatrolCourseName, data['CmPatrolCourse/Name']);
  97. //dataModel.CourseId = $KoSet(dataModel.CourseId, data.CourseId);
  98. //dataModel.GroupId = $KoSet(dataModel.GroupId, data.GroupId);
  99. RowName = data.Name;
  100. popupVisible(true);
  101. },
  102. handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {
  103. //if( isNewInPopup() == false ) {
  104. // BWA.DataUtil.setArrayDataSourceFilter(patrolgroupDataSource, 'GroupId', dataViewModel.GroupId(), patrolgroups);
  105. //BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors);
  106. //}
  107. },
  108. viewHidden: function () {
  109. $SearchView.visibleObservable(false);
  110. visiblePopup(false);
  111. },
  112. handlePopupShowing: function (isNewInPopup, dataViewModel, selectedData) {
  113. /* if (isNewInPopup()) {
  114. dataViewModel.inDate(new Date());
  115. }*/
  116. CmPatrolPlanDataSource.filter([
  117. ["SiteId", "=", BWA.UserInfo.SiteId()]
  118. ]);
  119. CmPatrolPlanDataSource.load().done(function (result) {
  120. PatrolPlanInfo(result);
  121. });
  122. },
  123. handleBeforeDelete: function (db) {
  124. //var parameters = {
  125. // SiteId: db.SiteId,
  126. // ScheduleId: db.ScheduleId
  127. //};
  128. //BWA.api.post('CmPatrolSchedule/Delete', null, parameters).done(function () {
  129. //});
  130. },
  131. beforeInsertingDataViewModel: function (dataModel, dbModelId) {
  132. dataModel.inDate(new Date());
  133. var dfd = $.Deferred();
  134. var isDuplicated = false;
  135. for (var i = 0; i < PatrolPlanInfo().length; i++) {
  136. if (dataModel.Name() == PatrolPlanInfo()[i].Name()) {
  137. isDuplicated = true;
  138. }
  139. }
  140. if (!BWA.DataUtil.isValidInputValue(dataModel.Name()) || dataModel.term() == null)
  141. return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)');
  142. else {
  143. if (isDuplicated)
  144. return dfd.resolve(false, '이미 동일 정보가 존재합니다.');
  145. else
  146. return dfd.resolve(true);
  147. }
  148. },
  149. beforeUpdateDataViewModel: function () {
  150. // 수정시에 시간변경
  151. viewModel.dataModel.inDate(new Date());
  152. var isDuplicated = false;
  153. for (var i = 0; i < PatrolPlanInfo().length; i++) {
  154. if (viewModel.dataModel.Name() == PatrolPlanInfo()[i].Name() && (RowName() != PatrolPlanInfo()[i].Name())) {
  155. isDuplicated = true;
  156. }
  157. }
  158. if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name()) || _.isEmpty(viewModel.dataModel.Name()) || viewModel.dataModel.term() == null) {
  159. utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');
  160. return 0;
  161. }
  162. else {
  163. if (isDuplicated) {
  164. utils.toast.show('이미 동일 이름이 존재합니다.', 'error');
  165. return 0;
  166. }
  167. else
  168. return 2;
  169. }
  170. },
  171. handleAfterInsert: function (db) {
  172. /*
  173. var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel']();
  174. dataViewModel.SiteId = db.SiteId;
  175. dataViewModel.BuildingId = db.BuildingId;
  176. dataViewModel.FloorId = db.FloorId;
  177. dataViewModel.ZoneId = db.ZoneId;
  178. var promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumiSet', dataViewModel);
  179. promise.done(function () {
  180. ;
  181. });*/
  182. },
  183. });
  184. /*
  185. function getDefaultFloorForSearch() {
  186. return $SearchView.createDefaultArray( 'FloorId' );
  187. }
  188. floorDataSource.filter('BuildingId', -1); */
  189. // 콤보, text 등록먼저후 생기는 팝업에서 안보이는 문제해결
  190. viewModel.dataModel.PatrolGroupName = ko.observable();
  191. viewModel.dataModel.PatrolCourseName = ko.observable();
  192. //viewModel.dataModel.GroupId = ko.observable();
  193. //viewModel.dataModel.CourseId= ko.observable();
  194. viewModel.patrolgroups = patrolgroups;
  195. viewModel.patrolcourses = patrolcourses;
  196. /*
  197. viewModel.popupInsertButtonOptions.action = function () {
  198. alert('insett');
  199. }*/
  200. return viewModel;
  201. };