96b0e8ab47641f347c8d7e87e02b7a7ff1e63a1a.svn-base 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. BemsWebApplication.MonthMoney = function(params, viewInfo) {
  2. "use strict";
  3. var initialized = false,
  4. shouldReload = false,
  5. dataSource;
  6. var CODE = $Code,
  7. FuelType = CODE.FuelType,
  8. FacilityType = CODE.FacilityType,
  9. FacilityCode = CODE.FacilityCode,
  10. F = CODE.Formula,
  11. TIT = CODE.TimeIntervalType;
  12. var visiblePopup = ko.observable(false);
  13. var factorToeDataSource = BemsWebApplication.db.createDataSource('BemsFactorToe'),
  14. chartPieDay = BWA.Chart.Instance('chartPieDayMM', 'dxPieChart'),
  15. chartBarDay = BWA.Chart.Instance('chartBarDayMM', 'dxChart'),
  16. chartPieMonth = BWA.Chart.Instance('chartPieMonthMM', 'dxPieChart'),
  17. chartBarMonth = BWA.Chart.Instance('chartBarMonthMM', 'dxChart');
  18. var MonthMoneyGet = new BWA.Chart.PointHistory_MonthMoneyGet(BWA.UserInfo.SiteId());
  19. var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForMonthOnly);
  20. var factorToe = null;
  21. var Toe = $Code.FuelType.WATER + 1;
  22. var fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'),
  23. fuelTypesForSearch = ko.observableArray(),
  24. timeTypesForSearch = ko.observableArray(),
  25. timeTypeIdForSearch = ko.observable(0),
  26. fuelTypeIdForSearch = ko.observable(),
  27. deferredForSearch = new $.Deferred();
  28. var dataArray = ko.observableArray(),
  29. dataDayForPie = ko.observableArray(),
  30. dataMonthForPie = ko.observableArray(),
  31. dataDayForBar = ko.observableArray(),
  32. dataMonthForBar = ko.observableArray()
  33. ;
  34. var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId());
  35. timeTypesForSearch($G.TimeTypes);
  36. var m = moment();
  37. /*dataDayForBar([
  38. { DateTime: new Date(m.year(), m.month(), 1), PowerToe: 40, GasToe: 40, WaterToe: 40 },
  39. { DateTime: new Date(m.year(), m.month(), 2), Value: 50, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  40. { DateTime: new Date(m.year(), m.month(), 3), Value: 60, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  41. { DateTime: new Date(m.year(), m.month(), 4), Value: 80, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  42. { DateTime: new Date(m.year(), m.month(), 5), Value: 100, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  43. { DateTime: new Date(m.year(), m.month(), 6), Value: 40, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  44. { DateTime: new Date(m.year(), m.month(), 7), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  45. { DateTime: new Date(m.year(), m.month(), 31), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 }
  46. ]);
  47. dataMonthForBar(dataDayForBar());
  48. dataDayForPie([
  49. { FuelTypeName: '전기', Value: 320 },
  50. { FuelTypeName: '가스', Value: 350 },
  51. { FuelTypeName: '수도', Value: 360 },
  52. ]);
  53. dataMonthForPie(dataDayForPie());
  54. */
  55. function handleMonthBarPointClick(clickedPoint) {
  56. var month = clickedPoint.originalArgument;
  57. //loadDailyEnergyUsage(month);
  58. //console.log(month);
  59. }
  60. var searchViewOptions = {
  61. searchViewItems: [
  62. { id: 'TimeTypeId', defaultValue: 0, value: timeTypeIdForSearch, dataSource: timeTypesForSearch },
  63. { id: 'FuelTypeId', ignoreValue: 0, defaultValue: 1, value: fuelTypeIdForSearch, dataSource: fuelTypesForSearch },
  64. { id: 'DateForHour', type: 'dateRange', isOnlyDate: true },
  65. { id: 'TimeForHour', type: 'dateRange', isOnlyDate: true },
  66. ],
  67. promiseDataInSearchView: deferredForSearch.promise()
  68. };
  69. function handleViewShown() {
  70. if (initialized === false) {
  71. var chartOption = BWA.ChartOptions.MonthMoney;
  72. chartPieDay = chartPieDay(chartOption.getPieChartDayOptions());
  73. chartBarDay = chartBarDay(chartOption.getBarChartDayOptions());
  74. chartPieMonth = chartPieMonth(chartOption.getPieChartMonthOptions());
  75. chartBarMonth = chartBarMonth(chartOption.getBarChartMonthOptions(handleMonthBarPointClick));
  76. //$('#chartPieDay').dxPieChart(chartOption.getPieChartDayOptions(dataDayForPie));
  77. //$('#chartBarDay').dxChart(chartOption.getBarChartDayOptions(dataDayForBar));
  78. //$('#chartPieMonth').dxPieChart(chartOption.getPieChartMonthOptions(dataMonthForPie));
  79. //$('#chartBarMonth').dxChart(chartOption.getBarChartMonthOptions(dataMonthForBar));
  80. initialized = true;
  81. }
  82. factorToeDataSource.load().done(function(dbFactorToe) {
  83. factorToe = BWA.Bems.refineFactorToeDataArray(dbFactorToe);
  84. //loadMonthlyEnergyUsage();
  85. //loadDailyEnergyUsage();
  86. handleSearchInSearchView();
  87. });
  88. }
  89. function handleSearchInSearchView() {
  90. visiblePopup(true);
  91. $("#large-indicator").dxLoadIndicator({
  92. height: 60,
  93. width: 60
  94. });
  95. //fuelTypeId = fuelTypeIdForSearch();
  96. loadMonthlyEnergyUsage();
  97. //loadDailyEnergyUsage();
  98. }
  99. function getChartDataFromDataSources(loadedDataSources, barDataArray, pieDataArray, timeFormat) {
  100. var pieFields = [$G('electricity'), $G('water'), $G('gas'), ];
  101. var toeFields = ['Elec', 'Water', 'Gas'];
  102. //var pieFields = [$G('electricity'), $G('gas')];
  103. //var toeFields = ['ElectricityToe', 'GasToe',];
  104. _.each(loadedDataSources, function(array, i) {
  105. var field = toeFields[i];
  106. var sum = 0;
  107. _.each(array[0], function(x) {
  108. var data = {
  109. DateTime: moment(x.DateTime).format(timeFormat),
  110. };
  111. sum += data[field] = x.Value;
  112. barDataArray.push(data);
  113. });
  114. pieDataArray.push({
  115. FuelTypeName: pieFields[i],
  116. Value: sum
  117. });
  118. });
  119. //_.each(pieDataArray, function (x) {
  120. // if (x.Value == 0) x.Value = 1;
  121. //});
  122. }
  123. var fuelTypes = [FuelType.ELECTRICITY, FuelType.GAS, FuelType.WATER];
  124. function loadMonthlyEnergyUsage() {
  125. visiblePopup(true);
  126. $("#large-indicator").dxLoadIndicator({
  127. height: 60,
  128. width: 60
  129. });
  130. var date = timeBoxForSearch.getDate(),
  131. timeType = timeBoxForSearch.type();
  132. var promises = [];
  133. var param = {
  134. SiteId: BWA.UserInfo.SiteId(),
  135. TimeIntervalType: timeType,
  136. StartDate : date.startDate,
  137. EndDate : date.endDate,
  138. };
  139. //promises.push(BWA.api.post('BemsMonitoringPointHistory/MonthMoney', null, param));
  140. /*
  141. _.each(fuelTypes, function(x) {
  142. promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x, TIT.MONTH)
  143. (moment().startOf('year'), moment()));
  144. });*/
  145. promises.push(MonthMoneyGet.apiGet(_.extend(param, {Type:10})));
  146. promises.push(MonthMoneyGet.apiGet(_.extend(param, {Type: 11 })));
  147. promises.push(MonthMoneyGet.apiGet(_.extend(param, {Type: 12 })));
  148. $.when.apply(this, promises).done(function(e,w,g) {
  149. var Datas = [];
  150. /*
  151. _.each(e[0], function (x) {
  152. Datas.push(e[0]);
  153. });
  154. _.each(w[0], function (x) {
  155. Datas.push(x);
  156. });
  157. _.each(g[0], function (x) {
  158. Datas.push(x);
  159. });*/
  160. Datas.push(e[0]);
  161. Datas.push(w[0]);
  162. Datas.push(g[0]);
  163. var barDataArray = [];
  164. var pieDataArray = [];
  165. getChartDataFromDataSources(Datas, barDataArray, pieDataArray, 'M');
  166. //var eData = data[0];
  167. //var wData = data[1];
  168. //var gData = data[2];
  169. //console.log(barDataArray);
  170. chartBarMonth().option('dataSource', barDataArray);
  171. chartPieMonth().option('dataSource', pieDataArray);
  172. visiblePopup(false);
  173. $('#st4').text(new Date().getFullYear() + '년 에너지 비용 현황');
  174. $('#st5').text(new Date().getFullYear() + '년 에너지 비용 비율');
  175. $('#st6').text(new Date().getFullYear() + '년 에너지 비용');
  176. }).fail(function (error) {
  177. //alert(error);
  178. visiblePopup(false);
  179. });
  180. }
  181. function handleViewHidden() {
  182. visiblePopup(false);
  183. $SearchView.visibleObservable(false); // hcLee 2015 03 23
  184. //hideOverlay();
  185. // var dataGrid = $('#gridContainer').dxDataGrid('instance');
  186. // dataGrid.clearSelection();
  187. }
  188. function handleViewShowing() {
  189. }
  190. function refreshList() {
  191. //dataSource.pageIndex(0);
  192. //dataSource.load();
  193. }
  194. var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView), {
  195. refreshList: refreshList,
  196. viewHidden: handleViewHidden, // hcLee 2015 03 23
  197. viewShowing: handleViewShowing,
  198. });
  199. viewModel.timeBoxForSearch = timeBoxForSearch;
  200. viewModel.popupOptions = {
  201. width: 300,
  202. height: 100,
  203. contentTemplate: "info",
  204. showTitle: false,
  205. title: "메세지",
  206. visible: visiblePopup,
  207. dragEnabled: false,
  208. shading: false,
  209. closeOnOutsideClick: false
  210. };
  211. return viewModel;
  212. };