BemsWebApplication.PatrolSchedule = function( params, viewInfo) { "use strict"; var patrolgroupDataSource = BemsWebApplication.db.createDataSource( 'CmPatrolGroup', true ), patrolcourseDataSource = BemsWebApplication.db.createDataSource('CmPatrolCourse', true), patrolplanDataSource = BemsWebApplication.db.createDataSource('CmPatrolPlan', true); var patrolgroups = ko.observableArray(), patrolcourses = ko.observableArray(), patrolplans = ko.observableArray(); var patrolgroupsForSearch = ko.observableArray(), patrolcoursesForSearch = ko.observableArray(), patrolplansForSearch = ko.observableArray(), patrolgroupIdForSerach = ko.observable(), patrolcourseIdForSerach = ko.observable(), patrolplanIdForSerach = ko.observable(), defaultSearchPatrolGroupArray = $SearchView.createDefaultArray('PatrolGroupId'), defaultSearchPatrolCourseArray = $SearchView.createDefaultArray('PatrolCourseId'), defaultSearchPatrolPlanArray = $SearchView.createDefaultArray('PatrolPlanId'); var deferredForSearch = new $.Deferred(); /* function handleBuildingInSearchView(e) { if( e.value === 0 ) { floorsForSearch( getDefaultFloorForSearch() ); } else { BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch() ); } floorIdForSerach( 0 ); }*/ var viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'CmPatrolSchedule', { rowAlternationEnabled: true, /* editing: { editMode: 'batch', editEnabled: true, //removeEnabled: true, //insertEnabled: true },*/ dataSourceOptions: { select: ['SiteId', 'PlanId', 'ScheduleId', 'Name', 'ScheduleDesc', 'inDate', 'patrolDateTime', 'CmPatrolPlan/Name', 'CmPatrolPlan/CmPatrolGroup/Name', 'CmPatrolPlan/CmPatrolCourse/Name'], //select: ['SiteId', 'PlanId', 'ScheduleId', 'Name', 'ScheduleDesc', 'inDate', 'patrolDateTime', 'CmPatrolPlan/Name', 'CmPatrolPlan/CmPatrolGroup/Name', 'CmPatrolPlan/CmPatrolCourse/Name'], expand: ['CmPatrolPlan', 'CmPatrolPlan/CmPatrolGroup', 'CmPatrolPlan/CmPatrolCourse'], extendOptions: { forceOriginalField: true, } }, columns: [ { dataField: 'ScheduleId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'Name', caption: '순찰일정명', width: '30%', alignment: 'center' }, { dataField: 'patrolDateTime', caption: '순찰예정시각', width: '25%', alignment: 'center', customizeText: function (cellInfo) { return $G.dateTime(cellInfo.value); } }, { dataField: 'CmPatrolPlan/Name', caption: '순찰계획명', width: '20%', alignment: 'center' }, //{ dataField: 'CmPatrolPlan/CmPatrolGroup/Name', caption: '순찰조', width: '20%', alignment: 'center' }, //{ dataField: 'CmPatrolPlan/CmPatrolCourse/Name', caption: '순찰코스', width: '20%', alignment: 'center' }, { dataField: 'ScheduleDesc', caption: '비고', width: '30%', alignment: 'center' }, /* { dataField: 'inDate', caption: '최종변경일', width: '10%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } },*/ ], popupWidth: 580, promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ //{ id: 'PatrolGroupId', ignoreValue: 0, defaultValue: 0, value: patrolgroupIdForSerach, dataSource: patrolgroupsForSearch, handleChangedValue: handleBuildingInSearchView }, { id: 'PlanId', ignoreValue: 0, defaultValue: 0, value: patrolplanIdForSerach, dataSource: patrolplansForSearch }, //{ id: 'CourseId', ignoreValue: 0, defaultValue: 0, value: patrolcourseIdForSerach, dataSource: patrolcoursesForSearch }, { id: 'Name' } ], handleViewShowing: function () { patrolplanDataSource.load().done(function (pgResults) { patrolplans(pgResults); patrolplansForSearch(defaultSearchPatrolPlanArray.slice(0).concat(pgResults)); patrolplanIdForSerach(0); patrolgroupDataSource.load().done( function( pgResults ) { patrolgroups ( pgResults ); patrolgroupsForSearch(defaultSearchPatrolGroupArray.slice(0).concat(pgResults)); patrolgroupIdForSerach(0); patrolcourseDataSource.load().done(function (pgResults) { patrolcourses(pgResults); patrolcoursesForSearch(defaultSearchPatrolCourseArray.slice(0).concat(pgResults)); patrolcourseIdForSerach(0); deferredForSearch.resolve(); }); }); }); }, handleDataGridRowClick: function (id,dataGrid,clickRow,popupVisible) { dataGrid.clearSelection(); viewModel.isNewInPopup(false); // var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.PatrolPlanName = $KoSet(dataModel.PatrolPlanName, data['CmPatrolPlan/Name']); //dataModel.PatrolGroupName = $KoSet(dataModel.PatrolGroupName, data['CmPatrolGroup/Name']); //dataModel.PatrolCourseName = $KoSet(dataModel.PatrolCourseName, data['CmPatrolCourse/Name']); popupVisible(true); }, handleAfterLoadingModelByKey: function( data, dataViewModel, isNewInPopup ) { //if( isNewInPopup() == false ) { // BWA.DataUtil.setArrayDataSourceFilter(patrolgroupDataSource, 'GroupId', dataViewModel.GroupId(), patrolgroups); //BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors); //} }, viewHidden: function() { $SearchView.visibleObservable(false); visiblePopup(false); }, handlePopupShowing: function (isNewInPopup, dataViewModel, selectedData) { if (isNewInPopup()) { dataViewModel.patrolDateTime(new Date()); } }, handleBeforeDelete: function (db) { /* var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel'](); dataViewModel.SiteId = db.SiteId; dataViewModel.BuildingId = db.BuildingId; dataViewModel.FloorId = db.FloorId; dataViewModel.ZoneId = db.ZoneId; var promise = BemsWebApplication.api.post('BemsMonitoringPoint/RemoveZoneTempHumiSet', dataViewModel); promise.done(function () { ; });*/ }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { dataModel.inDate(new Date()); var dfd = $.Deferred(); //alert(dataModel.Name()); if (_.isEmpty(dataModel.Name()) || dataModel.patrolDateTime() == null || dataModel.PlanId() == null) dfd.resolve(false, '(*) 표시 항목은 필수 입력 사항 입니다!'); return dfd.resolve(true); }, beforeUpdateDataViewModel: function () { //handlePopupButtonSave: function () { if (_.isEmpty(viewModel.dataModel.Name())) { utils.toast.show('순찰일정명이 공백입니다.', 'error'); return 0; } if (viewModel.dataModel.patrolDateTime() == null) { utils.toast.show('순찰시간이 공백입니다.', 'error'); return 0; } if (viewModel.dataModel.PlanId() == null) { utils.toast.show('순찰계획이 공백입니다.', 'error'); return 0; } // 수정시에 시간변경 viewModel.dataModel.inDate(new Date()); return 2; }, handleAfterInsert: function (db) { /* var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel'](); dataViewModel.SiteId = db.SiteId; dataViewModel.BuildingId = db.BuildingId; dataViewModel.FloorId = db.FloorId; dataViewModel.ZoneId = db.ZoneId; var promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumiSet', dataViewModel); promise.done(function () { ; });*/ }, } ); /* function getDefaultFloorForSearch() { return $SearchView.createDefaultArray( 'FloorId' ); } floorDataSource.filter('BuildingId', -1); */ // 콤보, text 등록먼저후 생기는 팝업에서 안보이는 문제해결 viewModel.dataModel.PatrolPlanName = ko.observable(); //viewModel.dataModel.PatrolGroupName = ko.observable(); //viewModel.dataModel.PatrolCourseName = ko.observable(); viewModel.patrolgroups = patrolgroups; viewModel.patrolcourses = patrolcourses; viewModel.patrolplans = patrolplans; /* viewModel.popupInsertButtonOptions.action = function () { alert('insett'); }*/ return viewModel; };