3ccddf8fa65feaf987ab4d2b1c642bb769e817fc.svn-base 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856
  1. BemsWebApplication.MainDashboard = function(params, viewInfo) {
  2. "use strict";
  3. var
  4. ELECTRICITY_DAY_MAX = 50000, // 전기금일목표
  5. ELECTRICITY_MONTH_MAX = 1000000, //전기이달목표
  6. ELECTRICITY_YEAR_MAX = 9000000,
  7. ELECTRICITY_GOAL_YEAR = 101165200, // 백만kWh
  8. GAS_DAY_MAX = 40000,
  9. GAS_MONTH_MAX = 100000,
  10. GAS_YEAR_MAX = 800000,
  11. GAS_GOAL_YEAR = 3708099, //
  12. WATER_DAY_MAX = 15000,
  13. WATER_MONTH_MAX = 4000000,
  14. WATER_YEAR_MAX = 5000000,
  15. WATER_GOAL_YEAR = 682772;
  16. /*
  17. ELECTRICITY_YEAR_MAX = ELECTRICITY_GOAL_YEAR + ELECTRICITY_GOAL_YEAR * 0.7,
  18. GAS_YEAR_MAX = GAS_GOAL_YEAR + GAS_GOAL_YEAR * 0.7, //
  19. WATER_YEAR_MAX = WATER_GOAL_YEAR + WATER_GOAL_YEAR * 0.7; // 10%를 최대값으로 */
  20. var todayDayValue = ko.observableArray();// 시간데이터와 일 데이터가 계속 맞지 않아 에너지사용현황은 Daily에서 읽어오도록 수정 hcLee 2016 03 18
  21. var timer;
  22. var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId()),
  23. energyUsageStatusGet = new BWA.Chart.EnergyUsageStatusGet(BWA.UserInfo.SiteId());
  24. var chartOption = BWA.ChartOptions.MainDashBoard;
  25. var factorCo2 = null,
  26. factorToe = null;
  27. var CODE = $Code,
  28. FuelType = CODE.FuelType,
  29. FT = CODE.FacilityType,
  30. FC = CODE.FacilityCode,
  31. F = CODE.Formula,
  32. TIT = CODE.TimeIntervalType;
  33. var gaugeDataOptions = {};
  34. var DAY_ENERGY_USAGE = 0,
  35. DAY_CO2_USAGE = 1,
  36. MONTH_ENERGY_USAGE = 2,
  37. MONTH_CO2_USAGE = 3,
  38. YEAR_ENERGY_USAGE = 4,
  39. YEAR_CO2_USAGE = 5;
  40. var initialized = false,
  41. shouldReload = false,
  42. fuelTypesDataSourceMD = BemsWebApplication.db.createDataSource('BemsFuelType'),
  43. factorCo2DataSource = BemsWebApplication.db.createDataSource('BemsFactorCo2'),
  44. factorToeDataSource = BemsWebApplication.db.createDataSource('BemsFactorToe'),
  45. //fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'),
  46. dailyDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPointHistoryDaily'),
  47. hourlyDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPointHistoryHourly'),
  48. todayCheck = ko.observable(true),
  49. yesterdayCheck = ko.observable(true),
  50. lastWeekCheck = ko.observable(false),
  51. thisMonthCheck = ko.observable(true),
  52. lastMonthCheck = ko.observable(true),
  53. lastYearCheck = ko.observable(false),
  54. todayValue = ko.observable(0),
  55. yesterdayValue = ko.observable(0),
  56. lastWeekValue = ko.observable(0),
  57. thisMonthValue = ko.observable(0),
  58. lastMonthValue = ko.observable(0),
  59. lastYearValue = ko.observable(0),
  60. // hcLee 2016 03 18
  61. currentTemp = ko.observable(0),
  62. currentHumi = ko.observable(0),
  63. yearElectricityUsageValue = ko.observable(0),
  64. yearGasUsageValue = ko.observable(0),
  65. yearWaterUsageValue = ko.observable(0),
  66. currentTabIndex = ko.observable(0),
  67. dataSource;
  68. var dayEnergyUsageChart = BWA.Chart.Instance('dayEnergyUsageChart', 'dxChart'),
  69. monthEnergyUsageChart = BWA.Chart.Instance('monthEnergyUsageChart', 'dxChart'),
  70. yearElectricityUsageGauge = BWA.Chart.Instance('yearElectricityUsageGauge', 'dxCircularGauge'),
  71. yearGasUsageGauge = BWA.Chart.Instance('yearGasUsageGauge', 'dxCircularGauge'),
  72. yearWaterUsageGauge = BWA.Chart.Instance('yearWaterUsageGauge', 'dxCircularGauge'),
  73. yearEnergyUsageGauge = BWA.Chart.Instance('yearEnergyUsageGauge', 'dxCircularGauge'),
  74. energyUsageRatioPieChart = BWA.Chart.Instance('energyUsageRatioPieChart', 'dxPieChart'),
  75. rateGauges = [];
  76. var fuelTypes = ko.observableArray([]),
  77. fuelTypeId = ko.observable(),
  78. todayEnergyStatusArray = ko.observableArray(),
  79. yesterdayEnergyStatusArray = ko.observableArray(),
  80. lastWeekEnergyStatusArray = ko.observableArray(),
  81. thisMonthEnergyStatusArray = ko.observableArray(),
  82. lastMonthEnergyStatusArray = ko.observableArray(),
  83. lastYearEnergyStatusArray = ko.observableArray()
  84. ;
  85. // monthEnergyDataSource(dayEnergyDataSource());
  86. var pieDataSource = ko.observableArray();
  87. function handleCmBuildingModification() {
  88. shouldReload = true;
  89. }
  90. var initialized = false;
  91. function setGaugeValue(id, value, unit) {
  92. var jq = $('#' + id);
  93. jq.cwGauge('option', 'value', BWA.DataUtil.getNumberStringWithComma(value));
  94. jq.cwGauge('option', 'unit', unit);
  95. //jq.cwGauge2(BWA.DataUtil.getNumberStringWithComma(value), unit);
  96. }
  97. function handleViewShown() {
  98. //window.$SearchView.isNotUse(true);
  99. if (initialized === false) {
  100. var gaugeOptions = [
  101. { id: 'dayEnergyUsage', title: $G('dayEnergyUsgae'), unit: '(kWh)', colorType: 1, value: 0 },
  102. { id: 'dayCo2Usage', title: $G('dayCo2Usgae'), unit: '(tCO2)', colorType: 1, value: 0 }, // 사용안함
  103. { id: 'monthEnergyUsage', title: $G('monthEnergyUsgae'), unit: '(kWh)', colorType: 2, value: 0 },
  104. { id: 'monthCo2Usage', title: $G('monthCo2Usgae'), unit: '(tCO2)', colorType: 2, value: 0 },
  105. { id: 'yearEnergyUsage', title: $G('yearEnergyUsgae'), unit: '(kWh)', colorType: 3, value: 0 },
  106. { id: 'yearCo2Usage', title: $G('yearCo2Usgae'), unit: '(tCO2)', colorType: 3, value: 0 }
  107. ];
  108. _.each(gaugeOptions, function(options, i) {
  109. rateGauges[i] = new BWA.Chart.RateGauge.newInstance(_.extend(options, {
  110. height: '86px'
  111. }));
  112. });
  113. //rateGauges[DAY_ENERGY_USAGE].setValue(4124);
  114. //rateGauges[DAY_CO2_USAGE].setValue(4124);
  115. //rateGauges[MONTH_ENERGY_USAGE].setValue(7124);
  116. //rateGauges[MONTH_CO2_USAGE].setValue(6124);
  117. //rateGauges[YEAR_ENERGY_USAGE].setValue(10124);
  118. //rateGauges[YEAR_CO2_USAGE].setValue(10124);
  119. dayEnergyUsageChart = dayEnergyUsageChart(chartOption.getTodayEnergyUsageStatusChartOptions());
  120. monthEnergyUsageChart = monthEnergyUsageChart(chartOption.getMonthEnergyUsageStatusChartOptions());
  121. yearElectricityUsageGauge = yearElectricityUsageGauge(chartOption.getYearElectricityUsageStatusChartOptions());
  122. yearGasUsageGauge = yearGasUsageGauge(chartOption.getYearGasUsageStatusChartOptions());
  123. yearWaterUsageGauge = yearWaterUsageGauge(chartOption.getYearWaterUsageStatusChartOptions());
  124. yearEnergyUsageGauge = yearEnergyUsageGauge(chartOption.getYearTotalEnergyUsageStatusChartOptions());
  125. // yearElectricityUsageGauge().value(612772);
  126. energyUsageRatioPieChart = energyUsageRatioPieChart(chartOption.getUsageRatioByEnergyChartOptions());
  127. gaugeDataOptions[FT.ELECTRICITY] = {
  128. gauge: yearElectricityUsageGauge,
  129. max: ELECTRICITY_YEAR_MAX,
  130. value: yearElectricityUsageValue
  131. };
  132. gaugeDataOptions[FT.GAS] = {
  133. gauge: yearGasUsageGauge,
  134. max: GAS_YEAR_MAX,
  135. value: yearGasUsageValue
  136. };
  137. gaugeDataOptions[FT.WATER] = {
  138. gauge: yearWaterUsageGauge,
  139. max: WATER_YEAR_MAX,
  140. value: yearWaterUsageValue
  141. };
  142. //setGaugeRangeContainer(yearElectricityUsageGauge, ELECTRICITY_GOAL_YEAR);
  143. //setGaugeRangeContainer(yearGasUsageGauge, GAS_GOAL_YEAR);
  144. //setGaugeRangeContainer(yearWaterUsageGauge, WATER_GOAL_YEAR);
  145. var whenPromise = $.when(fuelTypesDataSourceMD.load(),
  146. factorCo2DataSource.load(),
  147. factorToeDataSource.load())
  148. .then(function (dbfuelTypes, dbfactorsCo2, dbfactorsToe) {
  149. factorCo2 = BWA.Bems.refineFactorCo2DataArray(dbfactorsCo2[0]);
  150. factorToe = BWA.Bems.refineFactorToeDataArray(dbfactorsToe[0]);
  151. fuelTypeId($Code.FuelType.ELECTRICITY);
  152. fuelTypes(_.rest(dbfuelTypes[0]));
  153. initialized = true;
  154. });
  155. }
  156. load();
  157. if (shouldReload) {
  158. //shouldReload = false;
  159. //dataSource.pageIndex(0);
  160. //dataSource.load();
  161. }
  162. $SideMenu.showSideMenuIfWill(params.view);
  163. //sideOverlayVisible(true);
  164. timer = setInterval(function () {
  165. var now = new Date();
  166. if ((now.getMinutes() % 15 == 0) && (now.getSeconds() == 59)) {
  167. load();
  168. /*
  169. setupRateGaugeByFuelType(fuelTypeId());
  170. setupTodayEnergyUsageStatusSeries();
  171. setupMonthEnergyUsageStatusSeries();
  172. loadTodayEnergyUsage(fuelTypeId());
  173. loadMonthEnergyUsage(fuelTypeId());*/
  174. }
  175. }, 1000);
  176. $('#sidemenubutton').hide(); // hcLee 2015 12 08
  177. }
  178. function handleViewDisposing() {
  179. }
  180. function handleViewHidden() {
  181. clearInterval(timer); // hcLee 2015 06 12
  182. $('#sidemenubutton').show(); // hcLee 2015 12 08
  183. }
  184. var eq = BWA.DataUtil.constructEqualFilter;
  185. var and = BWA.DataUtil.andFilter;
  186. var fcode = $Code.FacilityCode;
  187. var selectedFacilityCode = fcode.ELECTRICITY;
  188. function handleViewShowing() {
  189. }
  190. function setUsageStatusDataIntoList(sourceData, destlist, momentTimeField, valueField) {
  191. _.each(sourceData, function(data) {
  192. var item = {
  193. DateTime: moment(data.DateTime)[momentTimeField](),
  194. };
  195. item[valueField] = data.Value;
  196. destlist.push(item);
  197. });
  198. }
  199. function getDayUsageStatusDataList() {
  200. var list = [];
  201. setUsageStatusDataIntoList(todayEnergyStatusArray(), list, 'hours', 'TodayValue');
  202. setUsageStatusDataIntoList(yesterdayEnergyStatusArray(), list, 'hours', 'YesterdayValue');
  203. setUsageStatusDataIntoList(lastWeekEnergyStatusArray(), list, 'hours', 'LastWeekValue');
  204. return list;
  205. }
  206. function loadTodayEnergyUsage(fuelTypeId) {
  207. var request = energyUsageStatusGet.requestGetForUsgaeStatus(fuelTypeId, TIT.HOUR);
  208. //var requestd = energyUsageStatusGet.requestGetForUsgaeStatus(fuelTypeId, TIT.DAY);
  209. var lastWeekMoment = moment().subtract(7, 'days');
  210. var yesterdayMoment = moment().subtract(1, 'days');
  211. var todayMoment = moment();
  212. $.when(
  213. request(lastWeekMoment.clone().startOf('day'), lastWeekMoment.endOf('day')),
  214. request(yesterdayMoment.clone().startOf('day'), yesterdayMoment.endOf('day')),
  215. request(todayMoment.clone().startOf('day'), todayMoment))
  216. //requestd(todayMoment.clone().startOf('day'), todayMoment)) // 추가 todayDayData 추가 hcLee 2016 03 18
  217. .done(function (lastWeekData, yesterdayData, todayData, todayDayData) { // todayDayData 추가 hcLee 2016 03 18
  218. yesterdayEnergyStatusArray(yesterdayData[0]);
  219. lastWeekEnergyStatusArray(lastWeekData[0]);
  220. todayEnergyStatusArray(todayData[0]);
  221. //todayDayValue(todayDayData[0]); /// todayDayData 추가 hcLee 2016 03 18
  222. // 2017 01 10 hcLee
  223. if (fuelTypeId == FuelType.WATER)
  224. dayEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber', precision: 2 });
  225. else
  226. dayEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber' });
  227. dayEnergyUsageChart().option('dataSource', getDayUsageStatusDataList());
  228. });
  229. }
  230. function loadMonthEnergyUsage(fuelTypeId) {
  231. var request = energyUsageStatusGet.requestGetForUsgaeStatus(fuelTypeId, TIT.DAY);
  232. var lastYearMoment = moment().subtract(1, 'years');
  233. var lastMonthMoment = moment().subtract(1, 'months');
  234. var thisMonthMoment = moment();
  235. $.when(
  236. request(lastYearMoment.clone().startOf('months'), lastYearMoment.endOf('months')),
  237. request(lastMonthMoment.clone().startOf('months'), lastMonthMoment.endOf('months')),
  238. request(thisMonthMoment.clone().startOf('months'), thisMonthMoment))
  239. .done(function(lastYearData, lastMonthData, thisMonthData) {
  240. lastYearEnergyStatusArray(lastYearData[0]);
  241. lastMonthEnergyStatusArray(lastMonthData[0]);
  242. thisMonthEnergyStatusArray(thisMonthData[0]);
  243. var list = [];
  244. setUsageStatusDataIntoList(thisMonthEnergyStatusArray(), list, 'date', 'ThisMonthValue');
  245. setUsageStatusDataIntoList(lastMonthEnergyStatusArray(), list, 'date', 'LastMonthValue');
  246. setUsageStatusDataIntoList(lastYearEnergyStatusArray(), list, 'date', 'LastYearValue');
  247. // 2017 01 10 hcLee
  248. if (fuelTypeId == FuelType.WATER)
  249. monthEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber', precision: 2 });
  250. else
  251. monthEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber' });
  252. monthEnergyUsageChart().option('dataSource', list);
  253. });
  254. }
  255. function load() {
  256. // 파라미터 값들을 로드
  257. var startDateInYear = moment().startOf('year'),
  258. endDateInYear = moment();
  259. var param =
  260. {
  261. SiteId: BWA.UserInfo.SiteId(),
  262. BuildingId: 1, // 의미없음
  263. FuelType:1, // 의미없음
  264. StartDate: startDateInYear,// 의미없음
  265. EndDate: endDateInYear // 의미없음
  266. };
  267. $.when(BWA.api.post('BemsMonitoringPointHistory/GetPrediction', param)) // 오늘,이달,금년 모두 한번에 온다
  268. .done(function (goals)
  269. {
  270. ELECTRICITY_DAY_MAX = goals[0];
  271. //2017 01 가스 목표량은 Kw 이다 해서 아래와 같이 처리한다 hcLee
  272. //GAS_DAY_MAX = goals[1];
  273. GAS_DAY_MAX = factorToe.calculate(goals[1], FuelType.ELECTRICITY) / factorToe[FuelType.GAS].pureFactor; ;
  274. WATER_DAY_MAX = goals[2];
  275. ELECTRICITY_MONTH_MAX = goals[3];
  276. //2017 01 가스 목표량은 Kw 이다 해서 아래와 같이 처리한다 hcLee
  277. //GAS_MONTH_MAX = goals[4];
  278. GAS_MONTH_MAX = factorToe.calculate(goals[4], FuelType.ELECTRICITY) / factorToe[FuelType.GAS].pureFactor;;
  279. WATER_MONTH_MAX = goals[5];
  280. ELECTRICITY_YEAR_MAX = goals[6];
  281. //2017 01 가스 목표량은 Kw 이다 해서 아래와 같이 처리한다 hcLee
  282. //GAS_YEAR_MAX = goals[7];
  283. GAS_YEAR_MAX = factorToe.calculate(goals[7], FuelType.ELECTRICITY) / factorToe[FuelType.GAS].pureFactor;;
  284. WATER_YEAR_MAX = goals[8];
  285. //
  286. gaugeDataOptions[FT.ELECTRICITY].max = ELECTRICITY_YEAR_MAX;
  287. gaugeDataOptions[FT.GAS].max = GAS_YEAR_MAX;
  288. gaugeDataOptions[FT.WATER].max = WATER_YEAR_MAX;
  289. //var promises = [whenPromise];
  290. var promises = [];
  291. _.each(BWA.Chart.EnergyUsageStatusGet.SearchConditions, function (x) {
  292. var gaugeDataOption = gaugeDataOptions[x.FacilityTypeId];
  293. var p = formulaGet.apiGet(_.extend(x, {
  294. TimeIntervalType: TIT.YEAR,
  295. StartDate: startDateInYear,
  296. EndDate: endDateInYear
  297. }))
  298. .then(getCircularChartValueFunc(gaugeDataOption));
  299. promises.push(p);
  300. });
  301. // 금년 목표 대비 에너지 사용 비율 모두 로드 한 후에 TOE 계산하여 적용
  302. $.when.apply(null, promises).then(function () {
  303. var maxToe = factorToe.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorToe.calculate(GAS_YEAR_MAX, FuelType.GAS) +
  304. factorToe.calculate(WATER_YEAR_MAX, FuelType.WATER);
  305. var toeElectricity = factorToe.calculate(yearElectricityUsageValue(), FuelType.ELECTRICITY);
  306. var toeGas = factorToe.calculate(yearGasUsageValue(), FuelType.GAS);
  307. var toeWater = factorToe.calculate(yearWaterUsageValue(), FuelType.WATER);
  308. var toe = toeElectricity + toeGas + toeWater;
  309. yearEnergyUsageGauge().value(toe / maxToe * 100);
  310. //yearEnergyUsageGauge().value(60);
  311. setupRateGaugeByFuelType(fuelTypeId());
  312. pieDataSource([
  313. { energy: "전기", value: toeElectricity },
  314. { energy: "가스", value: toeGas },
  315. { energy: "수도", value: toeWater },
  316. ]);
  317. loadTotalCo2ToDay();
  318. loadTotalCo2Month();
  319. loadTotalCo2Year();
  320. var promisesTH = [];
  321. var todayMoment = moment();
  322. var commonParameters = {
  323. TimeIntervalType: TIT.DAY,
  324. StartDate: todayMoment.clone().startOf('day'),
  325. EndDate: todayMoment
  326. };
  327. // 2016 06 29 추가
  328. var commonParametersForTH = {
  329. TimeIntervalType: TIT.QUARTERMIN,
  330. StartDate: todayMoment.clone().startOf('day'),
  331. EndDate: todayMoment
  332. };
  333. var temperatureParameters = {
  334. FacilityTypeId: FT.OUTDOOR,
  335. FacilityCode: FC.OUTDOOR,
  336. FormulaId: F[FT.OUTDOOR].TEMPERATURE,
  337. };
  338. var humidityParameters = _.extend({}, temperatureParameters, {
  339. FormulaId: F[FT.OUTDOOR].HUMIDITY,
  340. });
  341. promisesTH.push(formulaGet.apiGet(_.extend(temperatureParameters, commonParametersForTH)));
  342. promisesTH.push(formulaGet.apiGet(_.extend(humidityParameters, commonParametersForTH)));
  343. $.when.apply(this, promisesTH)
  344. .done(function (OUTtemperatures, humidities) {
  345. if (OUTtemperatures[0].length > 0)
  346. currentTemp(OUTtemperatures[0][OUTtemperatures[0].length-1].Value.toFixed(2) + " °C");
  347. if (humidities[0].length > 0)
  348. currentHumi(humidities[0][humidities[0].length - 1].Value.toFixed(2) + " %");
  349. setupTodayEnergyUsageStatusSeries();
  350. setupMonthEnergyUsageStatusSeries();
  351. loadTodayEnergyUsage(fuelTypeId());
  352. loadMonthEnergyUsage(fuelTypeId());
  353. })
  354. });
  355. });
  356. //여기서 전체 Co2별도 계산 hcLee 2015 06 29
  357. //rateGauges[DAY_CO2_USAGE].setValue(1.1);
  358. //rateGauges[MONTH_CO2_USAGE].setValue(2.2);
  359. //rateGauges[YEAR_CO2_USAGE].setValue(3.3);
  360. //});
  361. }
  362. function loadTotalCo2ToDay() {
  363. var now = new Date();
  364. var startDate, endDate;
  365. startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() , 0, 0, 0);
  366. endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59);
  367. var promises = [];
  368. _.each($Code.g_fuelTypes, function (x) {
  369. //promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.HOUR)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이
  370. promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.DAY)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이
  371. });
  372. $.when.apply(this, promises).done(function () {
  373. var Esum = 0;
  374. var TotalCO2 = 0;
  375. _.each(arguments, function (array, i) {
  376. var field = $Code.g_fuelTypes[i].Name();
  377. _.each(array[0], function (x) {
  378. Esum += x.Value;
  379. });
  380. TotalCO2 += factorCo2.calculate(Esum, $Code.g_fuelTypes[i].FuelTypeId());
  381. Esum = 0;
  382. });
  383. //TotalCO2
  384. rateGauges[DAY_CO2_USAGE].setValue(Math.round(TotalCO2 * 100) / 100);
  385. });
  386. }
  387. function loadTotalCo2Month() {
  388. var now = new Date();
  389. var startDate, endDate;
  390. var monthMoment;
  391. monthMoment = moment().month(now.getMonth());
  392. startDate = monthMoment.startOf('month');
  393. endDate = monthMoment.clone().endOf('month');
  394. //startDate = new Date(now.getFullYear(), now.getMonth(), 1, 0, 0, 0);
  395. //endDate = new Date(now.getFullYear(), now.getMonth(), 31, 23, 59, 59);
  396. var promises = [];
  397. _.each($Code.g_fuelTypes, function (x) {
  398. promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.DAY)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이
  399. });
  400. $.when.apply(this, promises).done(function () {
  401. var Esum = 0;
  402. var TotalCO2 = 0;
  403. _.each(arguments, function (array, i) {
  404. var field = $Code.g_fuelTypes[i].Name();
  405. _.each(array[0], function (x) {
  406. //sum += factorCo2.calculate(x.Value, $Code.g_fuelTypes[i].FuelTypeId());
  407. Esum += x.Value;
  408. });
  409. TotalCO2 += factorCo2.calculate(Esum, $Code.g_fuelTypes[i].FuelTypeId());
  410. Esum = 0;
  411. });
  412. //rateGauges[MONTH_CO2_USAGE].setValue(Math.floor(TotalCO2 * 100) / 100);
  413. rateGauges[MONTH_CO2_USAGE].setValue(Math.round(TotalCO2 * 100) / 100);
  414. });
  415. }
  416. function loadTotalCo2Year() {
  417. var now = new Date();
  418. var startDate, endDate;
  419. startDate = moment().startOf('year')
  420. endDate = new Date(now.getFullYear(), now.getMonth(), 31, 23, 59, 59);
  421. var promises = [];
  422. _.each($Code.g_fuelTypes, function (x) {
  423. promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.DAY)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이
  424. });
  425. $.when.apply(this, promises).done(function () {
  426. var Esum = 0;
  427. var TotalCO2 = 0;
  428. _.each(arguments, function (array, i) {
  429. var field = $Code.g_fuelTypes[i].Name();
  430. _.each(array[0], function (x) {
  431. Esum += x.Value;
  432. });
  433. TotalCO2 += factorCo2.calculate(Esum, $Code.g_fuelTypes[i].FuelTypeId());
  434. Esum = 0;
  435. });
  436. var a = 1000;
  437. a.toExponential()
  438. //rateGauges[YEAR_CO2_USAGE].setValue($NumberFormat(Math.floor(TotalCO2 * 100) / 100));
  439. rateGauges[YEAR_CO2_USAGE].setValue(Math.round(TotalCO2 * 100) / 100);
  440. });
  441. }
  442. function getCircularChartValueFunc(gaugeDataOption) {
  443. return function(dataArray) {
  444. if (_.isEmpty(dataArray)) return;
  445. var value = dataArray[0].Value;
  446. gaugeDataOption.gauge().value(value / gaugeDataOption.max * 100);
  447. gaugeDataOption.value(value); // 파이차트
  448. };
  449. }
  450. function refreshList() {
  451. //dataSource.pageIndex(0);
  452. //dataSource.load();
  453. }
  454. var viewModel = $.extend(BWA.CommonView.create(
  455. params, viewInfo, null, null, handleViewShown), {
  456. refreshList: refreshList,
  457. viewShowing: handleViewShowing,
  458. viewShown: handleViewShown,
  459. viewHidden: handleViewHidden,
  460. viewDisposing: handleViewDisposing,
  461. });
  462. pieDataSource.subscribe(function(array) {
  463. var chart = $('#energyUsageRatioPieChart').dxPieChart('instance');
  464. if (chart) {
  465. chart.option('dataSource', array);
  466. }
  467. });
  468. fuelTypeId.subscribe(function(fuelTypeId) {
  469. if (initialized === false) return;
  470. load();
  471. /*
  472. setupRateGaugeByFuelType(fuelTypeId);
  473. setupTodayEnergyUsageStatusSeries();
  474. setupMonthEnergyUsageStatusSeries();
  475. loadTodayEnergyUsage(fuelTypeId);
  476. loadMonthEnergyUsage(fuelTypeId);*/
  477. });
  478. function setupRateGaugeByFuelType(fuelTypeId) {
  479. var todayMax = 0;
  480. var todayCo2Max = 0;
  481. var thisMonthMax = 0;
  482. var thisMonthCo2Max = 0;
  483. var thisYearMax = 0;
  484. var thisYearCo2Max = 0;
  485. var unit;
  486. var yearValue;
  487. // return;
  488. switch(fuelTypeId) {
  489. case FuelType.ELECTRICITY:
  490. unit = '(kWh)';
  491. todayMax = ELECTRICITY_DAY_MAX;
  492. thisMonthMax = ELECTRICITY_MONTH_MAX;
  493. thisYearMax = ELECTRICITY_YEAR_MAX;
  494. //todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY);
  495. //thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY);
  496. //thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + 8000;
  497. todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS)
  498. + factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);
  499. thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS)
  500. + factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);
  501. thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);
  502. yearValue = yearElectricityUsageValue();
  503. gaugeDataOptions[FT.ELECTRICITY].max = ELECTRICITY_YEAR_MAX;
  504. gaugeDataOptions[FT.ELECTRICITY].value = yearElectricityUsageValue;
  505. break;
  506. case FuelType.GAS:
  507. //unit = '(㎥/h)';
  508. unit = '(㎥)';
  509. todayMax = GAS_DAY_MAX;
  510. thisMonthMax = GAS_MONTH_MAX;
  511. thisYearMax = GAS_YEAR_MAX;
  512. //todayCo2Max = factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS);
  513. //thisMonthCo2Max = factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS);
  514. //thisYearCo2Max = factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + 2000;
  515. todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS)
  516. + factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);
  517. thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS)
  518. + factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);
  519. thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);
  520. yearValue = yearGasUsageValue();
  521. gaugeDataOptions[FT.GAS].max = GAS_YEAR_MAX;
  522. gaugeDataOptions[FT.GAS].value = yearGasUsageValue;
  523. break;
  524. case FuelType.WATER:
  525. unit = '(㎥)';
  526. todayMax = WATER_DAY_MAX;
  527. thisMonthMax = WATER_MONTH_MAX;
  528. thisYearMax = WATER_YEAR_MAX;
  529. //todayCo2Max = factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);
  530. //thisMonthCo2Max = factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);
  531. //thisYearCo2Max = factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);
  532. todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS)
  533. + factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);
  534. thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS)
  535. + factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);
  536. thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);
  537. yearValue = yearWaterUsageValue();
  538. gaugeDataOptions[FT.WATER].max = WATER_YEAR_MAX;
  539. gaugeDataOptions[FT.WATER].value = yearWaterUsageValue;
  540. break;
  541. }
  542. yearValue = Math.round(yearValue * 100) / 100;
  543. rateGauges[DAY_ENERGY_USAGE].setUnit(unit);
  544. //rateGauges[DAY_ENERGY_USAGE].setMaxValue(todayMax + todayMax / 2);
  545. rateGauges[DAY_ENERGY_USAGE].setMaxValue(todayMax);
  546. rateGauges[MONTH_ENERGY_USAGE].setUnit(unit);
  547. //rateGauges[MONTH_ENERGY_USAGE].setMaxValue(thisMonthMax + thisMonthMax / 2);
  548. rateGauges[MONTH_ENERGY_USAGE].setMaxValue(thisMonthMax);
  549. rateGauges[YEAR_ENERGY_USAGE].setUnit(unit);
  550. //rateGauges[YEAR_ENERGY_USAGE].setMaxValue(thisYearMax + thisYearMax / 2);
  551. rateGauges[YEAR_ENERGY_USAGE].setMaxValue(thisYearMax);
  552. // 2016 10 17 hcLee
  553. /*if (fuelTypeId >= FuelType.WATER)
  554. //rateGauges[YEAR_ENERGY_USAGE].setMaxValue(yearValue * 150);
  555. rateGauges[YEAR_ENERGY_USAGE].setMaxValue(yearValue);*/
  556. rateGauges[YEAR_ENERGY_USAGE].setValue(yearValue);
  557. /*
  558. rateGauges[DAY_CO2_USAGE].setMaxValue(todayCo2Max + todayCo2Max / 2);
  559. rateGauges[MONTH_CO2_USAGE].setMaxValue(thisMonthCo2Max + thisMonthCo2Max / 2);
  560. rateGauges[YEAR_CO2_USAGE].setMaxValue(thisYearCo2Max + thisMonthCo2Max / 2);*/
  561. rateGauges[DAY_CO2_USAGE].setMaxValue(todayCo2Max);
  562. rateGauges[MONTH_CO2_USAGE].setMaxValue(thisMonthCo2Max);
  563. rateGauges[YEAR_CO2_USAGE].setMaxValue(thisYearCo2Max);
  564. }
  565. function setupTodayEnergyUsageStatusSeries() {
  566. var series = chartOption.getTodayEnergyUsageStatusSeriesOptions({
  567. today: todayCheck(),
  568. yesterday: yesterdayCheck(),
  569. lastWeek: lastWeekCheck()
  570. });
  571. dayEnergyUsageChart().option('series', series);
  572. }
  573. function setupMonthEnergyUsageStatusSeries() {
  574. var series = chartOption.getMonthEnergyUsageStatusSeriesOptions({
  575. thisMonth: thisMonthCheck(),
  576. lastMonth: lastMonthCheck(),
  577. lastYear: lastYearCheck()
  578. });
  579. monthEnergyUsageChart().option('series', series);
  580. }
  581. function getFuelTypeUnit(fuelTypeId) {
  582. switch (fuelTypeId) {
  583. case FuelType.ELECTRICITY:
  584. return 'kWh';
  585. case FuelType.GAS:
  586. return '㎥';
  587. case FuelType.WATER:
  588. return '㎥';
  589. }
  590. return '';
  591. }
  592. function setValueFromSumFunc(koValue, handleValue) {
  593. return function(array) {
  594. var value = _.reduce(array, function(sum, item) {
  595. return sum + item.Value;
  596. }, 0);
  597. if (_.isFunction(handleValue)) {
  598. handleValue(value);
  599. }
  600. koValue(BWA.DataUtil.getNumberStringWithComma(Math.round(value)) + ' ' + getFuelTypeUnit(fuelTypeId()));
  601. };
  602. }
  603. function setEnergyUsageCo2ValueFunc(energyGaugeId, co2GaugeId) {
  604. }
  605. todayCheck.subscribe(setupTodayEnergyUsageStatusSeries);
  606. yesterdayCheck.subscribe(setupTodayEnergyUsageStatusSeries);
  607. lastWeekCheck.subscribe(setupTodayEnergyUsageStatusSeries);
  608. thisMonthCheck.subscribe(setupMonthEnergyUsageStatusSeries);
  609. lastMonthCheck.subscribe(setupMonthEnergyUsageStatusSeries);
  610. lastYearCheck.subscribe(setupMonthEnergyUsageStatusSeries);
  611. todayEnergyStatusArray.subscribe(setValueFromSumFunc(todayValue, function(value) {
  612. //value = Math.round(value);
  613. // 2016 10 17 수도 이상은 목표값이 없으므로 현재값에서 넉넉하게 150배 하여 MAX를 설정한다 hcLee
  614. /* if (fuelTypeId() >= FuelType.WATER)
  615. rateGauges[DAY_ENERGY_USAGE].setMaxValue(value);*/
  616. value = Math.round(value * 100) / 100;
  617. rateGauges[DAY_ENERGY_USAGE].setValue(value);
  618. //rateGauges[DAY_ENERGY_USAGE].setValue(value); hcLee 2016 03 18
  619. }));
  620. yesterdayEnergyStatusArray.subscribe(setValueFromSumFunc(yesterdayValue));
  621. lastWeekEnergyStatusArray.subscribe(setValueFromSumFunc(lastWeekValue));
  622. thisMonthEnergyStatusArray.subscribe(setValueFromSumFunc(thisMonthValue, function (value) {
  623. // 2016 10 17 수도 이상은 목표값이 없으므로 현재값에서 넉넉하게 150배 하여 MAX를 설정한다 hcLee
  624. /* if (fuelTypeId() >= FuelType.WATER)
  625. rateGauges[MONTH_ENERGY_USAGE].setMaxValue(value);*/
  626. //value = Math.round(value);
  627. value = Math.round(value * 100) / 100;
  628. rateGauges[MONTH_ENERGY_USAGE].setValue(value);
  629. //rateGauges[MONTH_CO2_USAGE].setValue(factorCo2.calculate(value, fuelTypeId()));
  630. }));
  631. lastMonthEnergyStatusArray.subscribe(setValueFromSumFunc(lastMonthValue));
  632. lastYearEnergyStatusArray.subscribe(setValueFromSumFunc(lastYearValue));
  633. viewModel.todayCheck = todayCheck;
  634. viewModel.yesterdayCheck = yesterdayCheck;
  635. viewModel.lastWeekCheck = lastWeekCheck;
  636. viewModel.thisMonthCheck = thisMonthCheck;
  637. viewModel.lastMonthCheck = lastMonthCheck;
  638. viewModel.lastYearCheck = lastYearCheck;
  639. viewModel.todayValue = todayValue;
  640. viewModel.yesterdayValue = yesterdayValue;
  641. viewModel.lastWeekValue = lastWeekValue;
  642. viewModel.thisMonthValue = thisMonthValue;
  643. viewModel.lastMonthValue = lastMonthValue;
  644. viewModel.lastYearValue = lastYearValue;
  645. viewModel.fuelTypes = fuelTypes;
  646. viewModel.fuelTypeId = fuelTypeId;
  647. viewModel.currentTemp = currentTemp;
  648. viewModel.currentHumi = currentHumi;
  649. return viewModel;
  650. };