BemsWebApplication.ServiceUsageByEnergy = function(params, viewInfo) { "use strict"; var initialized = false, shouldReload = false, dataSource; var CO2 = $Code.FuelType.WATER + 1; var fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'), //var fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFacilityTypeId'), factorCo2DataSource = BemsWebApplication.db.createDataSource('BemsFactorCo2'), serviceTypesDataSource = BemsWebApplication.db.createDataSource('BemsServiceType'), fuelTypesForSearch = ko.observableArray(), timeTypesForSearch = ko.observableArray(), timeTypeIdForSearch = ko.observable(0), fuelTypeIdForSearch = ko.observable(), fuelTypeNameForSearch = ko.observable(), deferredForSearch = new $.Deferred(); var factorCo2 = null; //var energyUsageStatusGet = new BWA.Chart.EnergyUsageStatusGet(BWA.UserInfo.SiteId()), var energyServiceGet = new BWA.Chart.PointHistoryServiceTypeGet(BWA.UserInfo.SiteId()), timeBoxForSearch = BWA.SearchView.createDateTimeBox(), dataArray = ko.observableArray(); var chart = BWA.Chart.Instance('chart', 'dxChart'); timeTypesForSearch($G.TimeTypes); var m = moment(); dataArray([ { DateTime: new Date(m.year(), m.month(), m.date(), 0), Value: 30, PowerCo2: 40, GasCo2: 40, WaterCo2: 40 }, { DateTime: new Date(m.year(), m.month(), m.date(), 0, 15), Value: 32 }, { DateTime: new Date(m.year(), m.month(), m.date(), 0, 30), Value: 33 }, { DateTime: new Date(m.year(), m.month(), m.date(), 0, 45), Value: 34 }, { DateTime: new Date(m.year(), m.month(), m.date(), 1), Value: 50, PowerCo2: 40, GasCo2: 40, WaterCo2: 40 }, { DateTime: new Date(m.year(), m.month(), m.date(), 2), Value: 60, PowerCo2: 40, GasCo2: 40, WaterCo2: 40 }, { DateTime: new Date(m.year(), m.month(), m.date(), 3), Value: 80, PowerCo2: 40, GasCo2: 40, WaterCo2: 40 }, { DateTime: new Date(m.year(), m.month(), m.date(), 4), Value: 100, PowerCo2: 40, GasCo2: 40, WaterCo2: 40 }, { DateTime: new Date(m.year(), m.month(), m.date(), 5), Value: 40, PowerCo2: 40, GasCo2: 40, WaterCo2: 40 }, { DateTime: new Date(m.year(), m.month(), m.date(), 6), Value: 120, PowerCo2: 40, GasCo2: 40, WaterCo2: 40 } ]); function handleViewShown() { if (initialized === false) { chart = chart(BWA.ChartOptions.ServiceUsageByEnergy.getChartOptions($Code.TimeType.HOUR)); //chart = chart(BWA.ChartOptions.UsageByEnergy.getChartOptions($Code.TimeType.MONTH)); initialized = true; } if (shouldReload) { //shouldReload = false; //dataSource.pageIndex(0); //dataSource.load(); } factorCo2DataSource.load().done(function(dbFactorCo2) { factorCo2 = BWA.Bems.refineFactorCo2DataArray(dbFactorCo2); }); } function handleViewHidden() { $SearchView.visibleObservable(false); // hcLee 2015 03 23 //hideOverlay(); // var dataGrid = $('#gridContainer').dxDataGrid('instance'); // dataGrid.clearSelection(); } function handleViewShowing() { $.when(fuelTypesDataSource.load()).done(function (fuelTypes) { fuelTypes.push({ FuelTypeId: ko.observable(CO2), Name: ko.observable('CO2') }); fuelTypesForSearch($SearchView.filterObservableArrayForSelectBox('FuelTypeId', fuelTypes)); deferredForSearch.resolve(); handleSearchInSearchView(); }); } function refreshList() { //dataSource.pageIndex(0); //dataSource.load(); } var searchViewOptions = { searchViewItems: [ { id: 'TimeTypeId', defaultValue: 0, value: timeTypeIdForSearch, dataSource: timeTypesForSearch }, { id: 'FuelTypeId', ignoreValue: 0, defaultValue: 1, value: fuelTypeIdForSearch, dataSource: fuelTypesForSearch }, { id: 'DateForHour', type: 'dateRange', isOnlyDate: true }, { id: 'TimeForHour', type: 'dateRange', isOnlyDate: true }, ], promiseDataInSearchView: deferredForSearch.promise() }; function handleSearchInSearchView() { var date = timeBoxForSearch.getDate(), timeType = timeBoxForSearch.type(), fuelTypeId = fuelTypeIdForSearch(); // fuelTypeName= fuelTypeNameForSearch(); // hcLee 2015 03 23 //alert(fuelTypeId); var commonParameters = { TimeIntervalType: timeBoxForSearch.type(), StartDate: date.startDate, EndDate: date.endDate }; var pointHistoryParameters = { BuildingId: 0, FloorId: null, ZoneId: null, FuelTypeId: fuelTypeIdForSearch() }; var options = BWA.ChartOptions.ServiceUsageByEnergy.getSeriesOptions( fuelTypeId, //fuelTypeName, timeBoxForSearch.type() ); $.when( energyServiceGet.apiGet(_.extend(pointHistoryParameters, commonParameters))) //formulaGet.apiGet(_.extend(temperatureParameters, commonParameters)), //formulaGet.apiGet(_.extend(humidityParameters, commonParameters))) .done(function (values) { var dataArray = []; _.each(values, function (x) { dataArray.push({ DateTime: moment(x.DateTime).toDate(), Value: x.Value //Value: 100 }); }); options.dataSource = dataArray; chart().option(options); // chart().option('dataSource', dataArray); // chart().option('dataSource', chartDataArray()); // chartDataArray(values); }); //var request = energyServiceGet.requestGetForEnergyService.bind(energyServiceGet); } function handleSearchInSearchView_old() { var date = timeBoxForSearch.getDate(), timeType = timeBoxForSearch.type(), fuelTypeId = fuelTypeIdForSearch(); // fuelTypeName= fuelTypeNameForSearch(); // hcLee 2015 03 23 //alert(fuelTypeId); var options = BWA.ChartOptions.ServiceUsageByEnergy.getSeriesOptions( fuelTypeId, //fuelTypeName, timeBoxForSearch.type() ); var request = energyServiceGet.requestGetForEnergyService.bind(energyServiceGet); if (fuelTypeId === CO2) { var promises = []; var fuelTypes = _.values($Code.FuelType); _.each(fuelTypes, function(fuelTypeId) { promises.push(request(fuelTypeId, timeType, 7)(date.startDate, date.endDate)); }); var calculate = factorCo2.calculate; $.when.apply(this, promises) .done(function(electricityArray, gasArray, waterArray) { var chartDataSource = []; var co2Fields = ['ECo2', 'GCo2', 'WCo2']; _.each(arguments, function(array, i) { var field = co2Fields[i]; _.each(array[0], function(x) { var data = { DateTime: moment(x.DateTime).toDate(), }; data[field] = calculate(x.Value, fuelTypes[i]); chartDataSource.push(data); }); }); options.dataSource = chartDataSource; chart().option(options); }); } else { request(fuelTypeId, timeType, 7)(date.startDate, date.endDate) .done(function(dataArray) { var list = _.map(dataArray, function(x) { x.DateTime = moment(x.DateTime).toDate(); return x; }); var options = BWA.ChartOptions.ServiceUsageByEnergy.getSeriesOptions( //fuelTypeIdForSearch(), fuelTypeId, timeBoxForSearch.type() ); options.dataSource = list; chart().option(options); }); } //chart().option('equalBarWidth', false); } var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView), { refreshList: refreshList, viewShowing: handleViewShowing, viewHidden: handleViewHidden, // hcLee 2015 03 23 }); viewModel.timeBoxForSearch = timeBoxForSearch; return viewModel; };