BemsWebApplication.PatrolPlan = function (params, viewInfo) { "use strict"; var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; var SiteId = BWA.UserInfo.SiteId(); var patrolgroupDataSource = BemsWebApplication.db.createDataSource('CmPatrolGroup', true), patrolcourseDataSource = BemsWebApplication.db.createDataSource('CmPatrolCourse', true); patrolgroupDataSource.filter([ eq('SiteId', SiteId) ]); patrolcourseDataSource.filter([ eq('SiteId', SiteId) ]); var CmPatrolPlanDataSource = BemsWebApplication.db.createDataSource('CmPatrolPlan'); var PatrolPlanInfo = ko.observableArray(); var RowName; var patrolgroups = ko.observableArray(), patrolcourses = ko.observableArray(); var patrolgroupsForSearch = ko.observableArray(), patrolcoursesForSearch = ko.observableArray(), patrolgroupIdForSerach = ko.observable(), patrolcourseIdForSerach = ko.observable(), defaultSearchPatrolGroupArray = $SearchView.createDefaultArray('PatrolGroupId'), defaultSearchPatrolCourseArray = $SearchView.createDefaultArray('PatrolCourseId'); 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, 'CmPatrolPlan', { rowAlternationEnabled: true, /* editing: { editMode: 'batch', editEnabled: true, //removeEnabled: true, //insertEnabled: true },*/ dataSourceOptions: { select: ['SiteId', 'PatrolPlanId', 'GroupId', 'CourseId', 'Name', 'PlanDesc', 'term', 'inDate', 'CmPatrolGroup/Name', 'CmPatrolCourse/Name'], expand: ['CmPatrolGroup', 'CmPatrolCourse'], extendOptions: { forceOriginalField: true, }, filter: [ ['SiteId', '=', SiteId] ] }, columns: [ { dataField: 'PatrolPlanId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'Name', caption: '순찰계획명', width: '30%', alignment: 'center' }, { dataField: 'CmPatrolGroup/Name', caption: '순찰조', width: '20%', alignment: 'center' }, { dataField: 'CmPatrolCourse/Name', caption: '순찰코스', width: '20%', alignment: 'center' }, // { dataField: 'term', caption: '순찰주기(시간)', width: '10%', alignment: 'center' }, { dataField: 'PlanDesc', 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: 'GroupId', ignoreValue: 0, defaultValue: 0, value: patrolgroupIdForSerach, dataSource: patrolgroupsForSearch }, { id: 'CourseId', ignoreValue: 0, defaultValue: 0, value: patrolcourseIdForSerach, dataSource: patrolcoursesForSearch }, { id: 'Name' } ], handleViewShowing: function () { 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.PatrolGroupName = $KoSet(dataModel.PatrolGroupName, data['CmPatrolGroup/Name']); dataModel.PatrolCourseName = $KoSet(dataModel.PatrolCourseName, data['CmPatrolCourse/Name']); //dataModel.CourseId = $KoSet(dataModel.CourseId, data.CourseId); //dataModel.GroupId = $KoSet(dataModel.GroupId, data.GroupId); RowName = data.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.inDate(new Date()); }*/ CmPatrolPlanDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); CmPatrolPlanDataSource.load().done(function (result) { PatrolPlanInfo(result); }); }, handleBeforeDelete: function (db) { //var parameters = { // SiteId: db.SiteId, // ScheduleId: db.ScheduleId //}; //BWA.api.post('CmPatrolSchedule/Delete', null, parameters).done(function () { //}); }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { dataModel.inDate(new Date()); var dfd = $.Deferred(); var isDuplicated = false; for (var i = 0; i < PatrolPlanInfo().length; i++) { if (dataModel.Name() == PatrolPlanInfo()[i].Name()) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(dataModel.Name()) || dataModel.term() == null) return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)'); else { if (isDuplicated) return dfd.resolve(false, '이미 동일 정보가 존재합니다.'); else return dfd.resolve(true); } }, beforeUpdateDataViewModel: function () { // 수정시에 시간변경 viewModel.dataModel.inDate(new Date()); var isDuplicated = false; for (var i = 0; i < PatrolPlanInfo().length; i++) { if (viewModel.dataModel.Name() == PatrolPlanInfo()[i].Name() && (RowName() != PatrolPlanInfo()[i].Name())) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name()) || _.isEmpty(viewModel.dataModel.Name()) || viewModel.dataModel.term() == null) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('이미 동일 이름이 존재합니다.', 'error'); return 0; } else 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.PatrolGroupName = ko.observable(); viewModel.dataModel.PatrolCourseName = ko.observable(); //viewModel.dataModel.GroupId = ko.observable(); //viewModel.dataModel.CourseId= ko.observable(); viewModel.patrolgroups = patrolgroups; viewModel.patrolcourses = patrolcourses; /* viewModel.popupInsertButtonOptions.action = function () { alert('insett'); }*/ return viewModel; };