123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 |
- BemsWebApplication.RegisterCheckSchedule = function(params, viewInfo) {
- "use strict";
- var cycleTypeClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeCycleType', true, true),
- cycleUnitClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeCycleUnit', true, true),
- holidayClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeHoliday', true, true),
- orderClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeOrder', true, true),
- businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true);
- var checkScheduleManager = utils.checkSchedule.createScheduleManager();
- var cycleTypes = ko.observableArray(),
- cycleUnits = ko.observableArray(),
- holidayTypes = ko.observableArray(),
- orders = ko.observableArray(),
- businessFields = ko.observableArray();
- var searchCycleTypes = ko.observableArray(),
- searchBusinessFields = ko.observableArray();
- var deferredForSearch = new $.Deferred();
- var scheduleMultiViewVisible = ko.observable(false),
- isRegularlyCycleType = ko.observable(false);
- var selectedScheduleId;
- var selectedScheduleName = ko.observable();
- var scheduleCalendar = null;
- var exceptionDays = [];
- var removedDays = [];
- var scheduleCalendarOptions = {
- selectable: false,
- //select: function( start, end ) {
- // var selectedDate = $G.date( start );
- // if( loadedExceptionDays.indexOf( selectedDate ) < 0 ) {
- // var index = exceptionDays.indexOf( selectedDate );
- // if( index < 0 ) {
- // return;
- // }
- // exceptionDays.splice( index, 1 );
- // }
- // removedDays.push( selectedDate );
- // scheduleCalendar.pushEvent( selectedScheduleName(), start, true );
- //},
- editable: true,
- changedMonth: function(view) {
- if (scheduleCalendar === null) return;
- var date = view.calendar.getDate();
- var events = checkScheduleManager.generateScheduleEvents(date, viewModel.dataModel);
- scheduleCalendar.updateEvents(events);
- },
- eventClick: function(event) {
- if (viewModel.isEditModeInPopup() == false) return;
- var formattedDate = $G.date(event.start);
- scheduleCalendar.removeEvent(event.start, undefined, true);
- var index;
- if (event.isException) {
- removedDays.push(formattedDate);
- index = exceptionDays.indexOf(formattedDate);
- if (index >= 0) {
- exceptionDays.splice(index, 1);
- }
- scheduleCalendar.pushEvent(selectedScheduleName(), event.start, true);
- }
- else {
- exceptionDays.push(formattedDate);
- index = removedDays.indexOf(formattedDate);
- if (index >= 0) {
- removedDays.splice(index, 1);
- }
- scheduleCalendar.pushExceptionEvent(event.start, true);
- }
- },
- };
- var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsFacilitySchedule', {
- dataSourceOptions: {
- select: ['SiteId', 'ScheduleId', 'BusinessFieldId', 'CycleTypeId', 'Name', 'ConfirmedUserId', 'IsUse', 'CycleSize', 'StartDate', 'CmBusinessField/Name', 'FmsFacilityCodeCycleType/Name', 'FmsFacilityCodeCycleUnit/Name', 'FmsFacilityCodeHoliday/Name', 'FmsFacilityCodeOrder/Name'],
- expand: ['CmBusinessField', 'FmsFacilityCodeCycleType', 'FmsFacilityCodeCycleUnit', 'FmsFacilityCodeHoliday', 'FmsFacilityCodeOrder']
- },
- columns: [
- { dataField: 'Number', caption: $G('number'), width: '8%', alignment: 'center', allowFiltering: false },
- { dataField: 'CmBusinessField_Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center', allowFiltering: false },
- { dataField: 'Name', caption: $G('facilityCheckScheduleName'), width: '18%', alignment: 'center', allowFiltering: false },
- { dataField: 'FmsFacilityCodeCycleType_Name', caption: $G('facilityCheckScheduleCycleTypeName'), width: '10%', alignment: 'center' },
- { dataField: 'FmsFacilityCodeCycleUnit_Name', caption: $G('facilityCheckScheduleCycleUnitName'), width: '10%', alignment: 'center' },
- { dataField: 'FmsFacilityCodeHoliday_Name', caption: $G('facilityCheckScheduleHolidayName'), width: '10%', alignment: 'center' },
- { dataField: 'FmsFacilityCodeOrder_Name', caption: $G('facilityCheckScheduleOrderName'), width: '12%', alignment: 'center' },
- {
- dataField: 'StartDate', caption: $G('facilityCheckScheduleStartDate'), width: '10%', alignment: 'center', allowFiltering: false,
- customizeText: function(cellInfo) {
- return $G.date(cellInfo.value);
- }
- },
- {
- dataField: 'ConfirmedUserId', caption: $G('facilityCheckScheduleIsConfirm'), width: '10%', alignment: 'center', allowFiltering: false,
- customizeText: function(cellInfo) {
- return $G.isConfirm(cellInfo.value);
- }
- },
- utils.datagrid.columnIsUse('10%')
- ],
- promiseDataInSearchView: deferredForSearch.promise(),
- searchViewItems: [
- { id: 'CycleTypeId', ignoreValue: 0, defaultValue: 0, dataSource: searchCycleTypes },
- { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: searchBusinessFields },
- { id: 'Name' }],
- popupWidth: '740px',
- wordWrapEnabled: true,
- cellPrepared: function(cellElement, cellInfo) {
- switch (cellInfo.columnIndex) {
- case 4:
- {
- if (cellInfo.data.CycleTypeId() === $Code.CycleType.Regularly) {
- $(cellElement).text(cellInfo.data.CycleSize() + ' ' + cellInfo.data.FmsFacilityCodeCycleUnit_Name());
- }
- else {
- $(cellElement).text('-');
- }
- break;
- }
- }
- },
- handleViewShowing: function() {
- $.when(cycleTypeClassDataSource.load(), businessFieldDataSource.load()).done(function(result1, result2) {
- cycleTypes(result1[0]);
- searchCycleTypes($SearchView.createArrayOfSelectBox('CycleTypeId', cycleTypes()));
- businessFields(result2[0]);
- searchBusinessFields($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFields()));
- deferredForSearch.resolve();
- });
- },
- handleAfterLoadingModelByKey: function(data) {
- var dataModel = viewModel.dataModel;
- dataModel.CycleSizeText(data.CycleSize + ' ' + dataModel.CycleUnitName());
- },
- handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) {
- dataGrid.clearSelection();
- var data = clickRow.data;
- var dataModel = viewModel.dataModel;
- dataModel.CycleTypeName = $KoSet(dataModel.CycleTypeName, data.FmsFacilityCodeCycleType_Name);
- dataModel.CycleUnitName = $KoSet(dataModel.CycleUnitName, data.FmsFacilityCodeCycleUnit_Name);
- dataModel.HolidayName = $KoSet(dataModel.HolidayName, data.FmsFacilityCodeHoliday_Name);
- dataModel.OrderName = $KoSet(dataModel.OrderName, data.FmsFacilityCodeOrder_Name);
- dataModel.BusinessFieldName = $KoSet(dataModel.OrderName, data.CmBusinessField_Name);
- selectedScheduleId = data.ScheduleId();
- selectedScheduleName = $KoSet(selectedScheduleName, data.Name());
- selectedCheckGroupDataSource.filter([
- ['SiteId', '=', BWA.UserInfo.SiteId()],
- 'and',
- ['ScheduleId', '=', selectedScheduleId]
- ]);
- popupVisible(true);
- },
- handleSaveButtonInPopup: function(isInsert) {
- //var dataGrid = $( '#gridCheckGroupContainer' ).dxDataGrid( 'instance' );
- //var items = dataGrid.getSelectedRowsData();
- //var postData = [];
- //$.each( items, function( i, item ) {
- // postData.push( {
- // SiteId: $KoValue( item.SiteId ),
- // ScheduleId: selectedScheduleId,
- // CheckGroupId: $KoValue( item.CheckGroupId )
- // } );
- //} );
- //promises.push( BemsWebApplication.api.post( 'FmsFacilityScheduleToCheckGroup', postData ) );
- var promises = [];
- promises.push(BemsWebApplication.api.postWithDataGrid('FmsFacilityScheduleToCheckGroup', 'gridCheckGroupContainer', {
- SiteId: BWA.UserInfo.SiteId(),
- ScheduleId: selectedScheduleId,
- CheckGroupId: null
- }));
- if (exceptionDays.length > 0) {
- var exceptionViewModel = new BemsWebApplication.FmsFacilityScheduleCheckExceptionDateViewModel();
- exceptionViewModel.SiteId(BWA.UserInfo.SiteId());
- exceptionViewModel.ScheduleId(selectedScheduleId);
- $.each(exceptionDays, function(i, formattedDate) {
- // if( loadedExceptionDays.indexOf( formattedDate ) >= 0 ) return true;
- exceptionViewModel.ExceptionDate(moment(formattedDate).toDate());
- promises.push(BemsWebApplication.db.FmsFacilityScheduleCheckExceptionDate.insert(exceptionViewModel.toJS()));
- });
- }
- if (removedDays.length > 0) {
- var removeItem = {
- SiteId: BWA.UserInfo.SiteId(),
- ScheduleId: selectedScheduleId
- };
- $.each(removedDays, function(i, formattedDate) {
- removeItem.ExceptionDate = formattedDate;
- promises.push(BemsWebApplication.db.FmsFacilityScheduleCheckExceptionDate.remove(removeItem));
- });
- }
- return $.when.apply($, promises);
- //.done( function() {
- // utils.toast.show( '일정 저장을 성공하였습니다.' );
- //} );
- },
- handlePopupShowing: function(that) {
- cycleUnitClassDataSource.load().done(function(result) {
- cycleUnits(result);
- });
- holidayClassDataSource.load().done(function(result) {
- holidayTypes(result);
- });
- orderClassDataSource.load().done(function(result) {
- orders(result);
- });
- selectedCheckGroupDataSource.load().done(function(result) {
- var dataGrid = $('#gridSelectedCheckGroupContainer').dxDataGrid('instance');
- dataGrid.refresh();
- });
- viewModel.currentTabIndex(0);
- },
- handlePopupShown: function(editMode, isNewInPopup, dataModel) {
- if (scheduleCalendar === null) {
- scheduleCalendar = utils.fullCalendar.create('scheduleCalendar', scheduleCalendarOptions);
- //scheduleCalendar = $( '#scheduleCalendar' );
- //scheduleCalendar.fullCalendar( calendarOption );
- }
- var checkGroupDataGrid = $('#gridCheckGroupContainer').dxDataGrid('instance');
- var selectedCheckGroupdDataGrid = $('#gridSelectedCheckGroupContainer').dxDataGrid('instance');
- checkGroupDataGrid.clearSelection();
- if (isNewInPopup === false) {
- var items = utils.datagrid.getItems(selectedCheckGroupdDataGrid);
- var keys = [];
- $.each(items, function(i, item) {
- keys.push({
- CheckGroupId: item.CheckGroupId(),
- SiteId: item.SiteId()
- });
- });
- checkGroupDataGrid.selectRows(keys);
- checkScheduleManager.load(scheduleCalendar.getDate(), dataModel).done(function(events) {
- scheduleCalendar.updateEvents(events);
- });
- scheduleMultiViewVisible(true);
- }
- else {
- scheduleMultiViewVisible(false);
- }
- }
- });
- viewModel.isEditModeInPopup.subscribe(function(value) {
- if (scheduleCalendar) {
- scheduleCalendar.setReadOnly(!value);
- }
- });
- viewModel.dataModel.CycleSizeText = ko.observable();
- viewModel.cycleTypes = cycleTypes;
- viewModel.cycleUnits = cycleUnits;
- viewModel.holidayTypes = holidayTypes;
- viewModel.orders = orders;
- viewModel.businessFields = businessFields;
- viewModel.dataModel.CycleTypeId.subscribe(function(cycleTypeId) {
- isRegularlyCycleType(cycleTypeId === $Code.CycleType.Regularly);
- });
- var checkGroupDataSource = $DataSource({
- dataSourceOptions: {
- store: BemsWebApplication.db.FmsFacilityScheduleCheckGroup,
- select: ['SiteId', 'CheckGroupId', 'Name', 'CmBusinessField/Name'],
- expand: ['CmBusinessField'],
- filer: [['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['IsUse', '=', true]]
- }
- });
- var selectedCheckGroupDataSource = $DataSource({
- dataSourceOptions: {
- store: BemsWebApplication.db.FmsFacilityScheduleToCheckGroup,
- select: ['SiteId', 'ScheduleId', 'CheckGroupId', 'FmsFacilityScheduleCheckGroup/Name'],
- expand: ['FmsFacilityScheduleCheckGroup']
- }
- });
- var Factory = {
- dxDataSource: checkGroupDataSource,
- columns: [
- { dataField: 'CmBusinessField_Name', caption: $G('businessFieldName'), width: '25%', alignment: 'center' },
- { dataField: 'Name', caption: $G('facilityCheckScheduleName'), width: '45%', alignment: 'center', allowFiltering: false }
- ],
- height: 360
- };
- var selectedFactory = {
- dxDataSource: selectedCheckGroupDataSource,
- columns: [
- { dataField: 'FmsFacilityScheduleCheckGroup_Name', caption: $G('facilityCheckScheduleCheckGroupName'), width: '45%', alignment: 'center', allowFiltering: false }
- ],
- height: 360
- };
- viewModel.tabsItems = [
- { text: '기본 정보' },
- { text: '점검 그룹' },
- {
- text: '계획 일정',
- visible: scheduleMultiViewVisible,
- }
- ];
- viewModel.currentTabIndex = ko.observable(0);
- var dataModel = viewModel.dataModel;
- viewModel.multiViewItems = [
- {
- dataModel: dataModel,
- viewModel: viewModel,
- template: 'generalInfo'
- },
- {
- dataModel: dataModel,
- viewModel: viewModel,
- checkGroupFactory: utils.datagrid.defaultOptions($.extend({}, Factory, {
- visible: viewModel.isEditModeInPopup,
- dxDataSource: checkGroupDataSource,
- selection: { mode: 'multiple', allowSelectAll: true },
- })),
- selectedCheckGroupFactory: utils.datagrid.defaultOptions($.extend({}, selectedFactory, {
- visible: viewModel.viewModeInPopup,
- dxDataSource: selectedCheckGroupDataSource,
- })),
- template: 'checkGroup'
- },
- {
- dataModel: dataModel,
- viewModel: viewModel,
- visible: scheduleMultiViewVisible,
- template: 'schedule'
- }
- ];
- //var events = utils.fullCalendar.generateScheduleEvents( '2014-09-10', '2014-09-02', 'test', 1, 1 );
- //console.log( events );
- viewModel.isRegularlyCycleType = isRegularlyCycleType;
- return viewModel;
- };
|