BemsWebApplication.SearchCheckSchedule = function(params, viewInfo) { "use strict"; var cycleTypeClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeCycleType', true, true), businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true), checkScheduleDataSource = BemsWebApplication.db.createDataSource('FmsFacilitySchedule', true); var searchCycleTypes = ko.observableArray(), searchBusinessFields = ko.observableArray(), selectedDate = ko.observable(), selectedSchedules = ko.observableArray(); var scheduleCalendar = null; var checkScheduleManager = utils.checkSchedule.createScheduleManager(); function loadSchedules(searchFilter) { var date = scheduleCalendar.getDate().clone().endOf('month'); defaultFilter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['StartDate', '<=', date.toDate()], 'and', ['ConfirmedUserId', '<>', null] ]); if ($IsValid(searchFilter)) { checkScheduleDataSource.filter(defaultFilter().slice(0).concat(searchFilter)); } $.when(checkScheduleDataSource.load(), checkScheduleManager.load(scheduleCalendar.getDate())).done(function(result) { var events = []; $.each(result[0], function(i, schedule) { var s = checkScheduleManager.generateScheduleEvents(date, schedule); events.splice.apply(events, [events.length, 0].concat(s)); }); scheduleCalendar.updateEvents(events); }); } var scheduleCalendarOptions = { //selectable: false, height: 680, editable: false, select: function( start, end ) { var schedules = []; scheduleCalendar.getEvents($G.date( start ), function(event) { schedules.push(event); }); if (schedules.length === 0) { utils.toast.show('예정된 점검이 없습니다.', 'wanring'); } else { selectedSchedules(schedules); selectedDate(start); viewModel.workOrderGenerationPopup.show(); } }, changedMonth: function(view) { if (scheduleCalendar === null) return; loadSchedules(); }, }; function refreshList() { } function handleViewShown() { if (!scheduleCalendar) { scheduleCalendar = utils.fullCalendar.create('scheduleCalendar', scheduleCalendarOptions); } $.when(cycleTypeClassDataSource.load(), businessFieldDataSource.load()).done(function(result1, result2) { searchCycleTypes($SearchView.createDefaultArray('CycleTypeId').slice(0).concat(result1[0])); searchBusinessFields($SearchView.createDefaultArray('BusinessFieldId').slice(0).concat(result2[0])); }); loadSchedules(); $SearchView.setPopupVisibleObservable(popupSearchViewVisible); $SideMenu.showSideMenuIfWill(params.view); } var defaultFilter = ko.observable(); var popupSearchViewVisible = ko.observable(); var viewModel = { viewShown: handleViewShown, refreshList: refreshList, }; $SearchView.setupInView(viewModel, { searchViewItems: [ { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: searchBusinessFields }, { id: 'CycleTypeId', ignoreValue: 0, defaultValue: 0, dataSource: searchCycleTypes }, { id: 'Name' } ], }, popupSearchViewVisible, null, function(filter) { loadSchedules(filter); }); viewModel.workOrderGenerationPopup = BWA.Popup.WorkOrderGenerationPopup(viewModel, selectedDate, selectedSchedules, viewInfo); return viewModel; };