55dd369a64fc15757c2fd4978f6cfdd3006f8989.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. BemsWebApplication.ConfirmCheckSchedule = function( params, viewInfo ) {
  2. "use strict";
  3. var selectedScheduleId;
  4. var selectedScheduleName = ko.observable();
  5. var scheduleCalendar = null;
  6. var checkScheduleManager = utils.checkSchedule.createScheduleManager();
  7. var confirmButtonVisible = ko.observable( true );
  8. var cancelConfirmButtonVisible = ko.observable( false );
  9. var cycleTypeClassDataSource = BemsWebApplication.db.createDataSource( 'FmsFacilityCodeCycleType', true, true ),
  10. cycleUnitClassDataSource = BemsWebApplication.db.createDataSource( 'FmsFacilityCodeCycleUnit', true, true ),
  11. holidayClassDataSource = BemsWebApplication.db.createDataSource( 'FmsFacilityCodeHoliday', true, true ),
  12. orderClassDataSource = BemsWebApplication.db.createDataSource( 'FmsFacilityCodeOrder', true, true ),
  13. businessFieldDataSource = BemsWebApplication.db.createDataSource( 'CmBusinessField', true, true );
  14. var searchCycleTypes = ko.observableArray(),
  15. searchCycleUnits = ko.observableArray(),
  16. searchBusinessFields = ko.observableArray(),
  17. searchHolidayClasses = ko.observableArray(),
  18. searchOrderClasses = ko.observableArray(),
  19. searchConfirmStrings = ko.observableArray( [ $G( 'selectAll' ), $G( 'confirm' ), $G( 'notConfirm' ) ] );
  20. var deferredForSearch = new $.Deferred();
  21. confirmButtonVisible.subscribe( function( value ) {
  22. cancelConfirmButtonVisible( !value );
  23. } );
  24. var scheduleCalendarOptions = {
  25. selectable: false,
  26. editable: false,
  27. changedMonth: function( view ) {
  28. if( scheduleCalendar === null ) return;
  29. var date = view.calendar.getDate();
  30. var events = checkScheduleManager.generateScheduleEvents( date, viewModel.dataModel );
  31. scheduleCalendar.updateEvents( events );
  32. }
  33. };
  34. var viewModel = null;
  35. viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'FmsFacilitySchedule', {
  36. dataSourceOptions: {
  37. select: [ 'SiteId', 'ScheduleId', 'BusinessFieldId', 'Name', 'ConfirmedUserId', 'IsUse', 'CycleSize', 'StartDate', 'CmBusinessField/Name', 'FmsFacilityCodeCycleType/Name', 'FmsFacilityCodeCycleUnit/Name', 'FmsFacilityCodeHoliday/Name', 'FmsFacilityCodeOrder/Name' ],
  38. expand: [ 'CmBusinessField', 'FmsFacilityCodeCycleType', 'FmsFacilityCodeCycleUnit', 'FmsFacilityCodeHoliday', 'FmsFacilityCodeOrder' ]
  39. },
  40. columns: [
  41. { dataField: 'Name', caption: $G( 'facilityCheckScheduleName' ), width: '18%', alignment: 'center', allowFiltering: false },
  42. { dataField: 'CmBusinessField_Name', caption: $G( 'businessFieldName' ), width: '10%', alignment: 'center', allowFiltering: false },
  43. { dataField: 'FmsFacilityCodeCycleType_Name', caption: $G( 'facilityCheckScheduleCycleTypeName' ), width: '10%', alignment: 'center' },
  44. { dataField: 'FmsFacilityCodeCycleUnit_Name', caption: $G( 'facilityCheckScheduleCycleUnitName' ), width: '10%', alignment: 'center' },
  45. { dataField: 'FmsFacilityCodeHoliday_Name', caption: $G( 'facilityCheckScheduleHolidayName' ), width: '10%', alignment: 'center' },
  46. { dataField: 'FmsFacilityCodeOrder_Name', caption: $G( 'facilityCheckScheduleOrderName' ), width: '12%', alignment: 'center' },
  47. {
  48. dataField: 'StartDate',
  49. caption: $G( 'facilityCheckScheduleStartDate' ),
  50. width: '10%',
  51. alignment: 'center',
  52. allowFiltering: false,
  53. customizeText: function( cellInfo ) {
  54. return $G.date( cellInfo.value );
  55. }
  56. },
  57. {
  58. dataField: 'ConfirmedUserId',
  59. caption: $G( 'facilityCheckScheduleIsConfirm' ),
  60. width: '10%',
  61. alignment: 'center',
  62. allowFiltering: false,
  63. customizeText: function( cellInfo ) {
  64. return $G.isConfirm( cellInfo.value );
  65. }
  66. },
  67. utils.datagrid.columnIsUse( '10%' )
  68. ],
  69. promiseDataInSearchView: deferredForSearch.promise(),
  70. searchViewItems: [
  71. { id: 'CycleTypeId', ignoreValue: 0, defaultValue: 0, dataSource: searchCycleTypes },
  72. { id: 'CycleUnitId', ignoreValue: 0, defaultValue: 0, dataSource: searchCycleUnits },
  73. { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: searchBusinessFields },
  74. { id: 'HolidayId', ignoreValue: 0, defaultValue: 0, dataSource: searchHolidayClasses },
  75. { id: 'OrderId', ignoreValue: 0, defaultValue: 0, dataSource: searchOrderClasses },
  76. { id: 'StartDate', type: 'dateRange', isOnlyDate: true },
  77. { id: 'ConfirmedUserId', ignoreValue: 0, defaultValue: 0, dataSource: searchConfirmStrings, type: 'checkNull' },
  78. { id: 'Name' } ],
  79. useNumberColumn: false,
  80. popupWidth: '740px',
  81. wordWrapEnabled: true,
  82. cellPrepared: function( cellElement, cellInfo ) {
  83. switch( cellInfo.columnIndex ) {
  84. case 4:
  85. {
  86. $( cellElement ).text( cellInfo.data.CycleSize() + ' ' + cellInfo.data.FmsFacilityCodeCycleUnit_Name() );
  87. break;
  88. }
  89. }
  90. },
  91. selection: { mode: 'multiple', allowSelectAll: true },
  92. handleViewShowing: function() {
  93. $.when( cycleTypeClassDataSource.load(),
  94. cycleUnitClassDataSource.load(),
  95. businessFieldDataSource.load(),
  96. holidayClassDataSource.load(),
  97. orderClassDataSource.load() )
  98. .done( function( result1, result2, result3, result4, result5 ) {
  99. searchCycleTypes( $SearchView.createArrayOfSelectBox( 'CycleTypeId', result1[0] ) );
  100. searchCycleUnits( $SearchView.createArrayOfSelectBox( 'CycleUnitId', result2[0] ) );
  101. searchBusinessFields( $SearchView.createArrayOfSelectBox( 'BusinessFieldId', result3[0] ) );
  102. searchHolidayClasses( $SearchView.createArrayOfSelectBox( 'HolidayId', result4[0] ) );
  103. searchOrderClasses( $SearchView.createArrayOfSelectBox( 'OrderId', result5[0] ) );
  104. deferredForSearch.resolve();
  105. } );
  106. },
  107. handlePopupShowing: function( that ) {
  108. selectedCheckGroupDataSource.load().done( function( result ) {
  109. var dataGrid = $( '#gridSelectedCheckGroupContainer' ).dxDataGrid( 'instance' );
  110. dataGrid.refresh();
  111. } );
  112. },
  113. handleAfterLoadingModelByKey: function( data ) {
  114. var dataModel = viewModel.dataModel;
  115. dataModel.CycleSizeText( data.CycleSize + ' ' + dataModel.CycleUnitName() );
  116. },
  117. handleDataGridRowClick: function( id, dataGrid, clickRow, popupVisible ) {
  118. dataGrid.clearSelection();
  119. var data = clickRow.data;
  120. var dataModel = viewModel.dataModel;
  121. dataModel.CycleTypeName = $KoSet( dataModel.CycleTypeName, data.FmsFacilityCodeCycleType_Name );
  122. dataModel.CycleUnitName = $KoSet( dataModel.CycleUnitName, data.FmsFacilityCodeCycleUnit_Name );
  123. dataModel.HolidayName = $KoSet( dataModel.HolidayName, data.FmsFacilityCodeHoliday_Name );
  124. dataModel.OrderName = $KoSet( dataModel.OrderName, data.FmsFacilityCodeOrder_Name );
  125. dataModel.BusinessFieldName = $KoSet( dataModel.OrderName, data.CmBusinessField_Name );
  126. selectedScheduleId = data.ScheduleId();
  127. selectedScheduleName = $KoSet( selectedScheduleName, data.Name() );
  128. selectedCheckGroupDataSource.filter( [
  129. [ 'SiteId', '=', BWA.UserInfo.SiteId() ],
  130. 'and',
  131. [ 'ScheduleId', '=', selectedScheduleId ]
  132. ] );
  133. popupVisible( true );
  134. },
  135. handleSaveButtonInPopup: function( isInsert ) {
  136. },
  137. handlePopupShown: function() {
  138. if( scheduleCalendar === null ) {
  139. scheduleCalendar = utils.fullCalendar.create( 'scheduleCalendar', scheduleCalendarOptions );
  140. //scheduleCalendar = $( '#scheduleCalendar' );
  141. //scheduleCalendar.fullCalendar( calendarOption );
  142. }
  143. confirmButtonVisible( dataModel.ConfirmedUserId() === undefined || dataModel.ConfirmedUserId() === null );
  144. checkScheduleManager.load( scheduleCalendar.getDate(), dataModel ).done( function( events ) {
  145. scheduleCalendar.updateEvents( events );
  146. } );
  147. },
  148. toolbarItemsInPopup: [
  149. { location: 'before', text: $G('checkScheduleConfirm') },
  150. { location: 'after', widget: 'button', options: { text: $G( 'confirm' ), icon: 'save', visible: confirmButtonVisible, clickAction: handlePopupButtonConfirm } },
  151. { location: 'after', widget: 'button', options: { text: $G( 'cancelConfirm' ), icon: 'save', visible: cancelConfirmButtonVisible, clickAction: handlePopupButtonCancelConfirm } }
  152. ]
  153. } );
  154. function handlePopupButtonConfirm() {
  155. postConfirm( [ getPostData( dataModel.SiteId(), dataModel.ScheduleId() ) ] );
  156. viewModel.popupVisible( false );
  157. }
  158. function handlePopupButtonCancelConfirm() {
  159. postCancelConfirm( [ getPostData( dataModel.SiteId(), dataModel.ScheduleId() ) ] );
  160. viewModel.popupVisible( false );
  161. }
  162. viewModel.dataModel.CycleSizeText = ko.observable();
  163. var selectedCheckGroupDataSource = $DataSource( {
  164. dataSourceOptions: {
  165. store: BemsWebApplication.db.FmsFacilityScheduleToCheckGroup,
  166. select: [ 'SiteId', 'ScheduleId', 'CheckGroupId', 'FmsFacilityScheduleCheckGroup/Name' ],
  167. expand: [ 'FmsFacilityScheduleCheckGroup' ]
  168. }
  169. });
  170. var selectedFactory = {
  171. dxDataSource: selectedCheckGroupDataSource,
  172. columns: [
  173. { dataField: 'FmsFacilityScheduleCheckGroup_Name',caption: $G('facilityCheckScheduleCheckGroupName'),width: '45%',alignment: 'center',allowFiltering: false }
  174. ],
  175. };
  176. viewModel.tabsItems = [
  177. { text: '기본 정보' },
  178. { text: '점검 그룹' },
  179. { text: '계획 일정' }
  180. ];
  181. viewModel.currentTabIndex = ko.observable( 0 );
  182. var dataModel = viewModel.dataModel;
  183. viewModel.multiViewItems = [
  184. {
  185. dataModel: dataModel,
  186. viewModel: viewModel,
  187. template: 'generalInfo'
  188. },
  189. {
  190. dataModel: dataModel,
  191. viewModel: viewModel,
  192. selectedCheckGroupFactory: utils.datagrid.defaultOptions($.extend({},selectedFactory,{
  193. visible: viewModel.viewModeInPopup,
  194. dxDataSource: selectedCheckGroupDataSource,
  195. })),
  196. template: 'checkGroup'
  197. },
  198. {
  199. dataModel: dataModel,
  200. viewModel: viewModel,
  201. template: 'schedule'
  202. }
  203. ];
  204. function getPostDataFromSelectedItem() {
  205. var items = viewModel.gridView().getSelectedRowsData();
  206. var postData = [];
  207. $.each( items, function( i, item ) {
  208. postData.push( getPostData( $KoValue( item.SiteId ), $KoValue( item.ScheduleId ) ) );
  209. } );
  210. console.log( postData );
  211. return postData;
  212. }
  213. function getPostData(siteId, scheduleId) {
  214. return {
  215. SiteId: siteId,
  216. ScheduleId: scheduleId,
  217. UserId: BWA.UserInfo.UserId(),
  218. };
  219. }
  220. function postConfirm(postData) {
  221. BemsWebApplication.api.post( 'FmsFacilitySchedule/Confirm', postData ).done( function() {
  222. utils.toast.show( '확정 작업이 성공하였습니다.' );
  223. viewModel.refreshList();
  224. });
  225. }
  226. function postCancelConfirm(postData) {
  227. BemsWebApplication.api.post( 'FmsFacilitySchedule/CancelConfirmed', postData ).done( function() {
  228. utils.toast.show( '확정 취소 작업이 성공하였습니다.' );
  229. viewModel.refreshList();
  230. });
  231. }
  232. viewModel.buttonConfirmSelection = function() {
  233. var postData = getPostDataFromSelectedItem();
  234. postConfirm( postData );
  235. };
  236. viewModel.buttonCancelSelection = function() {
  237. var postData = getPostDataFromSelectedItem();
  238. postCancelConfirm( postData );
  239. };
  240. return viewModel;
  241. };