a3265545193abc67fd0441119bd9d57acac35060.svn-base 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. BemsWebApplication.FacilityOperationReport = function (params, viewInfo) {
  2. "use strict";
  3. var initialized = false,
  4. shouldReload = false,
  5. datagrid = null,
  6. currentTabIndex = ko.observable(0),
  7. facilityViewModel = new BWA.CmFacilityViewModel(),
  8. dataSource;
  9. var m_Facility;
  10. var multiViewItems = [{
  11. template: 'mainCharts'
  12. }, {
  13. template: 'subCharts'
  14. }
  15. ];
  16. var searchDeferred = new $.Deferred();
  17. var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');
  18. var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType');
  19. var facilityTypes = ko.observableArray();
  20. var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
  21. var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId');
  22. var facilityDataSource = BWA.db.createDataSource('CmFacility'),
  23. facilitiesForSearch = ko.observableArray(),
  24. facilityCodeForSearch = ko.observable(0);
  25. //var deferredForSearch = new $.Deferred();
  26. var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()],
  27. searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()],
  28. searchFacilityClassValuesLast = [ko.observable(), ko.observable(), ko.observable()];
  29. var selectedFacilityDataInSearchParentPopup = ko.observable();
  30. selectedFacilityDataInSearchParentPopup.subscribe(function (value) {
  31. viewModel.dataModel.ParentFacilityCode(value.FacilityCode);
  32. viewModel.dataModel.ParentFacilityName(value.Name);
  33. });
  34. var visiblePopup = ko.observable(false);
  35. var dataCalorie = ko.observableArray(),
  36. dataAtfw = ko.observableArray(),
  37. dataTemperatureCalorie = ko.observableArray(),
  38. dataTemperatureElectricity = ko.observableArray()
  39. ;
  40. var runtimeGet = new BWA.Chart.PointHistory_RunTimeGet(BWA.UserInfo.SiteId());
  41. var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForMonthOnly, 'startThisYear');
  42. var chartDay = BWA.Chart.Instance('chartDay', 'dxChart');
  43. var chartMonth = BWA.Chart.Instance('chartMonth', 'dxChart');
  44. var chartLayout = new BWA.ChartLayout({
  45. divs: [{
  46. id: 'day',
  47. chartId: 'chartDay'
  48. }, {
  49. id: 'month',
  50. chartId: 'chartMonth'
  51. }
  52. ],
  53. multiViewOptions: {
  54. viewIndex: currentTabIndex,
  55. viewCount: 1
  56. }
  57. });
  58. /*
  59. var m = moment();
  60. dataCalorie([
  61. { DateTime: new Date(m.year(), m.month(), 1), Value: 50 },
  62. { DateTime: new Date(m.year(), m.month(), 2), Value: 50 },
  63. { DateTime: new Date(m.year(), m.month(), 3), Value: 60 },
  64. { DateTime: new Date(m.year(), m.month(), 4), Value: 80 },
  65. { DateTime: new Date(m.year(), m.month(), 5), Value: 100 },
  66. { DateTime: new Date(m.year(), m.month(), 6), Value: 40, },
  67. { DateTime: new Date(m.year(), m.month(), 7), Value: 120 },
  68. { DateTime: new Date(m.year(), m.month(), 31), Value: 120 }
  69. ]);*/
  70. // 추가 2015 04 20 hcLee ->
  71. var CODE = $Code,
  72. FuelType = CODE.FuelType,
  73. FT = CODE.FacilityType,
  74. FC = CODE.FacilityCode,
  75. F = CODE.Formula,
  76. TIT = CODE.TimeIntervalType;
  77. // 추가 2015 04 20 hcLee <-
  78. //dataMonthForBar(dataDayForBar());
  79. //dataDayForPie([
  80. // { FuelTypeName: '전기', Value: 320 },
  81. // { FuelTypeName: '가스', Value: 350 },
  82. // { FuelTypeName: '수도', Value: 360 },
  83. //]);
  84. //dataMonthForPie(dataDayForPie());
  85. function handleMonthBarPointClick(clickedPoint) {
  86. var month = clickedPoint.originalArgument;
  87. //alert(month.length);
  88. var year = month.substr(0, 4);
  89. var month = (month.length == 11) ? month.substr(8, 2) : month.substr(8, 1);
  90. //alert(year);
  91. //alert(month);
  92. //return;
  93. loadDailyEnergyUsage(year,month);
  94. console.log(month);
  95. }
  96. function loadDailyEnergyUsage(year,month) {
  97. if (m_Facility == null) return;
  98. var f = m_Facility.toJS();
  99. facilityViewModel.fromJS(f);
  100. visiblePopup(true);
  101. var startDate, endDate;
  102. var monthMoment;
  103. if (_.isUndefined(month)) {
  104. monthMoment = moment(year);
  105. }
  106. else {
  107. monthMoment = moment(year).month(month - 1);
  108. }
  109. startDate = monthMoment.startOf('month');
  110. endDate = monthMoment.clone().endOf('month');
  111. var promises = [];
  112. var p = runtimeGet.apiGet({
  113. //FacilityTypeId: f.FacilityTypeId,
  114. FacilityCode: f.FacilityCode,
  115. TimeIntervalType: TIT.DAY,
  116. StartDate: startDate,
  117. EndDate: endDate
  118. });
  119. promises.push(p);
  120. promises.push(BemsWebApplication.api.get('BemsMonitoringPointHistory/FacilityCostRunTime', {
  121. SiteId: BWA.UserInfo.SiteId(),
  122. FacilityCode: f.FacilityCode,
  123. TimeIntervalType: TIT.DAY,
  124. StartDate: $G.dateTime(startDate), // 중요 2016 04 26
  125. EndDate: $G.dateTime(endDate) // 중요 2016 04 26
  126. }));
  127. $.when.apply(this, promises).done(function (sw, cost) {
  128. var barDataArray = [];
  129. //var pieDataArray = [];
  130. //getChartDataFromDataSources(arguments, barDataArray, pieDataArray, 'D');
  131. _.each(sw[0][0], function (x) {
  132. barDataArray.push({
  133. DateTime: moment(x.DateTime).format('D'),
  134. rt: x.Value
  135. });
  136. });
  137. _.each(cost[0], function (x) {
  138. barDataArray.push({
  139. DateTime: moment(x.DateTime).format('D'),
  140. cost: Math.round(x.Value)
  141. });
  142. });
  143. /*
  144. var remainDate = _.range(moment().date(), moment().endOf('month').date() + 1);
  145. _.each(remainDate, function (date) {
  146. barDataArray.push({
  147. DateTime: date,
  148. rt : 0,
  149. });
  150. });*/
  151. //console.log(barDataArray);
  152. //2015 11 23 차트 다시 그리지 않는 문제
  153. //chartDay().option('dataSource', barDataArray); 대신 아래3줄로 변경
  154. var options = BWA.ChartOptions.FacilityRuntime.getChartDayOptions($Code.TimeType.DAY);
  155. options.dataSource = barDataArray;
  156. chartDay().option(options);
  157. $('#st1').text(year + '년 ' + month + '월 가동시간 ' + ' : ' + f.Name);
  158. $('#st2').text('월별 가동시간 ' + ' : ' + f.Name);
  159. /*$('#st1').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 사용 현황');
  160. $('#st2').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 전체 사용량 비율');
  161. $('#st3').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 사용량');
  162. $('#st4').text(new Date().getFullYear() + '년 TOE환산 에너지 사용 현황');
  163. $('#st5').text(new Date().getFullYear() + '년 TOE환산 에너지 전체 사용량 비율');
  164. $('#st6').text(new Date().getFullYear() + '년 TOE환산 에너지 사용량');*/
  165. visiblePopup(false);
  166. }).fail(function (error) {
  167. //alert(error);
  168. visiblePopup(false);
  169. });
  170. }
  171. function handleViewShown() {
  172. if (initialized === false) {
  173. var chartOption = BWA.ChartOptions.FacilityRuntime;
  174. chartDay = chartDay(chartOption.getChartDayOptions($Code.TimeType.DAY));
  175. //chartMonth = chartMonth(chartOption.getChartMonthOptions($Code.TimeType.MONTH));
  176. chartMonth = chartMonth(chartOption.getChartMonthOptions($Code.TimeType.MONTH, handleMonthBarPointClick));
  177. initialized = true;
  178. }
  179. facilityClassDataSource.filter([
  180. ['SiteId', '=', BWA.UserInfo.SiteId()],
  181. 'and',
  182. ['ParentFacilityClassId', '=', null]
  183. ]);
  184. facilityTypeDataSource.filter([
  185. ['FacilityTypeId', '<', 99],
  186. //'and',
  187. //['ContractType', '>', 0]
  188. ]);
  189. // 빌딩 데이터 로드 시점
  190. $.when(facilityClassDataSource.load(),
  191. //buildingDataSource.load(),
  192. facilityTypeDataSource.load()
  193. //).done(function (result1, result2, result3) {
  194. ).done(function (result1, result2) {
  195. facilityClasses[0](result1[0]);
  196. searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(result1[0]));
  197. searchFacilityClassValues[0](0);
  198. //searchFacilityClasses[0](defaultSearchClassArray.slice(0));
  199. initializeSearchClasses();
  200. //buildings(result2[0]);
  201. //searchBuildings(defaultSearchBuildingArray.slice(0).concat(result2[0]));
  202. //searchFloors(defaultSearchFloorArray.slice(0));
  203. facilityTypes(result2[0]);
  204. searchDeferred.resolve();
  205. });
  206. /*
  207. var eq = BWA.DataUtil.constructEqualFilter;
  208. facilityDataSource.filter([
  209. eq('SiteId', BWA.UserInfo.SiteId()),
  210. ]);
  211. facilityDataSource.load().done(function (facilities) {
  212. facilitiesForSearch(facilities);
  213. if (_.isEmpty(facilities) === false) {
  214. var f = facilities[0];
  215. handleSelectedFacilityInSearchView(f);
  216. handleSearchInSearchView();
  217. var datagrid = $('#FacilityDataGridViewInSearchView').dxDataGrid('instance');
  218. if (_.has(datagrid, 'selectRows')) {
  219. datagrid.selectRows(f);
  220. }
  221. }
  222. });*/
  223. }
  224. if (shouldReload) {
  225. //shouldReload = false;
  226. //dataSource.pageIndex(0);
  227. //dataSource.load();
  228. }
  229. function handleViewHidden() {
  230. var paging = BWA.ChartLayout.Paging;
  231. paging.sideOverlayVisible(false);
  232. $SearchView.visibleObservable(false); // hcLee 2015 03 23
  233. visiblePopup(false);
  234. }
  235. function handleViewShowing() {
  236. }
  237. function refreshList() {
  238. //dataSource.pageIndex(0);
  239. //dataSource.load();
  240. }
  241. function ReSetSearchList() {
  242. if (searchFacilityClassValues[0]() == null || searchFacilityClassValues[1]() == null || searchFacilityClassValues[2]() == null) return;
  243. if (searchFacilityClassValuesLast[0]() == searchFacilityClassValues[0]() &&
  244. searchFacilityClassValuesLast[1]() == searchFacilityClassValues[1]() &&
  245. searchFacilityClassValuesLast[2]() == searchFacilityClassValues[2]()) return;
  246. searchFacilityClassValuesLast[0](searchFacilityClassValues[0]());
  247. searchFacilityClassValuesLast[1](searchFacilityClassValues[1]());
  248. searchFacilityClassValuesLast[2](searchFacilityClassValues[2]());
  249. var filterA = [];
  250. var eq = BWA.DataUtil.constructEqualFilter;
  251. filterA.push(eq('SiteId', BWA.UserInfo.SiteId()));
  252. filterA.push(['ContractType', '>', 0]);
  253. if (searchFacilityClassValues[0]() != 0) {
  254. filterA.push(eq('FirstClassId', searchFacilityClassValues[0]()));
  255. }
  256. if (searchFacilityClassValues[1]() != 0) {
  257. filterA.push(eq('SecondClassId', searchFacilityClassValues[1]()));
  258. }
  259. if (searchFacilityClassValues[2]() != 0) {
  260. filterA.push(eq('ThirdClassId', searchFacilityClassValues[2]()));
  261. }
  262. facilityDataSource.filter(filterA);
  263. facilityDataSource.load().done(function (facilities) {
  264. facilitiesForSearch(facilities);
  265. if (_.isEmpty(facilities) === false) {
  266. var f = facilities[0];
  267. handleSelectedFacilityInSearchView(f);
  268. handleSearchInSearchView();
  269. var datagrid = $('#FacilityDataGridViewInSearchView').dxDataGrid('instance');
  270. if (_.has(datagrid, 'selectRows')) {
  271. datagrid.selectRows(f);
  272. }
  273. }
  274. });
  275. }
  276. var handleFirstClassChangedValueInSearchView = function (e) {
  277. if (e.value === 0) {
  278. initializeSearchClasses();
  279. return;
  280. }
  281. BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);
  282. searchFacilityClassValues[1](0);
  283. ReSetSearchList();
  284. };
  285. var handleSecondClassChangedValueInSearchView = function (e) {
  286. if (e.value === 0) {
  287. initializeSearchClasses(true);
  288. return;
  289. }
  290. BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);
  291. searchFacilityClassValues[2](0);
  292. ReSetSearchList();
  293. };
  294. var handleThirdClassChangedValueInSearchView = function (e) {
  295. /*if (e.value === 0) {
  296. return;
  297. }*/
  298. ReSetSearchList();
  299. };
  300. function initializeSearchClasses(onlyThird) {
  301. if (onlyThird === undefined || onlyThird === false) {
  302. searchFacilityClasses[1](defaultSearchClassArray.slice(0));
  303. searchFacilityClassValues[1](0);
  304. }
  305. searchFacilityClasses[2](defaultSearchClassArray.slice(0));
  306. searchFacilityClassValues[2](0);
  307. ReSetSearchList();
  308. }
  309. var searchViewOptions = {
  310. searchViewItems: [
  311. { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },
  312. { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },
  313. { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2], handleChangedValue: handleThirdClassChangedValueInSearchView },
  314. { id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch },
  315. ],
  316. promiseDataInSearchView: searchDeferred.promise()
  317. };
  318. function handleSelectedFacilityInSearchView(facility) {
  319. m_Facility = facility;
  320. return;
  321. }
  322. function handleSearchInSearchView(filter, searchViewItems) {
  323. if (m_Facility == null) return;
  324. //alert(m_Facility.Name());
  325. var f = m_Facility.toJS();
  326. facilityViewModel.fromJS(f);
  327. //var timeIntervalType = $Code.TimeIntervalType.QUARTERMIN;
  328. var timeIntervalType = timeBoxForSearch.type();
  329. var formula = $Code.Formula[$Code.FacilityType.WATER_H];
  330. var formulaIds = _.values(formula);
  331. var date = timeBoxForSearch.getDate();
  332. //utils.toast.displayTime=1000000;
  333. //utils.toast.show('공조기 성능분석 중 입니다. 잠시만 기다려 주세요');
  334. visiblePopup(true);
  335. // var startDate = moment().
  336. var promises = [];
  337. var p = runtimeGet.apiGet({
  338. //FacilityTypeId: f.FacilityTypeId,
  339. FacilityCode: f.FacilityCode,
  340. TimeIntervalType: timeIntervalType,
  341. StartDate: date.startDate,
  342. EndDate: date.endDate
  343. });
  344. promises.push(p);
  345. promises.push(BemsWebApplication.api.get('BemsMonitoringPointHistory/FacilityCostRunTime', {
  346. SiteId:BWA.UserInfo.SiteId(),
  347. FacilityCode: f.FacilityCode,
  348. TimeIntervalType: timeIntervalType,
  349. StartDate: $G.dateTime(date.startDate), // 중요 2016 04 26
  350. EndDate: $G.dateTime(date.endDate) // 중요 2016 04 26
  351. }));
  352. //BemsWebApplication.api.get('AvailableDueDate/GetAvailableDueDate', commonParameters).done(function (values) {
  353. $.when.apply(this, promises).done(function (sw, cost) {
  354. //var sw = sw[0];
  355. //var cost = cost[0];
  356. var MonthDataArray = [];
  357. _.each(sw[0][0], function (x) {
  358. MonthDataArray.push({
  359. DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
  360. //DateTime: moment(x.DateTime).format('M'),
  361. rt: x.Value
  362. });
  363. });
  364. _.each(cost[0], function (x) {
  365. MonthDataArray.push({
  366. DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
  367. //DateTime: moment(x.DateTime).format('M'),
  368. cost: Math.round(x.Value)
  369. });
  370. });
  371. //var options = BWA.ChartOptions.FacilityRuntime.getChartMonthOptions(timeBoxForSearch.type(), handleMonthBarPointClick);
  372. //options.dataSource = MonthDataArray;
  373. //chartMonth().option(options);
  374. //2015 11 23 차트 다시 그리지 않는 문제
  375. //chartMonth().option('dataSource', MonthDataArray); 대신 아래3줄로 변경
  376. var options = BWA.ChartOptions.FacilityRuntime.getChartMonthOptions($Code.TimeType.MONTH, handleMonthBarPointClick);
  377. options.dataSource = MonthDataArray;
  378. chartMonth().option(options);
  379. loadDailyEnergyUsage(date.endDate.getFullYear().toString(), (date.endDate.getMonth() + 1).toString());
  380. //loadDailyEnergyUsage("2015", "11");
  381. //hw = hw[0];
  382. // chart 1
  383. /*
  384. var EffiDataArray = [];
  385. _.each(sw, function (x) {
  386. EffiDataArray.push({
  387. DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
  388. sw: x.Value
  389. });
  390. });
  391. _.each(hw, function (x) {
  392. EffiDataArray.push({
  393. DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),
  394. hw: x.Value
  395. });
  396. });
  397. var options = BWA.ChartOptions.WaterHAnalysis.getChartEffiOptions(timeBoxForSearch.type());
  398. options.dataSource = EffiDataArray;
  399. chartEffi().option(options);
  400. */
  401. //visiblePopup(false);
  402. })
  403. .fail(function (error) {
  404. //alert(error);
  405. visiblePopup(false);
  406. });
  407. }
  408. var viewModel = $.extend(BWA.CommonView.create(
  409. params, viewInfo, searchViewOptions, ko.observable(null),
  410. //params, viewInfo, null, ko.observable(null),
  411. handleViewShown, null, handleSearchInSearchView, undefined,
  412. chartLayout), {
  413. // facility: facilityViewModel,
  414. refreshList: refreshList,
  415. viewHidden: handleViewHidden, // hcLee 2015 06 03
  416. viewShowing: handleViewShowing,
  417. /*
  418. searchViewItems: [
  419. { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },
  420. { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },
  421. { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },
  422. { id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch },
  423. ],
  424. promiseDataInSearchView: searchDeferred.promise(),*/
  425. scrolling: { mode: 'infinite' },
  426. FacilityDataGridOptions: {
  427. dataSource: facilitiesForSearch,
  428. columns: [
  429. { dataField: 'Name', caption: $G('facilityName'), width: '100%', alignment: 'left' }
  430. ],
  431. filterRow: {
  432. visible: true,
  433. showOperationChooser: false
  434. },
  435. selection: {
  436. mode: 'single'
  437. },
  438. rowClick: function (clickRow) {
  439. handleSelectedFacilityInSearchView(clickRow.data);
  440. }
  441. },
  442. contentReadyAction: function (e) {
  443. datagrid = e.component;
  444. }
  445. });
  446. /*
  447. viewModel.popupOptions = {
  448. width: 300,
  449. height: 100,
  450. contentTemplate: "info",
  451. showTitle: false,
  452. title: "메세지",
  453. visible: visiblePopup,
  454. dragEnabled: false,
  455. shading: false,
  456. closeOnOutsideClick: false
  457. };
  458. */
  459. //viewModel.dataModel.MainContactorUserName = $KoSet(viewModel.dataModel.MainContactorUserName, '');
  460. //viewModel.dataModel.SubContactorUserName = $KoSet(viewModel.dataModel.SubContactorUserName, '');
  461. //viewModel.dataModel.ParentFacilityName = $KoSet(viewModel.dataModel.ParentFacilityName, '');
  462. viewModel.facilityTypes = facilityTypes;
  463. //viewModel.dataModel.ClassName = ko.observable();
  464. viewModel.facilityClasses = facilityClasses;
  465. viewModel.searchFacilityClasses = searchFacilityClasses;
  466. viewModel.facilitySearchPopup = BWA.Popup.Facility.create(viewModel, selectedFacilityDataInSearchParentPopup);
  467. viewModel.timeBoxForSearch = timeBoxForSearch;
  468. viewModel.currentTabIndex = currentTabIndex;
  469. viewModel.multiViewItems = [{
  470. facility: facilityViewModel,
  471. template: 'mainCharts'
  472. }, {
  473. template: 'subCharts'
  474. }
  475. ];
  476. $HourGlassPopup(viewModel, visiblePopup);
  477. return viewModel;
  478. };