df96c3d45bed19ff2fdbdbabb2645461a7bbab08.svn-base 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. BemsWebApplication.SearchCheckSchedule = function(params, viewInfo) {
  2. "use strict";
  3. var cycleTypeClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeCycleType', true, true),
  4. businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),
  5. checkScheduleDataSource = BemsWebApplication.db.createDataSource('FmsFacilitySchedule', true);
  6. var searchCycleTypes = ko.observableArray(),
  7. searchBusinessFields = ko.observableArray(),
  8. selectedDate = ko.observable(),
  9. selectedSchedules = ko.observableArray();
  10. var scheduleCalendar = null;
  11. var checkScheduleManager = utils.checkSchedule.createScheduleManager();
  12. function loadSchedules(searchFilter) {
  13. var date = scheduleCalendar.getDate().clone().endOf('month');
  14. defaultFilter([
  15. ['SiteId', '=', BWA.UserInfo.SiteId()],
  16. 'and',
  17. ['StartDate', '<=', date.toDate()],
  18. 'and',
  19. ['ConfirmedUserId', '<>', null]
  20. ]);
  21. if ($IsValid(searchFilter)) {
  22. checkScheduleDataSource.filter(defaultFilter().slice(0).concat(searchFilter));
  23. }
  24. $.when(checkScheduleDataSource.load(), checkScheduleManager.load(scheduleCalendar.getDate())).done(function(result) {
  25. var events = [];
  26. $.each(result[0], function(i, schedule) {
  27. var s = checkScheduleManager.generateScheduleEvents(date, schedule);
  28. events.splice.apply(events, [events.length, 0].concat(s));
  29. });
  30. scheduleCalendar.updateEvents(events);
  31. });
  32. }
  33. var scheduleCalendarOptions = {
  34. //selectable: false,
  35. height: 680,
  36. editable: false,
  37. select: function( start, end ) {
  38. var schedules = [];
  39. scheduleCalendar.getEvents($G.date( start ), function(event) {
  40. schedules.push(event);
  41. });
  42. if (schedules.length === 0) {
  43. utils.toast.show('예정된 점검이 없습니다.', 'wanring');
  44. }
  45. else {
  46. selectedSchedules(schedules);
  47. selectedDate(start);
  48. viewModel.workOrderGenerationPopup.show();
  49. }
  50. },
  51. changedMonth: function(view) {
  52. if (scheduleCalendar === null) return;
  53. loadSchedules();
  54. },
  55. };
  56. function refreshList() {
  57. }
  58. function handleViewShown() {
  59. if (!scheduleCalendar) {
  60. scheduleCalendar = utils.fullCalendar.create('scheduleCalendar', scheduleCalendarOptions);
  61. }
  62. $.when(cycleTypeClassDataSource.load(), businessFieldDataSource.load()).done(function(result1, result2) {
  63. searchCycleTypes($SearchView.createDefaultArray('CycleTypeId').slice(0).concat(result1[0]));
  64. searchBusinessFields($SearchView.createDefaultArray('BusinessFieldId').slice(0).concat(result2[0]));
  65. });
  66. loadSchedules();
  67. $SearchView.setPopupVisibleObservable(popupSearchViewVisible);
  68. $SideMenu.showSideMenuIfWill(params.view);
  69. }
  70. var defaultFilter = ko.observable();
  71. var popupSearchViewVisible = ko.observable();
  72. var viewModel = {
  73. viewShown: handleViewShown,
  74. refreshList: refreshList,
  75. };
  76. $SearchView.setupInView(viewModel, {
  77. searchViewItems: [
  78. { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: searchBusinessFields },
  79. { id: 'CycleTypeId', ignoreValue: 0, defaultValue: 0, dataSource: searchCycleTypes },
  80. { id: 'Name' }
  81. ],
  82. }, popupSearchViewVisible, null, function(filter) {
  83. loadSchedules(filter);
  84. });
  85. viewModel.workOrderGenerationPopup = BWA.Popup.WorkOrderGenerationPopup(viewModel, selectedDate, selectedSchedules, viewInfo);
  86. return viewModel;
  87. };