b113e5e8fe222a82e7ee507bf4777fd5f1b6f473.svn-base 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086
  1. BemsWebApplication.PlanBoilerHistory = function (params, viewInfo) {
  2. "use strict";
  3. var endpointSelector = "";
  4. if (BemsWebApplication.config.mode == "production") {
  5. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production;
  6. } else {
  7. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local;
  8. }
  9. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  10. // 팝업창뷰 보이기 속성 제어용 변수 선언
  11. var DataGridPopup_Visible = ko.observable(false);
  12. // 그래프 출력 이후 엑셀출력을 위한 팝업창을 위해 임시 저장용 배열 선언
  13. var faclilitydataSource, dataArrayresult, resultdataArrayresult = [];
  14. var boilerdataSource;
  15. var Action_state = 7 // 시간별 운전 상태 확인
  16. var Action_time = 9 //시간별 운전 시간
  17. //boilerdataSource 초기화 함수
  18. function Source_init() {
  19. boilerdataSource = [{
  20. Num: 0,
  21. Year: 0,
  22. Day: "322",
  23. Name: "",
  24. Time: 3,
  25. FacilityCode: 0,
  26. PropertyId: 0,
  27. CurrentValue: 0,
  28. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  29. }, {
  30. Num: 0,
  31. Year: 0,
  32. Day: "322",
  33. Name: "",
  34. Time: 3,
  35. FacilityCode: 0,
  36. PropertyId: 0,
  37. CurrentValue: 0,
  38. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  39. }, {
  40. Num: 0,
  41. Year: 0,
  42. Day: "322",
  43. Name: "",
  44. Time: 3,
  45. FacilityCode: 0,
  46. PropertyId: 0,
  47. CurrentValue: 0,
  48. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  49. }, {
  50. Num: 0,
  51. Year: 0,
  52. Day: "322",
  53. Name: "",
  54. Time: 3,
  55. FacilityCode: 0,
  56. PropertyId: 0,
  57. CurrentValue: 0,
  58. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  59. }, {
  60. Num: 0,
  61. Year: 0,
  62. Day: "322",
  63. Name: "",
  64. Time: 3,
  65. FacilityCode: 0,
  66. PropertyId: 0,
  67. CurrentValue: 0,
  68. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  69. }, {
  70. Num: 0,
  71. Year: 0,
  72. Day: "322",
  73. Name: "",
  74. Time: 3,
  75. FacilityCode: 0,
  76. PropertyId: 0,
  77. CurrentValue: 0,
  78. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  79. }, {
  80. Num: 0,
  81. Year: 0,
  82. Day: "322",
  83. Name: "",
  84. Time: 3,
  85. FacilityCode: 0,
  86. PropertyId: 0,
  87. CurrentValue: 0,
  88. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  89. }
  90. ];
  91. dataArrayresult = [{
  92. Num: 0,
  93. Year: 0,
  94. Day: "321",
  95. Name: "",
  96. FacilityCode: 0,
  97. PropertyId: 0,
  98. CurrentValue: 0,
  99. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  100. }, {
  101. Num: 0,
  102. Year: 0,
  103. Day: "321",
  104. Name: "",
  105. FacilityCode: 0,
  106. PropertyId: 0,
  107. CurrentValue: 0,
  108. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  109. }, {
  110. Num: 0,
  111. Year: 0,
  112. Day: "321",
  113. Name: "",
  114. FacilityCode: 0,
  115. PropertyId: 0,
  116. CurrentValue: 0,
  117. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  118. }, {
  119. Num: 0,
  120. Year: 0,
  121. Day: "321",
  122. Name: "",
  123. FacilityCode: 0,
  124. PropertyId: 0,
  125. CurrentValue: 0,
  126. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  127. }, {
  128. Num: 0,
  129. Year: 0,
  130. Day: "321",
  131. Name: "",
  132. FacilityCode: 0,
  133. PropertyId: 0,
  134. CurrentValue: 0,
  135. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  136. }, {
  137. Num: 0,
  138. Year: 0,
  139. Day: "321",
  140. Name: "",
  141. FacilityCode: 0,
  142. PropertyId: 0,
  143. CurrentValue: 0,
  144. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  145. }, {
  146. Num: 0,
  147. Year: 0,
  148. Day: "321",
  149. Name: "",
  150. FacilityCode: 0,
  151. PropertyId: 0,
  152. CurrentValue: 0,
  153. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  154. }
  155. ];
  156. }
  157. function boilerdataSourceAdd(cnt) { // 설비 개수만큼 추가
  158. for (var i = 0; i < 7 * (cnt - 1) ; i++) {
  159. boilerdataSource.push({
  160. Num: 0,
  161. Year: 0,
  162. Day: "322",
  163. Name: "",
  164. Time: 3,
  165. FacilityCode: 0,
  166. PropertyId: 0,
  167. CurrentValue: 0,
  168. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  169. });
  170. }
  171. for (var i = 0; i < 7 * (cnt - 1) ; i++) {
  172. dataArrayresult.push({
  173. Num: 0,
  174. Year: 0,
  175. Day: "321",
  176. Name: "",
  177. FacilityCode: 0,
  178. PropertyId: 0,
  179. CurrentValue: 0,
  180. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  181. });
  182. }
  183. }
  184. var DataArray = ko.observableArray();
  185. var boilerdataSourceCnt = 0;
  186. var faclilitydataSourceCnt = 0;
  187. var datachar_after = new Date(); //현재일
  188. var dateChar = new Date(Date.parse(datachar_after) - 6 * 1000 * 60 * 60 * 24); //초기값 -6
  189. // 보일러 시설 정보 겟 함수
  190. function GetFaclilityData() {
  191. var dataSource = new DevExpress.data.DataSource({
  192. store: {
  193. type: "odata",
  194. url: endpointSelector + "/CmFacility"
  195. },
  196. requireTotalCount: true,
  197. pageSize: 10
  198. });
  199. dataSource.filter([
  200. ["SiteId", "=", BWA.UserInfo.SiteId()],
  201. "and",
  202. ["FacilityTypeId", "=", $Code.FacilityType.BOILER]
  203. ]);
  204. dataSource.load()
  205. .done(function (result) {
  206. faclilitydataSourceCnt = result.length; //보일러 설비 개수
  207. boilerdataSourceAdd(faclilitydataSourceCnt); // boilerdataSource 필요한 만큼 추가
  208. faclilitydataSource = result;
  209. $("#boiler_history_list").dxDataGrid("instance").option('dataSource', faclilitydataSource);//병합데이터 최종 연동
  210. })
  211. .fail(function (error) {
  212. utils.toast.show(error);
  213. });
  214. }
  215. // 보일러 정보 가져오기 함수
  216. function GetBoilerDailyData() {
  217. Source_init(); //boilerdataSource 초기화
  218. boilerdataSourceAdd(faclilitydataSourceCnt); // boilerdataSource 필요한 만큼 추가
  219. var dataSource = new DevExpress.data.DataSource({
  220. store: {
  221. type: "odata",
  222. url: endpointSelector + "/BemsMonitoringPointHistoryHourly"
  223. },
  224. requireTotalCount: true,
  225. pageSize: 672 // 설비 6개까지
  226. });
  227. dataSource.filter([
  228. ["SiteId", "=", BWA.UserInfo.SiteId()], //사이트 아이디
  229. "and",
  230. ["FacilityTypeId", "=", $Code.FacilityType.BOILER], //보일러 타입 8
  231. "and",
  232. ["PropertyId", "=", Action_time],//시간별 운전상태 기존 Action_state -> 변경 Action_time // 이유: 가동시간 0이 아니면 무조건 가동으로 판단
  233. "and",
  234. ["CreatedDateTime", ">=", new Date(dateChar.getFullYear(), dateChar.getMonth(), dateChar.getDate(), 0, 0, 0)],
  235. "and",
  236. ["CreatedDateTime", "<=", new Date(datachar_after.getFullYear(), datachar_after.getMonth(), datachar_after.getDate(), 23, 59, 59)]
  237. ]);
  238. dataSource.sort({ getter: "FacilityCode", ASC: true }, { getter: "CreatedDateTime", ASC: true });
  239. dataSource.load()
  240. .done(function (result) {
  241. boilerdataSourceCnt = result.length;
  242. var start = 0;
  243. var day = new Date();
  244. var search_first_day = new Date(dateChar.getFullYear(), dateChar.getMonth(), dateChar.getDate(), 0, 0, 0);
  245. var search_last_day = new Date(datachar_after.getFullYear(), datachar_after.getMonth(), datachar_after.getDate(), 0, 0, 0);
  246. var today = new Date(day.getFullYear(), day.getMonth(), day.getDate(), 0, 0, 0);
  247. var firstdaycondition = ((dateChar.getFullYear() == today.getFullYear()) && (dateChar.getMonth() == today.getMonth()) && (dateChar.getDate() == today.getDate())); //검색첫날이 오늘이면
  248. var lastdaycondition = ((search_last_day.getFullYear() == today.getFullYear()) && (search_last_day.getMonth() == today.getMonth()) && (search_last_day.getDate() == today.getDate())); //검색 마지막이 오늘이면
  249. var middaycondition = ((today.getTime() - search_first_day.getTime()) / (1000 * 60 * 60 * 24)) < 6;//검색기간중 오늘이 포함하면
  250. var btMs = today.getTime() - search_first_day.getTime(); //오늘과 검색 첫날 날짜 차이
  251. var btDay = btMs / (1000 * 60 * 60 * 24); //날짜 차이 일수
  252. var changed = false;
  253. var insert = 0;
  254. if (lastdaycondition || firstdaycondition || middaycondition) { //검색마지막 날짜가 오늘이거나 검색 처음날이 오늘이거나
  255. for (var i = 0; i < 7 * faclilitydataSourceCnt; i++)//7일 * 설비 개수 = 행 개수
  256. {
  257. var lastcnt = 0;
  258. for (var j = start; j < boilerdataSourceCnt; j++) // 가져온 데이터는 350개
  259. {
  260. if (boilerdataSource[i].Day == "322") // 초기화 데이터
  261. {
  262. var insertmonth = result[j].CreatedDateTime.getMonth() + 1;
  263. var insertday = result[j].CreatedDateTime.getDate();
  264. if (insertmonth > 9) {
  265. if (insertday > 9)
  266. boilerdataSource[i].Day = (insertmonth + "-" + insertday);
  267. else
  268. boilerdataSource[i].Day = (insertmonth + "-0" + insertday);
  269. }
  270. else {
  271. if (insertday > 9)
  272. boilerdataSource[i].Day = ("0" + insertmonth + "-" + insertday);
  273. else
  274. boilerdataSource[i].Day = ("0" + insertmonth + "-0" + insertday);
  275. }
  276. boilerdataSource[i].Year = result[j].CreatedDateTime.getFullYear();
  277. for (var k = 0; k < faclilitydataSourceCnt; k++) { //보일러 개수
  278. if (result[j].FacilityCode == faclilitydataSource[k].FacilityCode) {
  279. boilerdataSource[i].Name = faclilitydataSource[k].Name;
  280. boilerdataSource[i].FacilityCode = faclilitydataSource[k].FacilityCode;
  281. break;
  282. }
  283. }
  284. ONOFF_state(i, j, result);
  285. }
  286. if (insertmonth > 9) {
  287. if (insertday > 9) {
  288. if (boilerdataSource[i].Day == (insertmonth + "-" + insertday)) {
  289. ONOFF_state(i, j, result);
  290. }
  291. }
  292. else {
  293. if (boilerdataSource[i].Day == (insertmonth + "-0" + insertday)) {
  294. ONOFF_state(i, j, result);
  295. }
  296. }
  297. }
  298. else {
  299. if (insertday > 9) {
  300. if (boilerdataSource[i].Day == ("0" + insertmonth + "-" + insertday)) {
  301. ONOFF_state(i, j, result);
  302. }
  303. }
  304. else {
  305. if (boilerdataSource[i].Day == ("0" + insertmonth + "-0" + insertday)) {
  306. ONOFF_state(i, j, result);
  307. }
  308. }
  309. }
  310. if (((i % 7 == 6) && lastdaycondition) || firstdaycondition || (middaycondition && (i % (btDay + 1) == btDay))) {//
  311. lastcnt++;
  312. start++;
  313. if (day.getMinutes() < 15) {
  314. if (lastcnt % (day.getHours()) == 0)
  315. break;
  316. }
  317. else {
  318. if (lastcnt % (day.getHours() + 1) == 0)
  319. break;
  320. }
  321. }
  322. else {
  323. start++;
  324. if (j < boilerdataSourceCnt - 1) {
  325. if (result[j].CreatedDateTime.getDate() != result[j + 1].CreatedDateTime.getDate())
  326. break;
  327. }
  328. }
  329. }
  330. }
  331. for (var i = 0; i < 7 * faclilitydataSourceCnt; i++) { //백그라운드 컬러 위해서
  332. if (lastdaycondition)//검색마지막날이 오늘 7일치
  333. for (var j = 1; j <= 5; j = j + 2) {
  334. if ((i % 7) == j)
  335. boilerdataSource[i].Num = 1;
  336. }
  337. if (firstdaycondition)//검색첫날이 오늘이면 안해도됨
  338. { }
  339. if (middaycondition) //검색중간 오늘을 포함하면
  340. for (var j = 1; j <= 5; j = j + 2) {
  341. if ((i % (btDay + 1)) == j)
  342. boilerdataSource[i].Num = 1;
  343. }
  344. }
  345. }
  346. else { //검색 마지막 날짜가 오늘이 아니면 7일짜리
  347. for (var i = 0; i < 7 * faclilitydataSourceCnt; i++)//7일 * 설비 개수 = 행 개수
  348. {
  349. for (var j = start; j < boilerdataSourceCnt; j++) // 가져온 데이터는 350개
  350. {
  351. if (boilerdataSource[i].Day == "322") // 초기화 데이터
  352. {
  353. var insertmonth = result[j].CreatedDateTime.getMonth() + 1;
  354. var insertday = result[j].CreatedDateTime.getDate();
  355. if (insertmonth > 9) {
  356. if (insertday > 9)
  357. boilerdataSource[i].Day = (insertmonth + "-" + insertday);
  358. else
  359. boilerdataSource[i].Day = (insertmonth + "-0" + insertday);
  360. }
  361. else {
  362. if (insertday > 9)
  363. boilerdataSource[i].Day = ("0" + insertmonth + "-" + insertday);
  364. else
  365. boilerdataSource[i].Day = ("0" + insertmonth + "-0" + insertday);
  366. }
  367. boilerdataSource[i].Year = result[j].CreatedDateTime.getFullYear();
  368. for (var k = 0; k < faclilitydataSourceCnt; k++) { //보일러 개수
  369. if (result[j].FacilityCode == faclilitydataSource[k].FacilityCode) {
  370. boilerdataSource[i].Name = faclilitydataSource[k].Name;
  371. boilerdataSource[i].FacilityCode = faclilitydataSource[k].FacilityCode;
  372. break;
  373. }
  374. }
  375. ONOFF_state(i, j, result);
  376. }
  377. if (insertmonth > 9) {
  378. if (insertday > 9) {
  379. if (boilerdataSource[i].Day == (insertmonth + "-" + insertday)) {
  380. ONOFF_state(i, j, result);
  381. start++;
  382. }
  383. }
  384. else {
  385. if (boilerdataSource[i].Day == (insertmonth + "-0" + insertday)) {
  386. ONOFF_state(i, j, result);
  387. start++;
  388. }
  389. }
  390. }
  391. else {
  392. if (insertday > 9) {
  393. if (boilerdataSource[i].Day == ("0" + insertmonth + "-" + insertday)) {
  394. ONOFF_state(i, j, result);
  395. start++;
  396. }
  397. }
  398. else {
  399. if (boilerdataSource[i].Day == ("0" + insertmonth + "-0" + insertday)) {
  400. ONOFF_state(i, j, result);
  401. start++;
  402. }
  403. }
  404. }
  405. if (j < boilerdataSourceCnt - 1) {
  406. if (result[j].CreatedDateTime.getDate() != result[j + 1].CreatedDateTime.getDate())
  407. break;
  408. }
  409. }
  410. }
  411. for (var i = 0; i < 7 * faclilitydataSourceCnt; i++) { //백그라운드 컬러 위해서
  412. for (var j = 1; j <= 5; j = j + 2) {
  413. if ((i % 7) == j)
  414. boilerdataSource[i].Num = 1;
  415. }
  416. }
  417. }
  418. setTimeout(GetFacilityTime(), 1500);//보일러 운전 시간 가져오기 함수
  419. })
  420. .fail(function (error) {
  421. $("#LoadPanel").dxLoadPanel('instance').option('visible', false);
  422. utils.toast.show(error);
  423. });
  424. }
  425. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  426. function DataGridPopup_ButtonClick() {
  427. DataGridPopup_Visible(true);
  428. }
  429. function handlePopupShown() {
  430. // 데이타소스 업데이트
  431. $("#PlanBoilerHistoryDataGrid_Container").dxDataGrid("instance").option("dataSource", resultdataArrayresult);
  432. // 팝업창 갱신
  433. DataGridPopup_Visible(true);
  434. }
  435. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  436. function GetFacilityTime() { //가동시간 추가 함수
  437. var value = 0;
  438. var hourdataSource = new DevExpress.data.DataSource({
  439. store: {
  440. type: "odata",
  441. url: endpointSelector + "/BemsMonitoringPointHistoryDaily"
  442. },
  443. requireTotalCount: true,
  444. pageSize: 42
  445. });
  446. hourdataSource.filter([
  447. ["SiteId", "=", BWA.UserInfo.SiteId()], //사이트 아이디
  448. "and",
  449. ["FacilityTypeId", "=", $Code.FacilityType.BOILER], //보일러 타입
  450. "and",
  451. ["PropertyId", "=", Action_time], //시간별 가동시간
  452. "and",
  453. ["CreatedDateTime", ">=", new Date(dateChar.getFullYear(), dateChar.getMonth(), dateChar.getDate(), 0, 0, 0)],
  454. "and",
  455. ["CreatedDateTime", "<=", new Date(datachar_after.getFullYear(), datachar_after.getMonth(), datachar_after.getDate(), 23, 59, 59)]
  456. ]);
  457. hourdataSource.sort({ getter: "FacilityCode", ASC: true }, { getter: "CreatedDateTime", ASC: true });
  458. hourdataSource.load()
  459. .done(function (result2) {
  460. var timecnt = result2.length;
  461. var start = 0;
  462. for (var i = 0; i < 7 * faclilitydataSourceCnt ; i++) {
  463. for (var j = start; j < timecnt; j++) {
  464. var insertmonth = result2[j].CreatedDateTime.getMonth() + 1;
  465. var insertday = result2[j].CreatedDateTime.getDate();
  466. if (insertmonth > 9) {
  467. if (insertday > 9) {
  468. if ((boilerdataSource[i].Day == (insertmonth + "-" + insertday)) && (boilerdataSource[i].FacilityCode == result2[j].FacilityCode)) {
  469. boilerdataSource[i].Time = result2[j].DailyValue;
  470. start++;
  471. break;
  472. }
  473. }
  474. else {
  475. if ((boilerdataSource[i].Day == (insertmonth + "-0" + insertday)) && (boilerdataSource[i].FacilityCode == result2[j].FacilityCode)) {
  476. boilerdataSource[i].Time = result2[j].DailyValue;
  477. start++;
  478. break;
  479. }
  480. }
  481. }
  482. else {
  483. if (insertday > 9) {
  484. if ((boilerdataSource[i].Day == ("0" + insertmonth + "-" + insertday)) && (boilerdataSource[i].FacilityCode == result2[j].FacilityCode)) {
  485. boilerdataSource[i].Time = result2[j].DailyValue;
  486. start++;
  487. break;
  488. }
  489. }
  490. else {
  491. if ((boilerdataSource[i].Day == ("0" + insertmonth + "-0" + insertday)) && (boilerdataSource[i].FacilityCode == result2[j].FacilityCode)) {
  492. boilerdataSource[i].Time = result2[j].DailyValue;
  493. start++;
  494. break;
  495. }
  496. }
  497. }
  498. }
  499. }
  500. for (var i = 0; i < boilerdataSource.length; i++)//각 일 데이터 여부 확인 7 * faclilitydataSourceCnt
  501. {
  502. if (boilerdataSource[i] != null)
  503. value = value + 1;
  504. }
  505. for (var i = 0; i < value; i++)//각 일 데이터 여부 확인 7 * faclilitydataSourceCnt
  506. {
  507. if (boilerdataSource[i].Name == "")
  508. boilerdataSource[i] = null;
  509. }
  510. $("#boiler_data_list").dxDataGrid("instance").option('dataSource', boilerdataSource);//병합데이터 최종 연동
  511. $("#LoadPanel").dxLoadPanel('instance').option('visible', false);
  512. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  513. var tempdataArrayresult = boilerdataSource;
  514. var cnt = 0;
  515. for (var i = 0; i < boilerdataSource.length; i++) {
  516. if (boilerdataSource[i] != null) {
  517. tempdataArrayresult[cnt] = boilerdataSource[i];
  518. cnt++;
  519. }
  520. }
  521. for (var i = 0; i < cnt; i++)//각 일 데이터 여부 확인
  522. {
  523. dataArrayresult[i].Day = tempdataArrayresult[i].Day;
  524. dataArrayresult[i].Name = tempdataArrayresult[i].Name + " [" + tempdataArrayresult[i].Time + "]";
  525. dataArrayresult[i].T0 = ONOFF(tempdataArrayresult[i].T0);
  526. dataArrayresult[i].T1 = ONOFF(tempdataArrayresult[i].T1);
  527. dataArrayresult[i].T2 = ONOFF(tempdataArrayresult[i].T2);
  528. dataArrayresult[i].T3 = ONOFF(tempdataArrayresult[i].T3);
  529. dataArrayresult[i].T4 = ONOFF(tempdataArrayresult[i].T4);
  530. dataArrayresult[i].T5 = ONOFF(tempdataArrayresult[i].T5);
  531. dataArrayresult[i].T6 = ONOFF(tempdataArrayresult[i].T6);
  532. dataArrayresult[i].T7 = ONOFF(tempdataArrayresult[i].T7);
  533. dataArrayresult[i].T8 = ONOFF(tempdataArrayresult[i].T8);
  534. dataArrayresult[i].T9 = ONOFF(tempdataArrayresult[i].T9);
  535. dataArrayresult[i].T10 = ONOFF(tempdataArrayresult[i].T10);
  536. dataArrayresult[i].T11 = ONOFF(tempdataArrayresult[i].T11);
  537. dataArrayresult[i].T12 = ONOFF(tempdataArrayresult[i].T12);
  538. dataArrayresult[i].T13 = ONOFF(tempdataArrayresult[i].T13);
  539. dataArrayresult[i].T14 = ONOFF(tempdataArrayresult[i].T14);
  540. dataArrayresult[i].T15 = ONOFF(tempdataArrayresult[i].T15);
  541. dataArrayresult[i].T16 = ONOFF(tempdataArrayresult[i].T16);
  542. dataArrayresult[i].T17 = ONOFF(tempdataArrayresult[i].T17);
  543. dataArrayresult[i].T18 = ONOFF(tempdataArrayresult[i].T18);
  544. dataArrayresult[i].T19 = ONOFF(tempdataArrayresult[i].T19);
  545. dataArrayresult[i].T20 = ONOFF(tempdataArrayresult[i].T20);
  546. dataArrayresult[i].T21 = ONOFF(tempdataArrayresult[i].T21);
  547. dataArrayresult[i].T22 = ONOFF(tempdataArrayresult[i].T22);
  548. dataArrayresult[i].T23 = ONOFF(tempdataArrayresult[i].T23);
  549. }
  550. resultdataArrayresult = [];
  551. for (var i = 0; i < cnt; i++) {
  552. resultdataArrayresult.push({
  553. Num: 0,
  554. Year: 0,
  555. Day: "321",
  556. Name: "",
  557. FacilityCode: 0,
  558. PropertyId: 0,
  559. CurrentValue: 0,
  560. T0: 0, T1: 0, T2: 0, T3: 0, T4: 0, T5: 0, T6: 0, T7: 0, T8: 0, T9: 0, T10: 0, T11: 0, T12: 0, T13: 0, T14: 0, T15: 0, T16: 0, T17: 0, T18: 0, T19: 0, T20: 0, T21: 0, T22: 0, T23: 0
  561. });
  562. }
  563. for (var i = 0; i < cnt; i++) {
  564. resultdataArrayresult[i] = dataArrayresult[i];
  565. }
  566. })
  567. .fail(function (error) {
  568. utils.toast.show(error);
  569. });
  570. }
  571. function ONOFF(num) {
  572. if (num > 0) {
  573. return 'O';
  574. }
  575. else {
  576. return 'X';
  577. }
  578. }
  579. function ONOFF_state(i, j, result) { //시간마다 값 추가
  580. var Month = result[j].CreatedDateTime.getMonth() + 1;
  581. var Date = result[j].CreatedDateTime.getDate();
  582. var resultday;
  583. if (Month <= 9) {
  584. if (Date <= 9) {
  585. resultday = "0" + Month + "-" + "0" + Date;
  586. }
  587. else {
  588. resultday = "0" + Month + "-" + Date;
  589. }
  590. }
  591. else {
  592. if (Date <= 9) {
  593. resultday = Month + "-" + "0" + Date;
  594. }
  595. else {
  596. resultday = Month + "-" + Date;
  597. }
  598. }
  599. switch (result[j].CreatedDateTime.getHours()) {
  600. case 0:
  601. if (boilerdataSource[i].Day == resultday) {
  602. boilerdataSource[i].T0 = result[j].CurrentValue;
  603. }
  604. break;
  605. case 1:
  606. if (boilerdataSource[i].Day == resultday) {
  607. boilerdataSource[i].T1 = result[j].CurrentValue;
  608. }
  609. break;
  610. case 2:
  611. if (boilerdataSource[i].Day == resultday) {
  612. boilerdataSource[i].T2 = result[j].CurrentValue;
  613. }
  614. break;
  615. case 3:
  616. if (boilerdataSource[i].Day == resultday) {
  617. boilerdataSource[i].T3 = result[j].CurrentValue;
  618. }
  619. break;
  620. case 4:
  621. if (boilerdataSource[i].Day == resultday) {
  622. boilerdataSource[i].T4 = result[j].CurrentValue;
  623. }
  624. break;
  625. case 5:
  626. if (boilerdataSource[i].Day == resultday) {
  627. boilerdataSource[i].T5 = result[j].CurrentValue;
  628. }
  629. break;
  630. case 6:
  631. if (boilerdataSource[i].Day == resultday) {
  632. boilerdataSource[i].T6 = result[j].CurrentValue;
  633. }
  634. break;
  635. case 7:
  636. if (boilerdataSource[i].Day == resultday) {
  637. boilerdataSource[i].T7 = result[j].CurrentValue;
  638. }
  639. break;
  640. case 8:
  641. if (boilerdataSource[i].Day == resultday) {
  642. boilerdataSource[i].T8 = result[j].CurrentValue;
  643. }
  644. break;
  645. case 9:
  646. if (boilerdataSource[i].Day == resultday) {
  647. boilerdataSource[i].T9 = result[j].CurrentValue;
  648. }
  649. break;
  650. case 10:
  651. if (boilerdataSource[i].Day == resultday) {
  652. boilerdataSource[i].T10 = result[j].CurrentValue;
  653. }
  654. break;
  655. case 11:
  656. if (boilerdataSource[i].Day == resultday) {
  657. boilerdataSource[i].T11 = result[j].CurrentValue;
  658. }
  659. break;
  660. case 12:
  661. if (boilerdataSource[i].Day == resultday) {
  662. boilerdataSource[i].T12 = result[j].CurrentValue;
  663. }
  664. break;
  665. case 13:
  666. if (boilerdataSource[i].Day == resultday) {
  667. boilerdataSource[i].T13 = result[j].CurrentValue;
  668. }
  669. break;
  670. case 14:
  671. if (boilerdataSource[i].Day == resultday) {
  672. boilerdataSource[i].T14 = result[j].CurrentValue;
  673. }
  674. break;
  675. case 15:
  676. if (boilerdataSource[i].Day == resultday) {
  677. boilerdataSource[i].T15 = result[j].CurrentValue;
  678. }
  679. break;
  680. case 16:
  681. if (boilerdataSource[i].Day == resultday) {
  682. boilerdataSource[i].T16 = result[j].CurrentValue;
  683. }
  684. break;
  685. case 17:
  686. if (boilerdataSource[i].Day == resultday) {
  687. boilerdataSource[i].T17 = result[j].CurrentValue;
  688. }
  689. break;
  690. case 18:
  691. if (boilerdataSource[i].Day == resultday) {
  692. boilerdataSource[i].T18 = result[j].CurrentValue;
  693. }
  694. break;
  695. case 19:
  696. if (boilerdataSource[i].Day == resultday) {
  697. boilerdataSource[i].T19 = result[j].CurrentValue;
  698. }
  699. break;
  700. case 20:
  701. if (boilerdataSource[i].Day == resultday) {
  702. boilerdataSource[i].T20 = result[j].CurrentValue;
  703. }
  704. break;
  705. case 21:
  706. if (boilerdataSource[i].Day == resultday) {
  707. boilerdataSource[i].T21 = result[j].CurrentValue;
  708. }
  709. break;
  710. case 22:
  711. if (boilerdataSource[i].Day == resultday) {
  712. boilerdataSource[i].T22 = result[j].CurrentValue;
  713. }
  714. break;
  715. case 23:
  716. if (boilerdataSource[i].Day == resultday) {
  717. boilerdataSource[i].T23 = result[j].CurrentValue;
  718. }
  719. break;
  720. }
  721. }
  722. function handleViewShowing() {
  723. Source_init(); // boilerdataSource 초기화 함수
  724. //보일러 설비 정보 가져오기
  725. setTimeout(GetFaclilityData(), 500);
  726. }
  727. function handleViewShown() {
  728. $("#LoadPanel").dxLoadPanel({
  729. message: '로딩 중...',
  730. showIndicator: true,
  731. visible: false
  732. });
  733. $("#LoadPanel").dxLoadPanel('instance').option('visible', true);
  734. $SideMenu.showSideMenuIfWill(params.view);
  735. setTimeout(GetBoilerDailyData(), 1000);
  736. var insertmonth = datachar_after.getMonth() + 1;
  737. var insertdate = datachar_after.getDate();
  738. if (insertmonth > 9) {
  739. if (insertdate > 9) {
  740. $("#DateBox").dxTextBox({
  741. value: "~ " + datachar_after.getFullYear() + "-" + insertmonth + "-" + insertdate,
  742. readOnly: true
  743. });
  744. }
  745. else {
  746. $("#DateBox").dxTextBox({
  747. value: "~ " + datachar_after.getFullYear() + "-" + insertmonth + "-0" + insertdate,
  748. readOnly: true
  749. });
  750. }
  751. }
  752. else {
  753. if (insertdate > 9) {
  754. $("#DateBox").dxTextBox({
  755. value: "~ " + datachar_after.getFullYear() + "-0" + insertmonth + "-" + insertdate,
  756. readOnly: true
  757. });
  758. }
  759. else {
  760. $("#DateBox").dxTextBox({
  761. value: "~ " + datachar_after.getFullYear() + "-0" + insertmonth + "-0" + insertdate,
  762. readOnly: true
  763. });
  764. }
  765. }
  766. $SearchView.setPopupVisibleObservable(null);
  767. }
  768. var searchViewOptions = {
  769. }
  770. function handleSearchInSearchView() {
  771. }
  772. function cellTemplate_color(container, options) {
  773. $('<img />')
  774. .attr('src', function () {
  775. if (options.value == 0) {
  776. return "/images/gray.png";
  777. }
  778. else {
  779. return "/images/green.png";
  780. }
  781. })
  782. .appendTo(container);
  783. }
  784. var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView),
  785. {
  786. viewShown: handleViewShown,
  787. viewShowing: handleViewShowing,
  788. boiler_history_list: {
  789. dataSource: faclilitydataSource,
  790. columns: [
  791. { dataField: 'Name', width: '200px', alignment: 'left' }
  792. ],
  793. visible: false
  794. },
  795. boiler_data_list: {
  796. dataSource: boilerdataSource,
  797. paging: { pageSize: 28 },
  798. columns: [
  799. { dataField: 'Year', caption: '연도', width: '5.6%', alignment: 'center', sortOrder: 'asc', visible: false },
  800. { dataField: 'Day', caption: '가동일', width: '5.6%', alignment: 'center', sortOrder: 'asc' },
  801. { dataField: 'Name', caption: '설비명칭', width: '14%', alignment: 'center', allowSorting: false },
  802. { dataField: 'Time', caption: '가동시간(분)', width: '6%', alignment: 'center', allowSorting: false },
  803. {
  804. dataField: 'T0', caption: '0시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  805. cellTemplate_color(container, options);
  806. }
  807. },
  808. {
  809. dataField: 'T1', caption: '1시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  810. cellTemplate_color(container, options);
  811. }
  812. },
  813. {
  814. dataField: 'T2', caption: '2시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  815. cellTemplate_color(container, options);
  816. }
  817. },
  818. {
  819. dataField: 'T3', caption: '3시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  820. cellTemplate_color(container, options);
  821. }
  822. },
  823. {
  824. dataField: 'T4', caption: '4시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  825. cellTemplate_color(container, options);
  826. }
  827. },
  828. {
  829. dataField: 'T5', caption: '5시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  830. cellTemplate_color(container, options);
  831. }
  832. },
  833. {
  834. dataField: 'T6', caption: '6시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  835. cellTemplate_color(container, options);
  836. }
  837. },
  838. {
  839. dataField: 'T7', caption: '7시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  840. cellTemplate_color(container, options);
  841. }
  842. },
  843. {
  844. dataField: 'T8', caption: '8시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  845. cellTemplate_color(container, options);
  846. }
  847. },
  848. {
  849. dataField: 'T9', caption: '9시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  850. cellTemplate_color(container, options);
  851. }
  852. },
  853. {
  854. dataField: 'T10', caption: '10시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  855. cellTemplate_color(container, options);
  856. }
  857. },
  858. {
  859. dataField: 'T11', caption: '11시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  860. cellTemplate_color(container, options);
  861. }
  862. },
  863. {
  864. dataField: 'T12', caption: '12시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  865. cellTemplate_color(container, options);
  866. }
  867. },
  868. {
  869. dataField: 'T13', caption: '13시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  870. cellTemplate_color(container, options);
  871. }
  872. },
  873. {
  874. dataField: 'T14', caption: '14시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  875. cellTemplate_color(container, options);
  876. }
  877. },
  878. {
  879. dataField: 'T15', caption: '15시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  880. cellTemplate_color(container, options);
  881. }
  882. },
  883. {
  884. dataField: 'T16', caption: '16시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  885. cellTemplate_color(container, options);
  886. }
  887. },
  888. {
  889. dataField: 'T17', caption: '17시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  890. cellTemplate_color(container, options);
  891. }
  892. },
  893. {
  894. dataField: 'T18', caption: '18시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  895. cellTemplate_color(container, options);
  896. }
  897. },
  898. {
  899. dataField: 'T19', caption: '19시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  900. cellTemplate_color(container, options);
  901. }
  902. },
  903. {
  904. dataField: 'T20', caption: '20시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  905. cellTemplate_color(container, options);
  906. }
  907. },
  908. {
  909. dataField: 'T21', caption: '21시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  910. cellTemplate_color(container, options);
  911. }
  912. },
  913. {
  914. dataField: 'T22', caption: '22시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  915. cellTemplate_color(container, options);
  916. }
  917. },
  918. {
  919. dataField: 'T23', caption: '23시', width: '3.1%', alignment: 'center', allowSorting: false, cellTemplate: function (container, options) {
  920. cellTemplate_color(container, options);
  921. }
  922. }
  923. ],
  924. onRowPrepared: function (info) {
  925. if (info.rowType != 'header')
  926. if (info.data.Num == 1)
  927. info.rowElement.css('background-color', 'rgba(206,246,245,0.4)');
  928. }
  929. },
  930. boiler_history_calendarPicker: {
  931. pickerType: "calendar",
  932. format: "date",
  933. value: new Date(Date.parse(datachar_after) - 6 * 1000 * 60 * 60 * 24),
  934. onValueChanged: function () {
  935. var today = new Date();
  936. dateChar = $("#boiler_history_calendarPicker").dxDateBox("instance").option('value');
  937. if (dateChar > today)
  938. utils.toast.show('선택된 날짜를 검색할수 없습니다...', 'error');
  939. else {
  940. datachar_after = new Date(Date.parse(dateChar) + 6 * 1000 * 60 * 60 * 24);
  941. GetBoilerDailyData();
  942. }
  943. var insertmonth = datachar_after.getMonth() + 1;
  944. var insertdate = datachar_after.getDate();
  945. var todaymonth = today.getMonth() + 1;
  946. var todaydate = today.getDate();
  947. if (datachar_after < today) {
  948. if (insertmonth > 9) {
  949. if (insertdate > 9) {
  950. $("#DateBox").dxTextBox({
  951. value: "~ " + datachar_after.getFullYear() + "-" + insertmonth + "-" + insertdate,
  952. readOnly: true
  953. });
  954. }
  955. else {
  956. $("#DateBox").dxTextBox({
  957. value: "~ " + datachar_after.getFullYear() + "-" + insertmonth + "-0" + insertdate,
  958. readOnly: true
  959. });
  960. }
  961. }
  962. else {
  963. if (insertdate > 9) {
  964. $("#DateBox").dxTextBox({
  965. value: "~ " + datachar_after.getFullYear() + "-0" + insertmonth + "-" + insertdate,
  966. readOnly: true
  967. });
  968. }
  969. else {
  970. $("#DateBox").dxTextBox({
  971. value: "~ " + datachar_after.getFullYear() + "-0" + insertmonth + "-0" + insertdate,
  972. readOnly: true
  973. });
  974. }
  975. }
  976. }
  977. else {
  978. if (todaymonth > 9) {
  979. if (todaydate > 9) {
  980. $("#DateBox").dxTextBox({
  981. value: "~ " + today.getFullYear() + "-" + todaymonth + "-" + todaydate,
  982. readOnly: true
  983. });
  984. }
  985. else {
  986. $("#DateBox").dxTextBox({
  987. value: "~ " + today.getFullYear() + "-" + todaymonth + "-0" + todaydate,
  988. readOnly: true
  989. });
  990. }
  991. }
  992. else {
  993. if (todaydate > 9) {
  994. $("#DateBox").dxTextBox({
  995. value: "~ " + today.getFullYear() + "-0" + todaymonth + "-" + todaydate,
  996. readOnly: true
  997. });
  998. }
  999. else {
  1000. $("#DateBox").dxTextBox({
  1001. value: "~ " + today.getFullYear() + "-0" + todaymonth + "-0" + todaydate,
  1002. readOnly: true
  1003. });
  1004. }
  1005. }
  1006. }
  1007. }
  1008. }
  1009. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  1010. , PlanBoilerHistoryDataGridPopup_ButtonClicked: DataGridPopup_ButtonClick
  1011. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  1012. });
  1013. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  1014. viewModel.PlanBoilerHistoryDataGridPopupOptions = {
  1015. width: '1400px',
  1016. height: '820px',
  1017. contentTemplate: "content",
  1018. showTitle: true,
  1019. title: "도표",
  1020. visible: DataGridPopup_Visible,
  1021. dragEnabled: true,
  1022. closeOnOutsideClick: true,
  1023. shownAction: handlePopupShown,
  1024. animation: window.utils.popup.createAnimation()
  1025. };
  1026. viewModel.PlanBoilerHistoryDataGridOptions = {
  1027. dataSource: resultdataArrayresult,
  1028. columns: [
  1029. { dataField: 'Day', caption: "가동일", width: '7%', alignment: 'center', sortOrder: 'asc' },
  1030. { dataField: 'Name', caption: '설비명칭[가동시간(분)]', width: '13.8%', alignment: 'center', allowSorting: false },
  1031. { dataField: 'T0', caption: '0시', width: '3.3%', alignment: 'center', allowSorting: false },
  1032. { dataField: 'T1', caption: '1시', width: '3.3%', alignment: 'center', allowSorting: false },
  1033. { dataField: 'T2', caption: '2시', width: '3.3%', alignment: 'center', allowSorting: false },
  1034. { dataField: 'T3', caption: '3시', width: '3.3%', alignment: 'center', allowSorting: false },
  1035. { dataField: 'T4', caption: '4시', width: '3.3%', alignment: 'center', allowSorting: false },
  1036. { dataField: 'T5', caption: '5시', width: '3.3%', alignment: 'center', allowSorting: false },
  1037. { dataField: 'T6', caption: '6시', width: '3.3%', alignment: 'center', allowSorting: false },
  1038. { dataField: 'T7', caption: '7시', width: '3.3%', alignment: 'center', allowSorting: false },
  1039. { dataField: 'T8', caption: '8시', width: '3.3%', alignment: 'center', allowSorting: false },
  1040. { dataField: 'T9', caption: '9시', width: '3.3%', alignment: 'center', allowSorting: false },
  1041. { dataField: 'T10', caption: '10시', width: '3.3%', alignment: 'center', allowSorting: false },
  1042. { dataField: 'T11', caption: '11시', width: '3.3%', alignment: 'center', allowSorting: false },
  1043. { dataField: 'T12', caption: '12시', width: '3.3%', alignment: 'center', allowSorting: false },
  1044. { dataField: 'T13', caption: '13시', width: '3.3%', alignment: 'center', allowSorting: false },
  1045. { dataField: 'T14', caption: '14시', width: '3.3%', alignment: 'center', allowSorting: false },
  1046. { dataField: 'T15', caption: '15시', width: '3.3%', alignment: 'center', allowSorting: false },
  1047. { dataField: 'T16', caption: '16시', width: '3.3%', alignment: 'center', allowSorting: false },
  1048. { dataField: 'T17', caption: '17시', width: '3.3%', alignment: 'center', allowSorting: false },
  1049. { dataField: 'T18', caption: '18시', width: '3.3%', alignment: 'center', allowSorting: false },
  1050. { dataField: 'T19', caption: '19시', width: '3.3%', alignment: 'center', allowSorting: false },
  1051. { dataField: 'T20', caption: '20시', width: '3.3%', alignment: 'center', allowSorting: false },
  1052. { dataField: 'T21', caption: '21시', width: '3.3%', alignment: 'center', allowSorting: false },
  1053. { dataField: 'T22', caption: '22시', width: '3.3%', alignment: 'center', allowSorting: false },
  1054. { dataField: 'T23', caption: '23시', width: '3.3%', alignment: 'center', allowSorting: false }
  1055. ],
  1056. // 엑셀 출력
  1057. "export": {
  1058. enabled: true,
  1059. fileName: '보일러 운전이력'
  1060. }
  1061. };
  1062. // 2018.07.24 : 그리드 도표 작업 : 팝업창 추가
  1063. return viewModel;
  1064. };