c5d885a2b0d9a404a928a0ec7afdaca08e364f5e.svn-base 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. BemsWebApplication.Floor = function(params, viewInfo) {
  2. "use strict";
  3. var FloorInfo = ko.observableArray();
  4. var CmFloorDataSource = BemsWebApplication.db.createDataSource('CmFloor');
  5. var RowName,RowBuilidngId;
  6. var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true);
  7. var buildings = ko.observableArray();
  8. var searchBuildings = ko.observableArray();
  9. var buildingDeferred = new $.Deferred();
  10. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmFloor', {
  11. dataSourceOptions: {
  12. select: ['SiteId', 'FloorId', 'BuildingId', 'Name', 'CmBuilding/Name'],
  13. expand: ["CmBuilding"],
  14. extendOptions: {
  15. forceOriginalField: true,
  16. }
  17. },
  18. columns: [
  19. { dataField: 'FloorId', caption: $G('number'), width: '20%', alignment: 'center', sortOrder: 'desc' },
  20. { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '20%', alignment: 'center' },
  21. { dataField: 'Name', caption: $G('floorName'), width: '60%', alignment: 'center' },
  22. //utils.datagrid.columnIsUse( '15%' )
  23. ],
  24. // 2019.04.17 엑셀 출력 기능 추가 ~~~
  25. "export": {
  26. enabled: true,
  27. fileName: '층 정보 목록'
  28. },
  29. onExporting: function (e) {
  30. e.component.columnOption("FloorId", "visible", false);
  31. },
  32. onExported: function (e) {
  33. e.component.columnOption("FloorId", "visible", true);
  34. },
  35. // ~~~ 2019.04.17 엑셀 출력 기능 추가
  36. paging: {
  37. pageSize: 18,
  38. enabled: true
  39. },
  40. pager:{visible: true},
  41. popupWidth: 480,
  42. promiseDataInSearchView: buildingDeferred.promise(),
  43. searchViewItems: [{ id: 'BuildingId', ignoreValue: 0, defaultValue: 0, dataSource: searchBuildings }, { id: 'Name' }],
  44. handleViewShowing: function() {
  45. buildingDataSource.load().done(function(result) {
  46. buildings(result);
  47. searchBuildings([{ BuildingId: 0, Name: $G('selectAll') }].concat(result));
  48. buildingDeferred.resolve();
  49. });
  50. },
  51. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  52. dataGrid.clearSelection();
  53. viewModel.isNewInPopup(false); // hcLee 2016 02 16 키필드가 콤보로 제공될때 등록시만 보이고 수정시에는 안보기에 하기 위하여 꼭 필요 !!!
  54. var data = clickRow.data;
  55. var dataModel = viewModel.dataModel;
  56. dataModel.BuildingName = $KoSet(dataModel.BuildingName, data['CmBuilding/Name']);
  57. RowName = data.Name;
  58. RowBuilidngId = data.BuildingId;
  59. popupVisible(true);
  60. },
  61. // 이름 중복 방지
  62. handlePopupShowing: function () {
  63. CmFloorDataSource.filter([
  64. ["SiteId", "=", BWA.UserInfo.SiteId()]
  65. ]);
  66. CmFloorDataSource.load().done(function (result) {
  67. FloorInfo(result);
  68. });
  69. },
  70. beforeInsertingDataViewModel: function (dataModel, dbModelId) {
  71. var dfd = $.Deferred();
  72. var isDuplicated = false;
  73. for (var i = 0; i < FloorInfo().length; i++) {
  74. if (dataModel.Name() == FloorInfo()[i].Name() && dataModel.BuildingId() == FloorInfo()[i].BuildingId()) {
  75. isDuplicated = true;
  76. break;
  77. }
  78. }
  79. if (!BWA.DataUtil.isValidInputValue(dataModel.Name()) || !BWA.DataUtil.isValidInputValue(dataModel.BuildingId()))
  80. return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)');
  81. else {
  82. if (isDuplicated)
  83. return dfd.resolve(false, '이미 동일 정보가 존재합니다 (빌딩 명칭, 층 명칭 확인 필요)');
  84. else
  85. return dfd.resolve(true);
  86. }
  87. },
  88. beforeUpdateDataViewModel: function () {
  89. var isDuplicated = false;
  90. for (var i = 0; i < FloorInfo().length; i++) {
  91. if (viewModel.dataModel.Name() == FloorInfo()[i].Name() && viewModel.dataModel.BuildingId() == FloorInfo()[i].BuildingId()
  92. && (RowName() != FloorInfo()[i].Name() || RowBuilidngId() != FloorInfo()[i].BuildingId())) {
  93. isDuplicated = true;
  94. break;
  95. }
  96. }
  97. if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) {
  98. utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');
  99. return 0;
  100. }
  101. else {
  102. if (isDuplicated) {
  103. utils.toast.show('이미 동일 정보가 존재합니다 (빌딩 명칭, 층 명칭 확인 필요)', 'error');
  104. return 0;
  105. }
  106. else
  107. return 2;
  108. }
  109. }
  110. });
  111. viewModel.buildingDataSource = buildings;
  112. viewModel.searchBuildings = searchBuildings;
  113. viewModel.dataModel.BuildingName = ko.observable();
  114. // viewModel.handleSelectBoxChangeBuilding = handleSelectBoxBuilding;
  115. return viewModel;
  116. };