bbee66e7857eadddfc9b6a464f9890844e4e2a14.svn-base 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. $(function () {
  2. 'use strict';
  3. BemsWebApplication.Popup.WorkList = {
  4. create: function (viewInfo, viewModel) {
  5. var facilities = ko.observableArray(),
  6. facilitiesInView = ko.observableArray(),
  7. businessFields = ko.observableArray();
  8. var facilitySearchPopup = null,
  9. facilityFactory = BWA.Factory.Facility,
  10. facilityGridView = ko.observable(undefined),
  11. facilityDataGridOptions,
  12. modifiableFacilityDataGridOptions = undefined;
  13. var facilityDataSource = facilityFactory.getBasicDataSourceRef({
  14. dbModeIId: 'FmsWorkOrderToFacility',
  15. primaryKeyDataField: 'WorkRequestId'
  16. })
  17. ;
  18. function isValidateWithFunction(errorMessage) {
  19. if (_.isEmpty(facilities())) {
  20. errorMessage.message = '점검을 위한 시설이 없습니다.';
  21. return false;
  22. }
  23. return true;
  24. }
  25. function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) {
  26. var workProgressId;
  27. if (isNewInPopup()) {
  28. workProgressId = $Code.WorkProgress.WORK_PLAN;
  29. }
  30. else {
  31. workProgressId = clickRowData['FmsWorkRequest/WorkProgressId'](); // clickRowData.WorkProgressId();
  32. dataViewModel.WorkProgressId = ko.observable();
  33. dataViewModel.WorkProgressId(workProgressId);
  34. }
  35. }
  36. function handlePopupShowing(isNewInPopup, dataModel, selectedData) {
  37. //var userInfo = BWA.UserInfo;
  38. //if (isNewInPopup()) {
  39. // dataModel.BusinessFieldName(userInfo.BusinessFieldName());
  40. // dataModel.BusinessFieldId(userInfo.BusinessFieldId());
  41. // dataModel.RequestUserName(userInfo.Name());
  42. // dataModel.RequestUserId(userInfo.UserId());
  43. // dataModel.WorkTypeId(workTypeId);
  44. // BWA.db.FmsWorkCodeType.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkRequest/FmsWorkCodeType')).done(function (workType) {
  45. // dataModel.WorkTypeName(workType.Name);
  46. // });
  47. // var now = moment();
  48. // dataModel.RequestDate(now.toDate());
  49. // dataModel.StartWorkDate(BWA.DataUtil.getDateFromDateTime(now));
  50. // dataModel.WorkProgressId($Code.WorkProgress.WORK_PLAN);
  51. // BWA.db.FmsWorkCodeProgress.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkRequest/FmsWorkCodeProgress')).done(function (workProgress) {
  52. // dataModel.WorkProgressName(workProgress.Name);
  53. // });
  54. //}
  55. }
  56. function handlePopupShown(isEditMode, isNew, dataViewModel) {
  57. }
  58. // 점검계획 정보가 저장된 후에 호출 된다.
  59. // 등록이면 responseKey가 있고, 수정이면 없다.
  60. function handleAfterSave(responseKey) {
  61. var array = facilities();
  62. if (_.isEmpty(array)) {
  63. return;
  64. }
  65. var siteId,
  66. workRequestId;//, businessFieldId;
  67. if (_.isUndefined(responseKey)) {
  68. var dataModel = viewModel.dataModel;
  69. siteId = dataModel.SiteId();
  70. //businessFieldId = dataModel.BusinessFieldId();
  71. workRequestId = dataModel.WorkRequestId();
  72. }
  73. else {
  74. siteId = responseKey.SiteId;
  75. //businessFieldId = responseKey.BusinessFieldId;
  76. workRequestId = responseKey.WorkRequestId;
  77. }
  78. var postData;
  79. var parameters = {
  80. SiteId: siteId,
  81. //BusinessFieldId: businessFieldId,
  82. WorkRequestId: workRequestId
  83. };
  84. postData = _.map(array, function (f) {
  85. return {
  86. SiteId: siteId,
  87. //BusinessFieldId: businessFieldId,
  88. WorkRequestId: workRequestId,
  89. FacilityCode: f.FacilityCode()
  90. };
  91. });
  92. BWA.api.post('FmsWorkOrderToFacility', postData, parameters);
  93. }
  94. function handleAfterLoadingModelByKey(data, dataViewModel, isNewInPopup) {
  95. // 작업목록은 삭제 할 수 없음
  96. viewModel.visibleDeleteButton(false);
  97. // 작업계획에서 사용하는 코드 임
  98. //if (dataViewModel.WorkProgressId() >= $Code.WorkProgress.WORK_PLAN) {
  99. // viewModel.visibleEditButton(false);
  100. // viewModel.visibleDeleteButton(false);
  101. //}
  102. var eq = BWA.DataUtil.constructEqualFilter;
  103. var and = BWA.DataUtil.andFilter;
  104. facilityDataSource.filter([
  105. eq('SiteId', dataViewModel.SiteId()),
  106. and,
  107. //eq('BusinessFieldId', dataViewModel.BusinessFieldId()),
  108. //and,
  109. eq('WorkRequestId', dataViewModel.WorkRequestId())
  110. ]);
  111. facilityDataSource.load().done(function (dbFacilities) {
  112. facilitiesInView(dbFacilities);
  113. });
  114. }
  115. function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {
  116. dataViewModel.BusinessFieldName(rowData['CmBusinessField/Name']());
  117. dataViewModel.WorkTypeName(rowData['FmsWorkRequest/FmsWorkCodeType/Name']());
  118. dataViewModel.RequestUserName(rowData['CmUser/Name']());
  119. dataViewModel.WorkProgressName(rowData['FmsWorkRequest/FmsWorkCodeProgress/Name']());
  120. dataViewModel.RejectUserName($KoValue(rowData['CmUser1/Name']));
  121. }
  122. viewModel.popupVisible.subscribe(function (visible) {
  123. if (!visible) {
  124. facilitiesInView([]);
  125. }
  126. });
  127. viewModel.isEditModeInPopup.subscribe(function (isEditMode) {
  128. if (isEditMode) {
  129. facilities(facilitiesInView.slice(0));
  130. }
  131. });
  132. viewModel.dataModel.WorkTypeName = ko.observable();
  133. viewModel.dataModel.BusinessFieldName = ko.observable();
  134. viewModel.dataModel.RequestUserName = ko.observable();
  135. viewModel.dataModel.RejectUserName = ko.observable();
  136. viewModel.dataModel.WorkProgressName = ko.observable();
  137. facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(
  138. facilitiesInView, viewModel.viewModeInPopup);
  139. modifiableFacilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions(
  140. facilities, viewModel.isEditModeInPopup, facilityGridView);
  141. viewModel.facilitySearchPopup = facilitySearchPopup = BWA.Popup.Facility.create(viewModel, undefined, {
  142. isMultipleSelect: true,
  143. onSelectedFacilities: function (selectedFacilities) {
  144. var workRequestId = viewModel.dataModel.WorkRequestId();
  145. _.each(selectedFacilities, function (sf) {
  146. // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.
  147. var found = _.some(facilities(), function (f) {
  148. return f.FacilityCode() === sf.FacilityCode();
  149. });
  150. if (found) return;
  151. facilities.push({
  152. SiteId: sf.SiteId,
  153. WorkRequestId: ko.observable(workRequestId),
  154. FacilityCode: sf.FacilityCode,
  155. Name: sf.Name,
  156. });
  157. });
  158. facilityGridView().refresh();
  159. }
  160. });
  161. return {
  162. facilitySearchPopup: facilitySearchPopup,
  163. facilities: facilitiesInView,
  164. businessFields: businessFields,
  165. isValidateWithFunction: isValidateWithFunction,
  166. facilityDataGridOptions: facilityDataGridOptions,
  167. modifiableFacilityDataGridOptions: modifiableFacilityDataGridOptions,
  168. handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,
  169. handleAfterSave: handleAfterSave,
  170. handlePopupShowing: handlePopupShowing,
  171. handlePopupShown: handlePopupShown,
  172. handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,
  173. handleDeleteSelectedFacilities: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities),
  174. handleBeforePopupShowingPromise: handleBeforePopupShowingPromise
  175. };
  176. }
  177. }
  178. });