151e540c24af13e555f26e8b26882917690ddf0f.svn-base 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. 
  2. $(function () {
  3. 'use strict';
  4. BWA.Popup = BWA.Popup || {};
  5. BWA.Popup.VirtualFacility = {
  6. create: function (viewModel, selectedTreeItem) {
  7. var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType'),
  8. CmfacilityTypeDataSource = BemsWebApplication.db.createDataSource('CmFacility'),
  9. facilityTypes = ko.observableArray(),
  10. FacilityTypeInfo = ko.observableArray(),
  11. isNew = ko.observable(false),
  12. popupVisible = ko.observable(),
  13. isEditMode = ko.observable(false),
  14. isViewMode = ko.observable(true),
  15. cancelButtonVisible = ko.observable(true),
  16. facilityDataModel = new BWA.CmFacilityViewModel(),
  17. popupOptions = {
  18. position: { offset: '-450 0' },
  19. width: '520px',
  20. height: 'auto',
  21. //shading: false,
  22. shadingColor: 'rgba(0,0,0,0.0)',
  23. visible: popupVisible,
  24. closeOnOutsideClick: false,
  25. animation: utils.popup.createAnimation(),
  26. shownAction: function () {
  27. },
  28. },
  29. toolbarItems = [
  30. { location: 'before', text: $G('detailInfo') },
  31. { location: 'after', widget: 'button', options: { text: $G('edit'), icon: 'edit', visible: isViewMode, disabled: viewModel.hasnotModificationPermission, clickAction: handlePopupButtonEdit } },
  32. { location: 'after', widget: 'button', options: { text: $G('delete'), type: 'danger', icon: 'remove', visible: isViewMode, disabled: viewModel.hasnotModificationPermission, clickAction: handlePopupButtonDelete } },
  33. { location: 'after', widget: 'button', options: { text: $G('cancel'), icon: 'cancel', visible: cancelButtonVisible, clickAction: handlePopupButtonCancel } },
  34. { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', visible: isEditMode, disabled: viewModel.hasnotModificationPermission, clickAction: handlePopupButtonSave } },
  35. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } }
  36. ]
  37. ;
  38. facilityDataModel.FacilityTypeName = ko.observable();
  39. isEditMode.subscribe(function (isEdit) {
  40. isViewMode(!isEdit);
  41. });
  42. var facilityTempName = ko.observable();
  43. var EditNameDev;
  44. function handlePopupButtonEdit() {
  45. isEditMode(true);
  46. cancelButtonVisible(true);
  47. facilityTempName(facilityDataModel.toJS().Name);
  48. }
  49. function handlePopupButtonCancel() {
  50. facilityDataModel.Name(facilityTempName());
  51. isEditMode(false);
  52. cancelButtonVisible(false);
  53. }
  54. function handlePopupButtonClose() {
  55. facilityDataModel.Name(undefined); // 팝업에 기존 이름 보이기 방지
  56. popupVisible(false);
  57. }
  58. function refreshList() {
  59. CmfacilityTypeDataSource.filter([
  60. ["SiteId", "=", BWA.UserInfo.SiteId()]
  61. ]);
  62. CmfacilityTypeDataSource.load().done(function (result) {
  63. FacilityTypeInfo(result);
  64. });
  65. if (selectedTreeItem())
  66. $('#facilityTreeView').cwTreeView('reload', selectedTreeItem().parentData);
  67. }
  68. function getDoneFunc(messageId) {
  69. return function () {
  70. refreshList();
  71. popupVisible(false);
  72. utils.toast.show($G(messageId));
  73. };
  74. }
  75. function handlePopupButtonDelete() {
  76. BWA.db.CmFacility.remove(
  77. BWA.DataUtil.pickKeys(facilityDataModel, 'CmFacility')
  78. ).done(getDoneFunc('successDatabaseDeleteMsg'));
  79. facilityDataModel.Name(undefined); // 팝업에 기존 이름 보이기 방지
  80. }
  81. function handlePopupButtonSave() {
  82. var dfd = $.Deferred();
  83. var isDuplicated = false;
  84. for (var i = 0; i < FacilityTypeInfo().length; i++) {
  85. if (facilityDataModel.toJS().Name == FacilityTypeInfo()[i].Name() && EditNameDev != FacilityTypeInfo()[i].Name()) {
  86. isDuplicated = true;
  87. break;
  88. }
  89. }
  90. if (!BWA.DataUtil.isValidInputValue(facilityDataModel.toJS().Name)) {
  91. utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');
  92. return 0;
  93. }
  94. else {
  95. if (isDuplicated) {
  96. utils.toast.show('이미 동일 명칭이 존재합니다.', 'error');
  97. return 0;
  98. }
  99. else {
  100. if (isNew()) {
  101. facilityDataModel.SiteId(BWA.UserInfo.SiteId());
  102. BWA.db.CmFacility.insert(facilityDataModel.toJS()).done(getDoneFunc('successDatabaseInsertionMsg'));
  103. }
  104. else {
  105. BWA.db.CmFacility.update(
  106. BWA.DataUtil.pickKeys(facilityDataModel, 'CmFacility'),
  107. facilityDataModel.toJS()
  108. ).done(getDoneFunc('successDatabaseUpdateMsg'));
  109. }
  110. }
  111. }
  112. facilityDataModel.Name(undefined); // 팝업에 기존 이름 보이기 방지
  113. }
  114. function handleViewShown() {
  115. refreshList();
  116. facilityDataModel.SiteId(BWA.UserInfo.SiteId());
  117. facilityTypeDataSource.load().done(function (dbFacilityTypes) {
  118. facilityTypes(dbFacilityTypes);
  119. });
  120. }
  121. return {
  122. facilityTypes: facilityTypes,
  123. dataModel: facilityDataModel,
  124. isNew: isNew,
  125. isEditMode: isEditMode,
  126. options: popupOptions,
  127. toolbarItems: toolbarItems,
  128. handleViewShown: handleViewShown,
  129. show: function (facilityJson, EditName) {
  130. if (_.isUndefined(facilityJson)) {
  131. // 등록
  132. isNew(true);
  133. isEditMode(true);
  134. cancelButtonVisible(false);
  135. facilityDataModel.FacilityTypeId(99);
  136. facilityDataModel.IsVirtualFacility(true);
  137. }
  138. else {
  139. isNew(false);
  140. isEditMode(false);
  141. cancelButtonVisible(false);
  142. facilityDataModel.fromJS(facilityJson);
  143. facilityDataModel.FacilityTypeName(facilityJson['BemsFacilityType/Name']);
  144. }
  145. EditNameDev = EditName;
  146. popupVisible(true);
  147. }
  148. };
  149. }
  150. }
  151. });