123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 |
- BemsWebApplication.ElecPeak = function (params, viewInfo) {
- "use strict";
- var and = BWA.DataUtil.andFilter;
- var dateBoxValue = ko.observable(new Date());
- var BUILDING_DEPTH = 1, FLOOR_DEPTH = 2, ZONE_DEPTH = 3;
- var CODE = $Code, FuelType = CODE.FuelType, FT = CODE.FacilityType, FC = CODE.FacilityCode, F = CODE.Formula, TIT = CODE.TimeIntervalType;
- var goal = ko.observable();
- var MaxDateTime = ko.observable(new Date());
- var MinDateTime = ko.observable(new Date());
- var MaxPeakValue = ko.observable(0);
- var MinPeakValue = ko.observable(0);
- var todayMaxPeakValue = ko.observable(0);
- var todayMinPeakValue = ko.observable(0);
- var SiteId = BWA.UserInfo.SiteId();
- var invisableLeft = ko.observable(false);
- var arrowCount = ko.observable(0);
- var visiblePopup = ko.observable(false);
- var timeTypesForSearch = ko.observableArray(), timeTypeIdForSearch = ko.observable(0);
- var timer;
- var initialized = false, shouldReload = false, dataSource;
- var realtime_search = true;
- var pointHistoryGet = new BWA.Chart.PointHistoryGet(SiteId), formulaGet = new BWA.Chart.FormulaGet(SiteId);
- var ElecPeakDataSource = BemsWebApplication.db.createDataSource('BemsPeakHistory'),
- CmSiteDataSource = BemsWebApplication.db.createDataSource('CmSite'),
- BemsPeakInfoDataSource = BemsWebApplication.db.createDataSource('BemsPeakInfo'),
- BemsPeakHistoryDailyDataSource = BemsWebApplication.db.createDataSource('BemsPeakHistoryDaily');
- var deferredForSearch = new $.Deferred();
- var deferredForLoadData = new $.Deferred();
- var chart = BWA.Chart.Instance('chartE8', 'dxChart');
- var timeBoxForSearch = BWA.SearchView.createDateTimeBox1($G.TimeTypesForMin, null, false);
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- var DataGridPopup_Visible = ko.observable(false);
- var dataArrayresult = ko.observableArray();
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- function handleSearchViewInitializeUpdate() {
- }
- function handleFacilityList() {
- viewModel.ElecPeakFacilityPopup.show(MaxDateTime);
- }
- function handleViewShown() {
- window.$SearchView.isNotUse(true);
- if (initialized === false) {
- var chartOption = BWA.ChartOptions.ElecPeak;
- chart = chart(chartOption.getChartOptionsMIN($Code.TimeType.MIN));//$Code.TimeType.MIN
- handleSearchInSearchView_renewal();
- initialized = true;
- }
- else {
- handleSearchInSearchView_renewal();
- }
- timeBoxForSearch.setDefaultDate();
- if (shouldReload) {
- }
- timer = setInterval(function () {
- var now = new Date();
- if ((now.getMinutes() % 1 == 0) && (now.getSeconds() == 58)) {
- arrowCount(0);
- invisableLeft(false);
- dateBoxValue(new Date());
- handleSearchInSearchView_renewal();
- }
- }, 1000);
- }
- function handleViewHidden() {
- visiblePopup(false);
- clearInterval(timer); // hcLee 2015 06 12
- }
- function handleViewShowing() {
- //handleSearchInSearchView_renewal();
- }
- function refreshList() {
- }
- function handleSearchInSearchView_renewal() { // 실시간용
- if (realtime_search == true) {
- visiblePopup(true);
- CmSiteDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- CmSiteDataSource.load().done(function (datas) {
- goal = datas[0].MaxPeak();
- var end = new Date(dateBoxValue());
- var start = new Date(dateBoxValue());
- start.setDate(start.getDate() - 1);
- ElecPeakDataSource.filter([
- ['SiteId', '=', SiteId],
- and,
- ['CreatedDateTime', '>=', start],
- and,
- ['CreatedDateTime', '<=', end]
- ]);
- var bEndData = true;
- ElecPeakDataSource.load().done(function (datas) {
- var maxValue = 0;
- var dataArray = [];
- for (var i = 0; i < datas.length; i++) {
- dataArray.push({
- DateTime: BWA.Chart.getCustermTimeArgumentAxisString($Code.TimeType.QUARTERMIN, datas[i].CreatedDateTime()),
- Value: datas[i].CurrentValue()
- });
- if (maxValue < datas[i].CurrentValue()) maxValue = datas[i].CurrentValue();
- }
- dataArrayresult = dataArray;
- if (dataArray.length == 0) {
- invisableLeft(true);
- arrowCount(arrowCount() - 1);
- if (arrowCount() < 0) arrowCount(0);
- visiblePopup(false);
- utils.toast.show('데이터가 없습니다.');
- return;
- }
- if (maxValue < goal) maxValue = goal;
- var options = BWA.ChartOptions.ElecPeak.getChartOptionsMIN($Code.TimeType.MIN, goal, maxValue);//$Code.TimeType.MIN
- chart().option('argumentAxis', null);
- options.dataSource = dataArray;
- chart().option(options);
- visiblePopup(false);
- })
- .fail(function (error) {
- visiblePopup(false);
- });
- BemsPeakInfoDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- BemsPeakInfoDataSource.load().done(function (datas) {
- MaxDateTime(datas[0].MaxDateTime());
- MinDateTime(datas[0].MinDateTime());
- MaxPeakValue(Math.round(datas[0].MaxPeakValue() * 100) / 100);
- MinPeakValue(Math.round(datas[0].MinPeakValue() * 100) / 100);
- todayMaxPeakValue(Math.round(datas[0].todayMaxPeakValue() * 100) / 100);
- todayMinPeakValue(Math.round(datas[0].todayMinPeakValue() * 100) / 100);
- });
- });
- }
- }
- function handleSearchInSearchView() { //조회용
- var date = timeBoxForSearch.getDate();
- var end = date.endDate;
- var start = date.startDate;
- visiblePopup(true);
- if (timeBoxForSearch.type() == $Code.TimeType.HOUR) {//기존
- CmSiteDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- CmSiteDataSource.load().done(function (datas) {
- goal = datas[0].MaxPeak();
- ElecPeakDataSource.filter([
- ['SiteId', '=', SiteId],
- and,
- ['CreatedDateTime', '>=', start],
- and,
- ['CreatedDateTime', '<=', end],
- ]);
- var bEndData = true;
- ElecPeakDataSource.load().done(function (datas) {
- var maxValue = 0;
- var dataArray = [];
- for (var i = 0; i < datas.length; i++) {
- dataArray.push({
- DateTime: BWA.Chart.getCustermTimeArgumentAxisString($Code.TimeType.QUARTERMIN, datas[i].CreatedDateTime()),
- Value: datas[i].CurrentValue()
- });
- if (maxValue < datas[i].CurrentValue()) maxValue = datas[i].CurrentValue();
- }
- dataArrayresult = dataArray;
- if (dataArray.length == 0) {
- invisableLeft(true);
- arrowCount(arrowCount() - 1);
- if (arrowCount() < 0) arrowCount(0);
- visiblePopup(false);
- utils.toast.show('데이터가 없습니다.');
- return;
- }
- if (maxValue < goal) maxValue = goal;
- var options = BWA.ChartOptions.ElecPeak.getChartOptionsMIN($Code.TimeType.MIN, goal, maxValue);//$Code.TimeType.MIN
- chart().option('argumentAxis', null);
- options.dataSource = dataArray;
- chart().option(options);
- visiblePopup(false);
- })
- .fail(function (error) {
- visiblePopup(false);
- });
- BemsPeakInfoDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- BemsPeakInfoDataSource.load().done(function (datas) {
- MaxDateTime(datas[0].MaxDateTime());
- MinDateTime(datas[0].MinDateTime());
- MaxPeakValue(Math.round(datas[0].MaxPeakValue() * 100) / 100);
- MinPeakValue(Math.round(datas[0].MinPeakValue() * 100) / 100);
- todayMaxPeakValue(Math.round(datas[0].todayMaxPeakValue() * 100) / 100);
- todayMinPeakValue(Math.round(datas[0].todayMinPeakValue() * 100) / 100);
- });
- });
- }
- else if (timeBoxForSearch.type() == $Code.TimeType.DAY) {
- CmSiteDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- CmSiteDataSource.load().done(function (datas) {
- goal = datas[0].MaxPeak();
- BemsPeakHistoryDailyDataSource.filter([
- ['SiteId', '=', SiteId],
- and,
- ['CreatedDateTime', '>=', start],
- and,
- ['CreatedDateTime', '<=', end],
- ]);
- var bEndData = true;
- BemsPeakHistoryDailyDataSource.load().done(function (datas) {
- var maxValue = 0;
- var dataArray = [];
- var tempdataArray = [];
- for (var i = 0; i < datas.length; i++) {
- tempdataArray.push({
- DateTime: datas[i].CreatedDateTime(),
- MaxDateTime: datas[i].MaxDateTime(),
- Value: datas[i].MaxPeakValue()
- });
- dataArray.push({
- DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), datas[i].CreatedDateTime()),
- MaxDateTime: BWA.Chart.getCustermTimeArgumentAxisString($Code.TimeType.QUARTERMIN, datas[i].MaxDateTime()),
- Value: datas[i].MaxPeakValue()
- });
- if (maxValue < datas[i].MaxPeakValue()) maxValue = datas[i].MaxPeakValue();
- }
- dataArrayresult = dataArray;
- if (dataArray.length == 0) {
- invisableLeft(true);
- arrowCount(arrowCount() - 1);
- if (arrowCount() < 0) arrowCount(0);
- visiblePopup(false);
- utils.toast.show('데이터가 없습니다.');
- return;
- }
- if (maxValue < goal) maxValue = goal;
- var options1 = BWA.ChartOptions.ElecPeak.getChartOptionsDAY($Code.TimeType.DAY, goal, maxValue, start, end);//$Code.TimeType.MIN
- chart().option('argumentAxis', null);
- options1.dataSource = tempdataArray;
- chart().option(options1);
- visiblePopup(false);
- })
- .fail(function (error) {
- visiblePopup(false);
- });
- BemsPeakInfoDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- BemsPeakInfoDataSource.load().done(function (datas) {
- MaxDateTime(datas[0].MaxDateTime());
- MinDateTime(datas[0].MinDateTime());
- MaxPeakValue(Math.round(datas[0].MaxPeakValue() * 100) / 100);
- MinPeakValue(Math.round(datas[0].MinPeakValue() * 100) / 100);
- todayMaxPeakValue(Math.round(datas[0].todayMaxPeakValue() * 100) / 100);
- todayMinPeakValue(Math.round(datas[0].todayMinPeakValue() * 100) / 100);
- });
- });
- }
- else {
- CmSiteDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- CmSiteDataSource.load().done(function (datas) {
- goal = datas[0].MaxPeak();
- var cnt = Math.round((end - start) / (24 * 60 * 60 * 1000 * 30));
- var dataArray = [];
- var tempdataArray = [];
- for (var i = 0; i < cnt; i++) {
- tempdataArray.push({
- DateTime: new Date(start.getFullYear(), start.getMonth() + i, 1, 0, 0, 0),
- MaxDateTime: new Date(start.getFullYear(), start.getMonth() + i, 1, 0, 0, 0),
- Value: 0
- });
- dataArray.push({
- DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), new Date(start.getFullYear(), start.getMonth() + i, 1, 0, 0, 0)),
- MaxDateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), new Date(start.getFullYear(), start.getMonth() + i, 1, 0, 0, 0)),
- Value: 0
- });
- }
- BemsPeakHistoryDailyDataSource.filter([
- ['SiteId', '=', SiteId],
- and,
- ['CreatedDateTime', '>=', start],
- and,
- ['CreatedDateTime', '<=', end],
- ]);
- var bEndData = true;
- BemsPeakHistoryDailyDataSource.load().done(function (datas) {
- if (datas.length != 0) {
- var maxValue = 0;
- for (var i = 0; i < datas.length; i++) {
- for (var j = 0; j < dataArray.length; j++) {
- if (datas[i].CreatedDateTime().getFullYear() == tempdataArray[j].DateTime.getFullYear() && datas[i].CreatedDateTime().getMonth() == tempdataArray[j].DateTime.getMonth()) {
- if (dataArray[j].Value < datas[i].MaxPeakValue()) {
- tempdataArray[j].Value = datas[i].MaxPeakValue();
- tempdataArray[j].MaxDateTime = datas[i].MaxDateTime(),
- dataArray[j].MaxDateTime = BWA.Chart.getCustermTimeArgumentAxisString($Code.TimeType.QUARTERMIN, datas[i].MaxDateTime()),
- dataArray[j].Value = datas[i].MaxPeakValue();
- }
- break;
- }
- }
- }
- dataArrayresult = dataArray;
- if (dataArray.length == 0) {
- invisableLeft(true);
- arrowCount(arrowCount() - 1);
- if (arrowCount() < 0) arrowCount(0);
- visiblePopup(false);
- utils.toast.show('데이터가 없습니다.');
- return;
- }
- if (maxValue < goal) maxValue = goal;
- var options2 = BWA.ChartOptions.ElecPeak.getChartOptionsMONTH($Code.TimeType.MONTH, goal, maxValue, start, end);//$Code.TimeType.MIN
- chart().option('argumentAxis', null);
- options2.dataSource = tempdataArray;//dataArraytempdataArray
- chart().option(options2);
- visiblePopup(false);
- }
- })
- .fail(function (error) {
- visiblePopup(false);
- });
- BemsPeakInfoDataSource.filter([
- ['SiteId', '=', SiteId]
- ]);
- BemsPeakInfoDataSource.load().done(function (datas) {
- MaxDateTime(datas[0].MaxDateTime());
- MinDateTime(datas[0].MinDateTime());
- MaxPeakValue(Math.round(datas[0].MaxPeakValue() * 100) / 100);
- MinPeakValue(Math.round(datas[0].MinPeakValue() * 100) / 100);
- todayMaxPeakValue(Math.round(datas[0].todayMaxPeakValue() * 100) / 100);
- todayMinPeakValue(Math.round(datas[0].todayMinPeakValue() * 100) / 100);
- });
- });
- }
- }
- var searchViewOptions = {
- searchViewItems: [
- { id: 'TimeTypeId', defaultValue: 0, value: timeTypeIdForSearch, dataSource: timeTypesForSearch },
- { id: 'DateForHour', type: 'dateRange', isOnlyDate: true },
- { id: 'TimeForHour', type: 'dateRange', isOnlyDate: true },
- ],
- promiseDataInSearchView: deferredForSearch.promise()
- };
- function handleMenuItemClick(e) {
- }
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- function DataGridPopup_ButtonClick() {
- DataGridPopup_Visible(true);
- }
- function handlePopupShown() {
- if (timeBoxForSearch.type() == $Code.TimeType.HOUR) {
- viewModel.ElecPeakDataGridOptions.columns[0].format = 'yyyy-MM-dd HH:mm';
- if (viewModel.ElecPeakDataGridOptions.columns[2])
- viewModel.ElecPeakDataGridOptions.columns[2] = null;
- }
- else if (timeBoxForSearch.type() == $Code.TimeType.DAY) {
- viewModel.ElecPeakDataGridOptions.columns[0].format = 'yyyy-MM-dd';
- if (viewModel.ElecPeakDataGridOptions.columns[2] == null)
- viewModel.ElecPeakDataGridOptions.columns[2] = {
- dataField: 'MaxDateTime', caption: "피크날짜", width: '50%', alignment: 'center', format: 'yyyy-MM-dd HH:mm'
- };
- }
- else {
- viewModel.ElecPeakDataGridOptions.columns[0].format = 'yyyy-MM';
- if (viewModel.ElecPeakDataGridOptions.columns[2] == null)
- viewModel.ElecPeakDataGridOptions.columns[2] = {
- dataField: 'MaxDateTime', caption: "피크날짜", width: '50%', alignment: 'center', format: 'yyyy-MM-dd HH:mm'
- };
- }
- if (realtime_search) {
- if (viewModel.ElecPeakDataGridOptions.columns[2])
- viewModel.ElecPeakDataGridOptions.columns[2] = null;
- }
- $("#ElecPeakDataGrid_Container").dxDataGrid("instance").option("dataSource", dataArrayresult);
- DataGridPopup_Visible(true);
- }
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- var viewModel = $.extend(BWA.CommonView.create(
- params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null,
- handleSearchInSearchView, handleSearchViewInitializeUpdate), {
- refreshList: refreshList,
- viewShowing: handleViewShowing,
- viewHidden: handleViewHidden, // hcLee 2015 03 23
- processValueChange: function (e) {
- if (e.value == '실시간') {
- realtime_search = true;
- $("#search").dxButton({
- disabled: true
- });
- }
- else {
- realtime_search = false;
- $("#search").dxButton({
- disabled: false
- });
- }
- },
- handleMenuItemClick: handleMenuItemClick,
- menuItems: [{
- text: '엑셀(csv) 내보내기'
- }],
- dateBoxValue: dateBoxValue,
- MaxPeakValue: function () { return MaxPeakValue() },
- MaxDateTime: function () { return MaxDateTime() },
- MinPeakValue: function () { return MinPeakValue() },
- MinDateTime: function () { return MinDateTime() },
- todayMaxPeakValue: function () { return todayMaxPeakValue() },
- todayMinPeakValue: function () { return todayMinPeakValue() },
- arrowCount: function () { return arrowCount() },
- invisableLeft: function () { return invisableLeft() },
- boxOptions: {
- direction: 'row', width: '75%', height: 120,
- },
- ElecPeakDataGridPopup_ButtonClicked: DataGridPopup_ButtonClick
- });
- viewModel.timeBoxForSearch = timeBoxForSearch;
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- viewModel.ElecPeakDataGridPopupOptions = {
- width: '450px',
- height: '830px',
- contentTemplate: "content",
- showTitle: true,
- title: "도표",
- visible: DataGridPopup_Visible,
- dragEnabled: true,
- closeOnOutsideClick: true,
- shownAction: handlePopupShown,
- animation: window.utils.popup.createAnimation(),
- shading: false
- };
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- $HourGlassPopup(viewModel, visiblePopup);
- viewModel.ElecPeakFacilityPopup = $ElecPeakFacilityPopup(viewModel, null, false, null);
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- viewModel.ElecPeakDataGridOptions = {
- dataSource: dataArrayresult,
- columns: [
- { dataField: 'DateTime', caption: "날짜", width: '50%', alignment: 'center', format: 'yyyy-MM-dd HH:mm' },// dataType: 'date', format: 'yyyy-MM-dd HH:mm' },
- { dataField: 'Value', caption: "전력피크", width: '50%', alignment: 'center', format: 'fixedPoint', precision: 2 },
- { dataField: 'MaxDateTime', caption: "피크날짜", width: '50%', alignment: 'center', format: 'yyyy-MM-dd HH:mm' },// dataType: 'date', format: 'yyyy-MM-dd HH:mm' },
- ],
- "export": {
- enabled: true,
- fileName: '전력피크'
- }
- };
- // 2017.09.11 : 그리드 도표 작업 : 팝업창 추가
- return viewModel;
- };
|