BemsWebApplication.PatrolReport = function (params, viewInfo) { "use strict"; var patrolgroupDataSource = BemsWebApplication.db.createDataSource('CmPatrolGroup', true), patrolcourseDataSource = BemsWebApplication.db.createDataSource('CmPatrolCourse', true); //var possInView = ko.observableArray(); 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(); var eq = BWA.DataUtil.constructEqualFilter; //var budgetDataSource = BWA.DataUtil.createDataSource({ // dataSourceOptions: { // store: BemsWebApplication.odata.CmPatrolHistoryEx, // select: ['SiteId'], // filter: ['SiteId', '=', BWA.UserInfo.SiteId()] // } //}); /* function handleBuildingInSearchView(e) { if( e.value === 0 ) { floorsForSearch( getDefaultFloorForSearch() ); } else { BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch() ); } floorIdForSerach( 0 ); }*/ /*var PatrolHistoryDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { select: ['SiteId', 'PatrolHistoryId', 'ScheduleId', 'startDate', 'endDate', 'resultTypeId', 'resultDesc', 'CmPatrolSchedule/Name', 'CmPatrolSchedule/CmPatrolPlan/Name', 'CmPatrolSchedule/CmPatrolPlan/CmPatrolGroup/Name', 'CmPatrolSchedule/CmPatrolPlan/CmPatrolCourse/Name', 'CmPatrolType/Name', 'CmPatrolSchedule/CmPatrolPlan/CourseId', 'CmPatrolSchedule/CmPatrolPlan/GroupId'], expand: ['CmPatrolSchedule', 'CmPatrolSchedule/CmPatrolPlan', 'CmPatrolSchedule/CmPatrolPlan/CmPatrolGroup', 'CmPatrolSchedule/CmPatrolPlan/CmPatrolCourse', 'CmPatrolType'], extendOptions: { forceOriginalField: true }, filter: [ ['SiteId', '=', 0] // 초기화를 위해서 0 ] } }, 'CmPatrolHistory');*/ /* var PatrolCoursePosDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { select: ['SiteId', 'mId', 'PatrolHistoryId', 'PosId', 'PatrolTime', 'term', 'resultType', 'CmPatrolPos/Name', 'CmPatrolType/Name' ], expand: ['CmPatrolPos', 'CmPatrolType', 'CmPatrolPos/CmBuilding', 'CmPatrolPos/CmFloor'], extendOptions: { forceOriginalField: true }, filter: [ ['SiteId', '=', 0] // 4 //eq('SiteId', 0), // 초기화를 위해서 0 // eq('SiteId', BWA.UserInfo.SiteId()), // and, // ['FmsWorkRequest/WorkProgressId', '=', $Code.WorkProgress.WORKING] // 4 // //, and, ['FmsWorkRequest/WorkProgressId', '<=', 5] ] } }, 'CmPatrolHistoryPos'); var menuDataGridOptions = utils.datagrid.defaultOptions({ dataSource: PatrolCoursePosDataSource, width: '100%', height: 400, datagridId: 'gridContainer2', dbId: 'CmPatrolHistoryPos', useNumberColumn: true, columns: [ { dataField: 'mId', caption: '순서', width: '10%', alignment: 'center', allowFiltering: false, sortOrder: 'asc' }, { dataField: 'CmPatrolPos/Name', caption: '순찰지점', width: '30%', }, { dataField: 'PatrolTime', caption: '순찰시각', width: '25%', alignment: 'right', customizeText: function (cellInfo) { return $G.dateTime(cellInfo.value); } }, { dataField: 'term', caption: '이동시간(분)', width: '15%', alignment: 'left' }, { dataField: 'CmPatrolType/Name', caption: '결과', alignment: 'center' }, ], paging: { enabled: false, pageSize: 17 }, pager: { //allowedPageSizes: true, showPageSizeSelector: true, allowedPageSizes: [17, 20], visible: false }, rowPrepared: function (rowElement, rowInfo) { if (rowInfo.rowType == 'data') { var dataGrid = $('#gridContainer2').dxDataGrid('instance'); } }, }); */ var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmPatrolHistoryEx', { rowAlternationEnabled: true, dataSourceOptions: { store: BemsWebApplication.odata.CmPatrolHistoryEx, select: ['SiteId', 'PatrolHistoryId', 'startDate', 'TotalCnt', 'OkCnt', 'ErrorCnt', 'TotalTimeMin'], filter: eq('SiteId', BWA.UserInfo.SiteId()) }, columns: [ // { dataField: 'SiteId', caption: '순찰 건수', width: '15%', alignment: 'center' }, { dataField: 'PatrolHistoryId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'startDate', caption: '순찰일', width: '20%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'TotalCnt', caption: '순찰 건수', width: '15%', alignment: 'center' }, { dataField: 'OkCnt', caption: '정상 건수', width: '15%', alignment: 'center' }, { dataField: 'ErrorCnt', caption: '이상 건수', width: '15%', alignment: 'center' }, { dataField: 'TotalTimeMin', caption: '순찰시간', width: '15%', alignment: 'center', customizeText: function (cellInfo) { var hours = Math.round(cellInfo.value / 60); var minutes = cellInfo.value % 60; return hours + ":" + minutes; } }, /* { dataField: 'startDate', caption: '순찰일', width: '10%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } },*/ /* { dataField: 'startDate', caption: '순찰시작시간', width: '20%', alignment: 'center', customizeText: function (cellInfo) { return $G.dateTime(cellInfo.value); } }, { dataField: 'endDate', caption: '순찰종료시간', width: '20%', alignment: 'center', customizeText: function (cellInfo) { return $G.dateTime(cellInfo.value); } }, { dataField: 'CmPatrolType/Name', caption: '결과', width: '20%', alignment: 'center' }, { dataField: 'resultDesc', caption: '특이사항', width: '30%', alignment: 'center' }, */ ], paging: { enabled: true, pageSize: 18 }, pager: { }, // 2019.04.16. 엑셀출력기능 추가 ~~~ "export": { enabled: true, fileName: '순찰 보고서', }, onExporting: function (e) { e.component.columnOption("PatrolHistoryId", "visible", false); }, onExported: function (e) { e.component.columnOption("PatrolHistoryId", "visible", true); }, // ~~~ 2019.04.16. 엑셀출력기능 추가 popupWidth: 720, promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: _.compact([ //{ id: 'PatrolGroupId', ignoreValue: 0, defaultValue: 0, value: patrolgroupIdForSerach, dataSource: patrolgroupsForSearch, handleChangedValue: handleBuildingInSearchView }, // { id: 'CmPatrolPlan/GroupId', ignoreValue: 0, defaultValue: 0, value: patrolgroupIdForSerach, dataSource: patrolgroupsForSearch }, // { id: 'CmPatrolPlan/CourseId', ignoreValue: 0, defaultValue: 0, value: patrolcourseIdForSerach, dataSource: patrolcoursesForSearch }, // { id: 'CmPatrolPlan/Name' }, { id: 'startDate', type: 'dateRange', isOnlyDate: true }, //{ id: 'FmsWorkResult/CmUser/Name' }, ]), handleViewShowing: function () { //budgetDataSource.load().done(function (pgResults) { //}); 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['CmPatrolPlan/CmPatrolGroup/Name']); dataModel.PatrolCourseName = $KoSet(dataModel.PatrolCourseName, data['CmPatrolPlan/CmPatrolCourse/Name']); dataModel.Name = $KoSet(dataModel.Name, data['CmPatrolPlan/Name']); var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; PatrolCoursePosDataSource.filter([ eq('SiteId', data.SiteId()), and, eq('PatrolHistoryId', data.PatrolHistoryId()), ]); PatrolCoursePosDataSource.load().done(function (poss) { //possInView(poss); //$('#gridContainer2').dxDataGrid('instance').refresh(); //viewModel.visibleDeleteButton(false); //popupVisible(true); }); */ var siteId = data.SiteId(); var formatStr = 'YYYY-MM-DD HH:mm:ss'; var startDate = moment(data.startDate()).startOf('day').format(formatStr); var endDate = moment(data.startDate()).endOf('day').format(formatStr); var url = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).urlFor('service'); var url = url + '/Report/PatrolReportView.aspx' + '?SiteId=' + siteId + '&StartDate=' + startDate + '&EndDate=' + endDate; window.open(url); /*var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; //tempDate = PatrolHistoryDataSource.filter([ eq('SiteId', data.SiteId()), and, ['startDate', '>=', moment(data.startDate()).startOf('day').toDate()], and, ['startDate', '<=', moment(data.startDate()).endOf('day').toDate()], ]); PatrolHistoryDataSource.load().done(function (poss) { //possInView(poss); //$('#gridContainer2').dxDataGrid('instance').refresh(); //viewModel.visibleDeleteButton(false); //popupVisible(true); // 종화 작업을 위한 확인 코드 시작 2016 var hdata = poss[0]; // 첫번째 순번 -> 알아서 작성 poss 갯수만큼 // 순찰계획명 alert(hdata['CmPatrolSchedule/Name']()); // 순찰조 alert(hdata['CmPatrolSchedule/CmPatrolPlan/CmPatrolGroup/Name']()); // 순찰코스 alert(hdata['CmPatrolSchedule/CmPatrolPlan/CmPatrolCourse/Name']()); // 시간 alert(hdata.startDate()); // 시간 alert(hdata.endDate()); // 결과 alert(hdata['CmPatrolType/Name']()); // 여기서 report 링크 !! }); */ }, 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()); }*/ }, 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.term() == 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.term() == 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.PatrolGroupName = ko.observable(); viewModel.dataModel.PatrolCourseName = ko.observable(); viewModel.dataModel.Name = ko.observable(); //viewModel.dataModel.GroupId = ko.observable(); //viewModel.dataModel.CourseId= ko.observable(); viewModel.patrolgroups = patrolgroups; viewModel.patrolcourses = patrolcourses; //viewModel.menuDataGridOptions = menuDataGridOptions; /* viewModel.popupInsertButtonOptions.action = function () { alert('insett'); }*/ return viewModel; };