{"version":3,"file":"app-858624a1.b149463909b5e91f4e75.bundle.js","mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAIA;AAAA;AAQA;AACA;AACA;AANA;AACA;AAAA;AACA;AAMA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AAFA;AACA;;AACA;AAqBA;AAAA;AArBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA;AAGA;AAAA;AAYA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AACA;AAEA;AAEA;AAKA;AAAA;AAgEA;AAAA;AAlDA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAqDA;AAkfA;AAniBA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAEA;;;AACA;AACA;AACA;AAEA;;;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AAEA;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAKA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;;AAlSA;AADA;AAAA;AAuSA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AAEA;AACA;AAMA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAt5BA;AAFA;AACA;AAiEA;AAhEA;AAu5BA;AAAA;AAv5BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AAGA;AAAA;AAYA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAQA;AAAA;AA8FA;AAAA;AAjFA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AA4DA;AA6hBA;AAGA;AAzkBA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AA/CA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAoCA;;;AACA;AACA;AACA;AAEA;;;;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AAEA;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAKA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA9TA;AADA;AAAA;AAiUA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAgBA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAGA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AAMA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAIA;AACA;AACA;AA/lCA;AAFA;AACA;AA+FA;AA9FA;AA+mCA;AAAA;AA/mCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AAKA;AAAA;AAMA;AACA;AAEA;AAPA;AAEA;AAJA;AAFA;AACA;;AACA;AAaA;AAAA;AAbA","sources":["webpack://app/./src/Modules/Aqs/Locales/en/AirQualityIndex.json?1568","webpack://app/./src/Modules/Aqs/Locales/en/Common.json?cf5f","webpack://app/./src/Modules/Aqs/Locales/en/Dashboard.json?0ade","webpack://app/./src/Modules/Aqs/Locales/en/Home.json?8464","webpack://app/./src/Modules/Aqs/Locales/en/Issue.json?8fd7","webpack://app/./src/Modules/Aqs/Locales/en/Map.json?730a","webpack://app/./src/Modules/Aqs/Locales/en/News.json?c7fd","webpack://app/./src/Modules/Aqs/Locales/th/AirQualityIndex.json?c209","webpack://app/./src/Modules/Aqs/Locales/th/Common.json?2f6f","webpack://app/./src/Modules/Aqs/Locales/th/Dashboard.json?14d1","webpack://app/./src/Modules/Aqs/Locales/th/Home.json?1c31","webpack://app/./src/Modules/Aqs/Locales/th/Issue.json?8dfc","webpack://app/./src/Modules/Aqs/Locales/th/Map.json?91e0","webpack://app/./src/Modules/Aqs/Locales/th/News.json?e5b9","webpack://app/./src/Modules/Aqs/Programs/AirQualityIndex/AirQualityIndexSearchView.html","webpack://app/./src/Modules/Aqs/Programs/DashboardEgat/DashboardSearchView.html","webpack://app/./src/Modules/Aqs/Programs/Dashboard/DashboardSearchView.html","webpack://app/./src/Modules/Aqs/Programs/Dashboard/ErrorDialogView.html","webpack://app/./src/Modules/Aqs/Programs/EmissionMapGraphPublic/EmissionMapGraphPublicSearchView.html","webpack://app/./src/Modules/Aqs/Programs/AirQualityIndex/AirQualityIndexSearchVM.ts","webpack://app/./src/Modules/Aqs/Programs/DashboardEgat/DashboardEditorVM.ts","webpack://app/./src/Modules/Aqs/Programs/DashboardEgat/DashboardSearchVM.ts","webpack://app/./src/Modules/Aqs/Programs/Dashboard/DashboardEditorVM.ts","webpack://app/./src/Modules/Aqs/Programs/Dashboard/DashboardSearchVM.ts","webpack://app/./src/Modules/Aqs/Programs/EmissionMapGraphPublic/EmissionMapGraphPublicSearchVM.ts"],"sourcesContent":["module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./AirQualityIndex.json\"));\n\t}, \"lang-en\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Common.json\"));\n\t}, \"lang-en\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Dashboard.json\"));\n\t}, \"lang-en\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Home.json\"));\n\t}, \"lang-en\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Issue.json\"));\n\t}, \"lang-en\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Map.json\"));\n\t}, \"lang-en\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./News.json\"));\n\t}, \"lang-en\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./AirQualityIndex.json\"));\n\t}, \"lang-th\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Common.json\"));\n\t}, \"lang-th\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Dashboard.json\"));\n\t}, \"lang-th\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Home.json\"));\n\t}, \"lang-th\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Issue.json\"));\n\t}, \"lang-th\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./Map.json\"));\n\t}, \"lang-th\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../../../../node_modules/json-loader/index.js!./News.json\"));\n\t}, \"lang-th\");\n}","// Module\nvar code = \"\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n\";\n// Exports\nexport default code;","import { DialogService } from 'aurelia-dialog';\r\nimport { inject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport FsUtility from '../../../../Lib/Fs.SmartClient.Client/FsUtility';\r\nimport { useView, autoinject, Container } from 'aurelia-framework'\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport TabViewModel from '../../../../Lib/Fs.SmartClient.Client/TabViewModel';\r\nimport AirQualityIndexViewPageData from '../../Scripts/AppServiceContract/AirQualityIndexViewPageData';\r\nimport PublicAirQualityIndexViewPageAppService from '../../Scripts/AppServiceContract/PublicAirQualityIndexViewPageAppService';\r\n\r\n@inject(DialogService)\r\n@useView(PLATFORM.moduleName(\"./AirQualityIndexSearchView.html\"))\r\nexport default class AirQualityIndexSearchVM extends TabViewModel{\r\n\n/* ข้อมูลสำหรับเพิ่มข้อมูลคุณภาพอากาศ*/\n AirQualityIndexViewPageData: AirQualityIndexViewPageData;\n attached() {\n this.LoadMasterData();;\n }\n\r\n constructor(dialogService) {\r\n super();\r\n }\r\n\n LoadMasterData() {\r\n var service = Container.instance.get(PublicAirQualityIndexViewPageAppService) as PublicAirQualityIndexViewPageAppService;\r\n service.LoadAirQualityIndexViewPage()\r\n .done((result) => {\n this.AirQualityIndexViewPageData = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\n }\r\n}\r\n","import EditorVMBase from \"../../../../Lib/Fs.SmartClient.Client/EditorVMBase\";\r\nimport AirQualityIndexData from \"../../Scripts/AppServiceContract/AirQualityIndexData\";\r\n\r\nexport default class DashboardEditorVM extends EditorVMBase {\r\n\r\n Id: string;\r\n Min: number;\r\n Max: number;\r\n Name: string;\r\n ColorCode: string;\r\n Description: string;\r\n IsActive: boolean;\r\n BackgroundColorCode: string;\n AirQualityIndexLangData: any;\n\r\n constructor() {\r\n super();\n\r\n }\r\n\r\n LoadOriginalSource(originalSource: AirQualityIndexData) {\r\n this.Id = originalSource.Id;\r\n this.Min = originalSource.Min;\r\n this.Max = originalSource.Max;\r\n this.Name = originalSource.Name;\r\n this.ColorCode = originalSource.ColorCode;\r\n this.Description = originalSource.Description;\r\n this.IsActive = originalSource.IsActive;\n this.BackgroundColorCode = originalSource.BackgroundColorCode;\n this.AirQualityIndexLangData = originalSource.AirQualityIndexLangDatas;\r\n }\r\n\r\n SaveOriginalSource(originalSource: AirQualityIndexData) {\r\n originalSource.Id = this.Id;\r\n originalSource.Min = this.Min;\r\n originalSource.Max = this.Max;\r\n originalSource.Name = this.Name;\r\n originalSource.ColorCode = this.ColorCode\r\n originalSource.Description = this.Description;\r\n originalSource.IsActive = this.IsActive;\n originalSource.BackgroundColorCode = this.BackgroundColorCode;\n originalSource.AirQualityIndexLangDatas = this.AirQualityIndexLangData;\r\n }\n}\r\n","import SortingCriteria from \"../../../../Lib/Fs.Core.Data/SortingCriteria\";\r\nimport PagingCriteria from \"../../../../Lib/Fs.Core.Data/PagingCriteria\";\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport FsUtility from '../../../../Lib/Fs.SmartClient.Client/FsUtility';\r\nimport { useView, autoinject, Container, computedFrom } from 'aurelia-framework'\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport DashboardEditorVM from './DashboardEditorVM';\r\nimport SortBy from \"../../../../Lib/Fs.Core.Data/SortBy\";\r\nimport DistrictGroupData from \"../../Scripts/AppServiceContract/DistrictGroupData\";\r\nimport DashboardAppService from \"../../Scripts/AppServiceContract/DashboardAppService\";\r\nimport DistrictData from \"../../Scripts/AppServiceContract/DistrictData\";\r\nimport StationData from \"../../Scripts/AppServiceContract/StationData\";\r\nimport AirQualityTypeData from \"../../Scripts/AppServiceContract/AirQualityTypeData\";\r\nimport AirQualityGroupData from \"../../Scripts/AppServiceContract/AirQualityGroupData\";\nimport ApexCharts from 'apexcharts';\r\nimport DashboardSearchCriteria from \"../../Scripts/AppServiceContract/DashboardSearchCriteria\";\r\nimport DashboardSearchParameter from \"../../Scripts/AppServiceContract/DashboardSearchParameter\";\r\nimport AirQualityGraphData from \"../../Scripts/AppServiceContract/AirQualityGraphData\";\r\nimport SearchOnlyVMBase2 from \"../../../../Lib/Fs.SmartClient.Client/SearchOnlyVMBase2\";\r\nimport { forEachCorner } from \"ol/extent\";\r\nimport StationParameter from \"../../Scripts/AppServiceContract/StationParameter\";\r\nimport { node } from \"webpack\";\r\n\r\n@autoinject()\r\n@useView(PLATFORM.moduleName(\"./DashboardSearchView.html\"))\r\nexport default class DashboardSearchVM extends SearchOnlyVMBase2{\n\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n changeLocaleSubscribe: any;\n\n DistrictGroupList: DistrictGroupData[];\n DistrictGroupId: string;\n DistrictList: DistrictData[];\n DistrictId: string;\n StationList: StationData[];\n StationIds: string[];\n SelectedStationList: StationData[];\n AirQualityTypeList: AirQualityTypeData[];\n OutputType: number = 1;\n PeriodType: number = 1;\n DateStart: Date;\n DateEnd: Date;\n TimeStart: string;\n TimeEnd: string;\n SelectedAirQualityType: AirQualityTypeData[];\n startdateError: boolean = false;\n enddateError: boolean = false;\n starttimeError: boolean = false;\n endtimeError: boolean = false;\n zeroPad = (num, places) => String(num).padStart(places, '0')\n Showloading: boolean = false;\n Showgraph: boolean = false;\n Showtable: boolean = false;\n Placeholder: string;\n //public ThisMonth: number;\n public ThisYear: number;\n public monthListShow: any;\n public currentLocale: string;\n monthListTH = [\r\n { id: 0, name: 'มกราคม' },\r\n { id: 1, name: 'กุมภาพันธ์' },\r\n { id: 2, name: 'มีนาคม' },\n { id: 3, name: 'เมษายน' },\n { id: 4, name: 'พฤษภาคม' },\r\n { id: 5, name: 'มิถุนายน' },\r\n { id: 6, name: 'กรกฏาคม' },\n { id: 7, name: 'สิงหาคม' },\n { id: 8, name: 'กันยายน' },\r\n { id: 9, name: 'ตุลาคม' },\r\n { id: 10, name: 'พฤศจิกายน' },\n { id: 11, name: 'ธันวาคม' }\r\n ];\n\n monthListEN = [\r\n { id: 0, name: 'January' },\r\n { id: 1, name: 'Febuary' },\r\n { id: 2, name: 'March' },\n { id: 3, name: 'April' },\n { id: 4, name: 'May' },\r\n { id: 5, name: 'June' },\r\n { id: 6, name: 'July' },\n { id: 7, name: 'August' },\n { id: 8, name: 'September' },\r\n { id: 9, name: 'October' },\r\n { id: 10, name: 'November' },\n { id: 11, name: 'December' }\r\n ];\n\r\n constructor(i18n: I18N, eventAggregator: EventAggregator) {\n super(DashboardEditorVM);\n var self = this;\r\n this.i18n = i18n;\n this.eventAggregator = eventAggregator;\n\r\n this.changeLocaleSubscribe = this.eventAggregator.subscribe('ChangeLocale', (response) => {\n this.currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n //self.Placeholder = self.i18n.tr('Aqs.Dashboard:DashboardPage.SelectStation');\n if (this.currentLocale == \"th\") {\n self.Placeholder = \"เลือกสถานี\"\n this.ThisYear = new Date().getFullYear() + 543;\n this.monthListShow = this.monthListTH\n this.CrateYearList();\r\n }\n else {\n self.Placeholder = \"Select station\";\n this.ThisYear = new Date().getFullYear();\n this.monthListShow = this.monthListEN\n this.CrateYearList();\r\n }\n this.HideGraphAndTable();\r\n this.Prepare();\r\n });\n this.Prepare();\n\n this.currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n if (this.currentLocale == null) {\n this.currentLocale = \"th\"\r\n }\n\n if (this.currentLocale == \"th\") {\n this.ThisYear = new Date().getFullYear() + 543;\n this.monthListShow = this.monthListTH\n this.CrateYearList();\r\n }\n else {\n this.ThisYear = new Date().getFullYear();\n this.monthListShow = this.monthListEN\n this.CrateYearList();\r\n }\n\n }\n\n async Prepare() {\n this.LoadAirQualityType();\n this.LoadDistrictGroupDropdown();\n this.LoadDistrictDropdown();\n //this.LoadStationDropdown();\n this.SetDatetime();\r\n }\n TimeAll: string[] = [];\n SetDatetime() {\n var date = new Date;\n var d = date.getDate();\n var h = date.getHours();\n var dateYesterday = new Date(new Date(new Date().setDate(d - 1)).setHours(h + 1));\n this.DateStart = dateYesterday\n this.DateEnd = date\n for (var i = 0; i < 24; i++) {\n var x = i.toString();\n if (i < 10) x = \"0\" + x;\n this.TimeAll.push((x + \":00\"));\r\n }\n this.TimeStart = this.zeroPad(date.getHours() + 1, 2) + \":00\";\n this.TimeEnd = this.zeroPad(date.getHours(), 2) + \":00\";\r\n }\n\n async LoadAirQualityType() {\n var self = this;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.AirQualityTypeList()\r\n .done((result) => {\n self.AirQualityTypeList = result;\n var html;\n html = \"
\";\n var x = result.length;\n for (let i = 1; i <= result.length; i++) {\n var id = \"\";\n if (i == 1) {\n id = \"check-AirType-First\";\r\n }\n else if (i == 2 || i == 3 || i == 4 || i == 7 || i == 8 || i == 9 || i == 12 || i == 13 || i == 14 || i == 17 || i == 18 || i == 19) {\n id = \"check-AirType-2to4-7to9\";\n if (i == result.length) id = \"check-AirType-10\";\r\n }\n else if (i == 5 || i == 15) {\n id = \"check-AirType-5\";\r\n }\n else if (i == 6 || i == 16) {\n id = \"check-AirType-6\";\n if (i == result.length) id = \"check-AirType-RightOrOne\";\r\n }\n else if (i == 10 || i == 20) {\n id = \"check-AirType-10\";\r\n }\n else if (i == 11) {\n id = \"check-AirType-11\";\n if (i == result.length) id = \"check-AirType-One\";\r\n }\n html = html + \"
\";\n }\n html = html + \"
\";\n const div = document.getElementById('AirQualityType') as HTMLDivElement\n div.innerHTML = html;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n async LoadDistrictGroupDropdown() {\r\n var self = this;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.DistrictGroupDropdown()\r\n .done((result) => {\r\n self.DistrictGroupList = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n LoadDistrictDropdown() {\n var self = this;\n var param = new StationParameter();\n param.DistrictGroupId = this.DistrictGroupId;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.DistrictDropdown(param)\r\n .done((result) => {\r\n self.DistrictList = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n async LoadStationDropdown(params, success, failure) {\n var self = this;\n\n var param = new StationParameter();\n param.StationName = params.data.term ? params.data.term : ''\n param.DistrictGroupId = this.DistrictGroupId;\n param.DistrictId = this.DistrictId;\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.StationDropdown(param)\r\n .done((result) => {\r\n success(result);\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n YearList: any;\n CrateYearList() {\n\n var self = this;\r\n var x = self.ThisYear - 2566;\r\n const y = { id: 1, name: self.ThisYear + 1 };\r\n self.YearList = []\r\n self.YearList.push(y);\r\n for (let i = 0; i <= x; i++) {\r\n self.YearList.push({ id: 1, name: self.ThisYear - i });\r\n }\n }\n\n ChangeDistrictGroup() {\n this.LoadDistrictDropdown();\n //this.LoadStationDropdown();\n this.StationIds = [];\n var x = this.i18n.tr('Aqs.Dashboard:DashboardPage.GraphSelect');\r\n }\n\n GetSelectedAirQualityType(): string[] {\n const ar = [];\n this.SelectedAirQualityType = [];\n for (var i in this.AirQualityTypeList) {\n const checkbox = document.getElementById(this.AirQualityTypeList[i].Name) as HTMLInputElement | null;\n if (checkbox?.checked) {\r\n ar.push(this.AirQualityTypeList[i].Name);\r\n this.SelectedAirQualityType.push({\n Id: this.AirQualityTypeList[i].Id,\n Name: this.AirQualityTypeList[i].Name,\n DisplayName: this.AirQualityTypeList[i].DisplayName,\n UnitDisplayName: this.AirQualityTypeList[i].UnitDisplayName\n });\n }\r\n }\n return ar;\n }\n\n HideGraphAndTable() {\r\n this.Showgraph = false;\n this.Showtable = false;\r\n }\n\n ShowLoading(flag) {\n this.Showloading = flag;\n if (flag) {\n const load = document.getElementById('load');\n load.scrollIntoView({ behavior: 'smooth' });\n }\r\n }\n\n ShowGraph() {\n this.ShowLoading(false);\n this.Showgraph = true;\n this.Showtable = false;\n this.GraphTabClick();\r\n }\n\n GraphTabClick() {\n var btn = document.getElementById('btn-' + this.SelectedAirQualityType[0].Name) as HTMLButtonElement;\n btn.click();\r\n }\n\n CreateChart(result: AirQualityGraphData[]) {\n var timeunit = this.i18n.tr('Aqs.Dashboard:DashboardPage.UnitTime');\n var standardtxt = this.i18n.tr('Aqs.Dashboard:DashboardPage.StandardTxt');\n var self = this;\n if (self.charts != null) {\n self.charts.forEach(t => {\n t.chart.destroy()\n });\n }\n self.charts = [];\n var Average = \"Average\";\r\n var Hourly = \"Fact value\";\n var Standard = \"Standard value\";\r\n if (self.currentLocale == \"th\") {\r\n Average = \"ค่าเฉลี่ย\";\r\n Hourly = \"ค่าจริง\";\n Standard = \"ค่ามาตรฐาน\";\r\n }\n const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n for (let i = 0; i < result.length; i++) {\n var noData = true;\n var StandardValue = 0;\n var StandardObj = self.AirQualityTypeList.find(t => t.Name == result[i].AirQualityTypeName);\n if (StandardObj != null) {\n StandardValue = StandardObj.StandardValue;\n }\n //for (let t = 0; t < this.AirQualityTypeList.length; t++) {\n // if (this.AirQualityTypeList[t].Name == result[i].AirQualityTypeName) {\n // if (this.AirQualityTypeList[t].StandardValue != null && this.AirQualityTypeList[t].StandardValue.toString() != \"\") {\n // StandardValue = this.AirQualityTypeList[t].StandardValue;\r\n // }\r\n // }\r\n //}\n\n var name = this.SelectedAirQualityType.find(t => t.Name == result[i].AirQualityTypeName);\n var div = \"#chart_\" + name.Id;\n var div_element = document.getElementById(\"chart_\" + name.Id) as HTMLDivElement;\n div_element.innerHTML = \"\";\n let Series = [];\n let Labels = [];\n let Marker = 0;\n var startdatetime = this.DateStart;\n var enddatetime = this.DateEnd;\n var caldate = enddatetime.getTime() - startdatetime.getTime();\n var conditiondate = caldate / (1000 * 3600 * 24);\n var options = {};\n let DataAvgColors = [];\n if (result[i].StationData.length == 1 && conditiondate <= 7 && !result[i].StationData[0]?.AirQualityData.every(t => t.AVGValue === null)) {\n\n let max = 0;\n let Data = [];\n let DataAvg = [];\n DataAvgColors = [];\n for (let k = 0; k < result[i].StationData[0].AirQualityData.length; k++) {\n\n Data.push(result[i].StationData[0].AirQualityData[k].Value == null ? null : result[i].StationData[0].AirQualityData[k].Value.toFixed());\n if (result[i].StationData[0].AirQualityData[k].Value != null) {\n noData = false;\r\n }\n DataAvg.push(result[i].StationData[0].AirQualityData[k].AVGValue == null ? null : result[i].StationData[0].AirQualityData[k].AVGValue?.toFixed());\n\n DataAvgColors.push(result[i].StationData[0].AirQualityData[k].AVGColor);\n if (max <= result[i].StationData[0].AirQualityData[k].Value) {\n max = result[i].StationData[0].AirQualityData[k].Value;\r\n }\n\n if (max <= result[i].StationData[0].AirQualityData[k].AVGValue) {\n max = result[i].StationData[0].AirQualityData[k].AVGValue;\r\n }\n\n var datetime = result[i].StationData[0].AirQualityData[k].DateTime;\n Labels.push(datetime);\n\n }\n\n //Creat Series\n Series.push({\r\n name: Average,\r\n data: DataAvg,\n type: \"column\",\n });\n\n Series.push({\r\n name: Hourly,\r\n data: Data,\n type: \"line\"\r\n });\n\n\n\n //Setting Chart\n options = {\n\n legend: {\n show: false,\n },\n\n plotOptions: {\r\n bar: {\r\n borderRadius: 5,\r\n borderRadiusApplication: \"end\",\n columnWidth: '50%',\r\n }\r\n },\n\n colors: [\n function ({ value, seriesIndex, dataPointIndex, w }) {\r\n return self.charts.find(t => t.Id == w.config.chart.id).DataAvgColors[dataPointIndex]\r\n },\n \"#03754A\"\n ],\n\n series: Series,\r\n chart: {\n id: name.Id,\n height: 350, type: 'line', zoom: { enabled: false },\r\n animations: { enabled: false },\n toolbar: { show: true, tools: { download: false } }\n },\n\n markers: { size: Marker },\n\r\n stroke: { width: 2, curve: 'straight' },\n\r\n labels: Labels,\n\n yaxis: {\n showAlways: true,\n max: max <= StandardValue ? StandardValue + 10 : max + 10,\n min: 0,\n title: {\r\n text: name.UnitDisplayName,\r\n rotate: -90,\r\n offsetX: 0,\r\n offsetY: 0,\r\n style: {\r\n color: '#ff0000',\r\n fontSize: '18px',\r\n fontWeight: 600,\r\n cssClass: 'apexcharts-yaxis-title',\r\n },\r\n },\n },\n\r\n xaxis: {\r\n type: \"datetime\",\r\n labels: { datetimeUTC: false, },\r\n tooltip: { enabled: false, },\r\n },\n\n annotations: StandardObj != null ? {\n yaxis: [{\n y: StandardValue,\r\n borderColor: '#FF0000',\r\n label: { borderColor: '#FF0000', style: { color: '#fff', background: '#FF0000' }, text: '' },\n\r\n }]\r\n } : {},\n\n tooltip: {\r\n y: {\n title: { formatter: (seriesName) => seriesName, },\n\r\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n return value + \" \" + unit.unitName\n },\n\n colors: [\n function ({ value, seriesIndex, dataPointIndex, w }) {\r\n return self.charts.find(t => t.Id == w.config.chart.id).DataAvgColors[dataPointIndex]\r\n },\n \"#03754A\"\n ],\n\r\n },\n\n x: {\r\n show: true,\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n let dateTime = new Date(value);\n let showDate = new Intl.DateTimeFormat(self.currentLocale, { dateStyle: \"full\", timeStyle: \"short\" }).format(dateTime) + ' ' + timeunit + '' + (unit.StandardValue == null ? '' : ' ' + standardtxt + ' : ' + unit.StandardValue) + '';\r\n return showDate;\r\n },\r\n },\r\n }\n\r\n };\n }\n else {\n let max = 0;\n for (let j = 0; j < result[i].StationData.length; j++) {\n let Data = [];\n //var firstHours = new Date(result[i].StationData[j].AirQualityData[0].DateTime).getHours();\n for (let k = 0; k < result[i].StationData[j].AirQualityData.length; k++) {\n Data.push(result[i].StationData[j].AirQualityData[k].Value == null ? null : result[i].StationData[j].AirQualityData[k].Value.toFixed());\n if (result[i].StationData[0].AirQualityData[k].Value != null) {\n noData = false;\r\n }\n if (max <= result[i].StationData[j].AirQualityData[k].Value) {\n max = result[i].StationData[j].AirQualityData[k].Value;\r\n }\n var datetime = result[i].StationData[j].AirQualityData[k].DateTime;\n Labels.push(datetime);\n }\n\n //Creat Series\n Series.push({\r\n name: result[i].StationData[j].StationName,\r\n data: Data\r\n });\n }\n\n //Setting Chart\n options = {\n\n series: Series,\r\n chart: {\n id: name.Id,\n height: 350, type: 'line', zoom: { enabled: false },\r\n animations: { enabled: false },\n toolbar: { show: true, tools: { download: false } }\n },\n\n markers: { size: Marker },\r\n stroke: { width: 2, curve: 'straight' },\r\n labels: Labels,\n yaxis: {\n showAlways: true,\n max: max <= StandardValue ? StandardValue + 10 : max + 10,\n min: 0,\n title: {\r\n text: name.UnitDisplayName,\r\n rotate: -90,\r\n offsetX: 0,\r\n offsetY: 0,\r\n style: {\r\n color: '#ff0000',\r\n fontSize: '18px',\r\n fontWeight: 600,\r\n cssClass: 'apexcharts-yaxis-title',\r\n },\r\n },\n },\n\r\n xaxis: {\r\n type: \"datetime\",\r\n labels: { datetimeUTC: false, },\r\n tooltip: { enabled: false, },\r\n },\n\n annotations: {\n yaxis: [{\n y: StandardValue,\r\n borderColor: '#FF0000',\r\n label: { borderColor: '#FF0000', style: { color: '#fff', background: '#FF0000' }, text: '' }\r\n }]\r\n },\n\n tooltip: {\n\r\n y: {\n title: { formatter: (seriesName) => seriesName, },\n\r\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n return value + \" \" + unit.unitName\n },\n\n colors: [\n function ({ value, seriesIndex, dataPointIndex, w }) {\r\n return self.charts.find(t => t.Id == w.config.chart.id).DataAvgColors[dataPointIndex]\r\n },\n \"#03754A\"\n ],\n\r\n },\n\n x: {\r\n show: true,\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n let dateTime = new Date(value);\n let showDate = new Intl.DateTimeFormat(self.currentLocale, { dateStyle: \"full\", timeStyle: \"short\" }).format(dateTime) + (unit.StandardValue == null ? '' : \" ค่ามาตราฐาน: \" + unit.StandardValue);\r\n debugger\n return showDate;\r\n },\r\n },\r\n }\n\r\n };\r\n }\n\n\n var divnodata = \"nodata_\" + name.Id;\n if (noData) {\n document.getElementById(divnodata).style.display = '';\r\n }\n else {\n document.getElementById(divnodata).style.display = 'none';\n var chart = new ApexCharts(document.querySelector(div), options);\n\n chart.render();\n\n self.charts.push({ chart: chart, StandardValue: StandardValue, unitName: name.UnitDisplayName, Id: name.Id, DataAvgColors: DataAvgColors });\n }\n\n\n\n }\n self.SelectAirQualityType = self.charts[0]?.Id;\r\n }\n\n charts: any;\n SelectAirQualityType: string;\n ShowTable() {\n this.ShowLoading(false);\r\n this.Showgraph = false;\n this.Showtable = true;\r\n }\n\r\n SearchCriteria: DashboardSearchCriteria;\n\n MonthStart: any;\n MonthEnd: any;\n YearStart: any;\n YearEnd: any;\n SelectStartYear: number;\n SelectEndYear: number;\n startMonthYear: number;\n endMonthYear: number;\n RawDate: Date = new Date();\n startDateFormat: Date;\n endDateFormat: Date;\n CreateCriteria(): DashboardSearchCriteria {\n var self = this;\n const criteria = new DashboardSearchCriteria();\n criteria.DistrictGroupId = this.DistrictGroupId;\n criteria.DistrictId = this.DistrictId;\n criteria.StationIds = this.StationIds;\n criteria.OutputType = this.OutputType;\n criteria.PeriodType = this.PeriodType;\n\n var startdatetime = new Date(this.zeroPad(this.DateStart.getFullYear(), 2) + \"-\" + this.zeroPad((this.DateStart.getMonth() + 1), 2) + \"-\" + this.zeroPad(this.DateStart.getDate(), 2) + \" \" + this.TimeStart);\n var enddatetime = new Date(this.zeroPad(this.DateEnd.getFullYear(), 2) + \"-\" + this.zeroPad((this.DateEnd.getMonth() + 1), 2) + \"-\" + this.zeroPad(this.DateEnd.getDate(), 2) + \" \" + this.TimeEnd);\n criteria.DateTimeStart = this.datejson(startdatetime);\n criteria.DateTimeEnd = this.datejson(enddatetime);\n criteria.AirQualityTypeList = this.GetSelectedAirQualityType();\n\n //Select Month Type\n if (this.PeriodType == 3 && this.currentLocale == \"th\") {\n self.SelectStartYear = this.YearStart.name - 543;\n self.SelectEndYear = this.YearEnd.name - 543;\n\n self.startMonthYear = this.RawDate.setFullYear(self.SelectStartYear, this.MonthStart.id, 1);\n self.endMonthYear = this.RawDate.setFullYear(self.SelectEndYear, this.MonthEnd.id + 1, 0);\n\n self.startDateFormat = new Date(self.startMonthYear);\n self.endDateFormat = new Date(self.endMonthYear);\n\n criteria.DateTimeStart = this.datejson(self.startDateFormat);\n criteria.DateTimeEnd = this.datejson(self.endDateFormat);\n //debugger\n }\n else if (this.PeriodType == 3 && this.currentLocale == \"en\") {\n self.SelectStartYear = this.YearStart.name;\n self.SelectEndYear = this.YearEnd.name;\n\n self.startMonthYear = this.RawDate.setFullYear(self.SelectStartYear, this.MonthStart.id, 1);\n self.endMonthYear = this.RawDate.setFullYear(self.SelectEndYear, this.MonthEnd.id + 1, 0);\n\n self.startDateFormat = new Date(self.startMonthYear);\n self.endDateFormat = new Date(self.endMonthYear);\n\n criteria.DateTimeStart = this.datejson(self.startDateFormat);\n criteria.DateTimeEnd = this.datejson(self.endDateFormat);\n //debugger\n }\n //End Select Month Type\n\n return criteria;\n }\n datejson(date: Date): any {\n date.setHours(date.getHours()+7);\r\n return '\\/Date(' + date.getTime() + ')\\/';\r\n }\n SearchItems(searchCallback: (result: AirQualityGroupData[]) => void, searchCriteria: DashboardSearchCriteria, sortingCriteria: SortingCriteria, pagingCriteria: PagingCriteria) {\n var self = this;\r\n const searchParameter = new DashboardSearchParameter();\r\n searchParameter.Criteria = searchCriteria;\r\n searchParameter.SortingCriteria = sortingCriteria;\n searchParameter.PagingCriteria = pagingCriteria;\r\n\r\n var service = this.container.get(DashboardAppService) as DashboardAppService;\n if (this.OutputType == 1) {\n service.FindGraph(searchParameter)\r\n .done((result) => {\n this.ShowGraph();\n this.CreateChart(result);\r\n })\n .fail((error) => {\n FsUtility.AlertErrorMessage(error);\r\n });\n }\n else {\n service.FindTable(searchParameter)\r\n .done((result) => {\n const tbody = document.getElementById('table').getElementsByTagName('tbody')[0];\n const table = document.getElementById('table') as HTMLTableElement;\n tbody.innerHTML = \"\";\n\n for (var i = 0; i < result.length; i++) {\n var newrow = tbody.insertRow();\n\n /*var newCell = newrow.insertCell();\n var newText = document.createTextNode(result[i].DistrictGroupName);\r\n newCell.appendChild(newText);*/\n\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(result[i].DistrictName);\n newCell.style.textAlign = \"center\";\r\n newCell.appendChild(newText);\n\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(result[i].StationName);\n newCell.style.textAlign = \"center\";\r\n newCell.appendChild(newText);\n\n var newCell = newrow.insertCell();\n var datetime = new Date(result[i].DateTime);\n\n const day = datetime.getDate();\r\n const monthIndex = datetime.getMonth();\r\n const year = datetime.getFullYear();\r\n const minutes = datetime.getMinutes();\r\n const hours = datetime.getHours();\n\n //Hourly\n if (this.PeriodType == 1) {\n var datetimeStr = day + \"/\" + (monthIndex + 1) + \"/\" + year + \" \" + this.zeroPad(hours, 2) + \":\" + this.zeroPad(minutes, 2);\n }\n\n //Daily\n if (this.PeriodType == 2) {\n var datetimeStr = day + \"/\" + (monthIndex + 1) + \"/\" + year;\n }\n\n //Monthly\n if (this.PeriodType == 3) {\n const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\r\n \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n var datetimeStr = monthNames[monthIndex] + \" \" + year;;\n }\n\n var newText = document.createTextNode(datetimeStr);\n newCell.style.textAlign = \"center\";\r\n newCell.appendChild(newText);\n\n for (let j = 0; j < this.SelectedAirQualityType.length; j++) {\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(\"\");\r\n newCell.appendChild(newText);\n }\n\n for (let j = 0; j < result[i].AirQualityList.length; j++) {\n for (var c = 3, col; col = newrow.cells[c]; c++) {\r\n if (result[i].AirQualityList[j].TypeDisplayName == table.rows[0].cells[c].innerHTML) {\n newrow.cells[c].innerText = result[i].AirQualityList[j].Value?.toString();\n newrow.cells[c].style.textAlign = \"center\";\n }\r\n }\n }\n\n\n }\n\n if (result.length == 0) {\n var newrow = tbody.insertRow();\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(\"ไม่พบข้อมูล\");\r\n newCell.appendChild(newText);\r\n }\n\r\n searchCallback(result);\n this.ShowTable();\r\n }).fail((error) => {\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\r\n }\n\n CountItems(searchCallback: (result: number) => void) {\r\n var self = this;\n var req = self.CreateCriteria();\n var service = this.container.get(DashboardAppService) as DashboardAppService;\r\n service.Count(req)\r\n .done((result) => {\r\n searchCallback(result)\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n PrepareDefaultSortingCriteria(sortingCriteria: SortBy[]): void {\r\n var sortBy = new SortBy();\r\n sortBy.Direction = 0;\r\n sortBy.Name = \"DateTime\";\r\n sortingCriteria.push(sortBy);\r\n }\n\n Search() {\n if (this.OutputType == 1) {\n const searchParameter = new DashboardSearchParameter();\r\n searchParameter.Criteria = this.CreateCriteria();\n\n if (searchParameter.Criteria.DistrictId != null) {\n if (!searchParameter.Criteria.StationIds) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Station'), 1, 2, 3);\n this.ShowLoading(false);\n return;\r\n }\n else if (searchParameter.Criteria.StationIds.length == 0) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Station'), 1, 2, 3);\n this.ShowLoading(false);\n return;\r\n }\r\n }\n\n if (!searchParameter.Criteria.StationIds) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Station'), 1, 2, 3);\n this.ShowLoading(false);\n return;\n }\n\n var service = this.container.get(DashboardAppService) as DashboardAppService;\n service.FindGraph(searchParameter)\r\n .done((result) => {\n this.ShowGraph();\n this.CreateChart(result);\r\n })\n .fail((error) => {\n FsUtility.AlertErrorMessage(error);\r\n });\r\n\n }\n else {\n super.Search();\r\n }\r\n }\n\n Reset() {\n this.HideGraphAndTable();\n }\n\n SearchFunction() {\n this.HideGraphAndTable();\n //Validation\n this.startdateError = false;\n this.enddateError = false;\n this.starttimeError = false;\n this.endtimeError = false;\n /*if (this.DateStart == \"\") {\n this.startdateError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\r\n }\n if (this.DateEnd == \"\") {\n this.enddateError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\r\n }*/\n if (this.DateStart > this.DateEnd) {\n this.startdateError = true;\n this.enddateError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\r\n }\n if (this.PeriodType == 1) {\n if (this.TimeStart == \"\") {\n this.starttimeError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\n }\n if (this.TimeEnd == \"\") {\n this.endtimeError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\n }\r\n }\n this.GetSelectedAirQualityType();\n if (this.SelectedAirQualityType.length == 0) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.SelectAirQualityType'), 1, 2, 3);\n return;\r\n }\n this.HideGraphAndTable();\n this.ShowLoading(true);\n this.Search();\r\n }\n\n ChangePeriodType() {\n if (this.PeriodType == 1) {\n this.SetDatetime();\r\n }\n else if (this.PeriodType == 2) {\n this.DateStart = new Date(new Date().setMonth(new Date().getMonth() - 1));\n }\n else if (this.PeriodType == 3) {\n this.DateStart = new Date(new Date().setMonth(new Date().getMonth() - 12));\n }\r\n }\n\n SetAirQualityType(id: string) {\n this.SelectAirQualityType = id;\r\n }\n\n changeTab(val: string) {\n document.getElementById('btn-' + val).click();\n this.SelectAirQualityType = val;\r\n }\n\n SelectAllAirQualityType() {\n var check = true;\n for (var i in this.AirQualityTypeList) {\n const checkbox = document.getElementById(this.AirQualityTypeList[i].Name) as HTMLInputElement;\n if (checkbox != null) {\n if (!checkbox.checked) check = false;\n checkbox.checked = true;\r\n }\r\n }\n if (check) {\n for (var i in this.AirQualityTypeList) {\n const checkbox = document.getElementById(this.AirQualityTypeList[i].Name) as HTMLInputElement;\n if (checkbox != null) {\n checkbox.checked = false;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import EditorVMBase from \"../../../../Lib/Fs.SmartClient.Client/EditorVMBase\";\r\nimport AirQualityIndexData from \"../../Scripts/AppServiceContract/AirQualityIndexData\";\r\n\r\nexport default class DashboardEditorVM extends EditorVMBase {\r\n\r\n Id: string;\r\n Min: number;\r\n Max: number;\r\n Name: string;\r\n ColorCode: string;\r\n Description: string;\r\n IsActive: boolean;\r\n BackgroundColorCode: string;\n AirQualityIndexLangData: any;\n\r\n constructor() {\r\n super();\n\r\n }\r\n\r\n LoadOriginalSource(originalSource: AirQualityIndexData) {\r\n this.Id = originalSource.Id;\r\n this.Min = originalSource.Min;\r\n this.Max = originalSource.Max;\r\n this.Name = originalSource.Name;\r\n this.ColorCode = originalSource.ColorCode;\r\n this.Description = originalSource.Description;\r\n this.IsActive = originalSource.IsActive;\n this.BackgroundColorCode = originalSource.BackgroundColorCode;\n this.AirQualityIndexLangData = originalSource.AirQualityIndexLangDatas;\r\n }\r\n\r\n SaveOriginalSource(originalSource: AirQualityIndexData) {\r\n originalSource.Id = this.Id;\r\n originalSource.Min = this.Min;\r\n originalSource.Max = this.Max;\r\n originalSource.Name = this.Name;\r\n originalSource.ColorCode = this.ColorCode\r\n originalSource.Description = this.Description;\r\n originalSource.IsActive = this.IsActive;\n originalSource.BackgroundColorCode = this.BackgroundColorCode;\n originalSource.AirQualityIndexLangDatas = this.AirQualityIndexLangData;\r\n }\n\n}\r\n","import SortingCriteria from \"../../../../Lib/Fs.Core.Data/SortingCriteria\";\r\nimport PagingCriteria from \"../../../../Lib/Fs.Core.Data/PagingCriteria\";\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport FsUtility from '../../../../Lib/Fs.SmartClient.Client/FsUtility';\r\nimport { useView, autoinject, Container, computedFrom } from 'aurelia-framework'\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport DashboardEditorVM from './DashboardEditorVM';\r\nimport SortBy from \"../../../../Lib/Fs.Core.Data/SortBy\";\r\nimport DistrictGroupData from \"../../Scripts/AppServiceContract/DistrictGroupData\";\r\nimport DashboardAppService from \"../../Scripts/AppServiceContract/DashboardAppService\";\r\nimport DistrictData from \"../../Scripts/AppServiceContract/DistrictData\";\r\nimport StationData from \"../../Scripts/AppServiceContract/StationData\";\r\nimport AirQualityTypeData from \"../../Scripts/AppServiceContract/AirQualityTypeData\";\r\nimport AirQualityGroupData from \"../../Scripts/AppServiceContract/AirQualityGroupData\";\nimport ApexCharts from 'apexcharts';\r\nimport DashboardSearchCriteria from \"../../Scripts/AppServiceContract/DashboardSearchCriteria\";\r\nimport DashboardSearchParameter from \"../../Scripts/AppServiceContract/DashboardSearchParameter\";\r\nimport AirQualityGraphData from \"../../Scripts/AppServiceContract/AirQualityGraphData\";\r\nimport SearchOnlyVMBase2 from \"../../../../Lib/Fs.SmartClient.Client/SearchOnlyVMBase2\";\r\n//import { forEachCorner } from \"ol/extent\";\r\nimport StationParameter from \"../../Scripts/AppServiceContract/StationParameter\";\r\nimport { DialogService } from \"aurelia-dialog\";\r\nimport GeneralDocPopupConfirmDialogVM from \"../../../../Lib/Fs.Core.Aurelia/Components/GeneralDocPopupConfirmDialogVM\";\r\nimport PickDateDialogVM from \"../../Components/PickDateDialogVM\";\r\n//import { node } from \"webpack\";\r\n//import PublicAirQualityMapAppService from \"../../Scripts/AppServiceContract/PublicAirQualityMapAppService\";\r\n//import SummaryCriteria from \"../../Scripts/AppServiceContract/SummaryCriteria\";\r\n//import { debug } from \"util\";\r\n\r\n@autoinject()\r\n@useView(PLATFORM.moduleName(\"./DashboardSearchView.html\"))\r\nexport default class DashboardSearchVM extends SearchOnlyVMBase2{\n\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n changeLocaleSubscribe: any;\n DistrictGroupList: DistrictGroupData[];\n DistrictGroupId: string;\n DistrictList: DistrictData[];\n DistrictId: string;\n StationList: StationData[];\n StationIds: string[];\n SelectedStationList: StationData[];\n AirQualityTypeList: AirQualityTypeData[];\n OutputType: number = 1;\n PeriodType: number = 1;\n DateStart: Date;\n DateEnd: Date;\n TimeStart: string;\n TimeEnd: string;\n SelectedAirQualityType: AirQualityTypeData[];\n startdateError: boolean = false;\n enddateError: boolean = false;\n starttimeError: boolean = false;\n endtimeError: boolean = false;\n zeroPad = (num, places) => String(num).padStart(places, '0')\n Showloading: boolean = false;\n Showgraph: boolean = false;\n Showtable: boolean = false;\n Placeholder: string = \"เลือกสถานี\";\n //public ThisMonth: number;\n public ThisYear: number;\n public monthListShow: any;\n public currentLocale: string;\n dialogService: DialogService;\n\n monthListTH = [\r\n { id: 0, name: 'มกราคม' },\r\n { id: 1, name: 'กุมภาพันธ์' },\r\n { id: 2, name: 'มีนาคม' },\n { id: 3, name: 'เมษายน' },\n { id: 4, name: 'พฤษภาคม' },\r\n { id: 5, name: 'มิถุนายน' },\r\n { id: 6, name: 'กรกฏาคม' },\n { id: 7, name: 'สิงหาคม' },\n { id: 8, name: 'กันยายน' },\r\n { id: 9, name: 'ตุลาคม' },\r\n { id: 10, name: 'พฤศจิกายน' },\n { id: 11, name: 'ธันวาคม' }\r\n ];\n\n monthListEN = [\r\n { id: 0, name: 'January' },\r\n { id: 1, name: 'Febuary' },\r\n { id: 2, name: 'March' },\n { id: 3, name: 'April' },\n { id: 4, name: 'May' },\r\n { id: 5, name: 'June' },\r\n { id: 6, name: 'July' },\n { id: 7, name: 'August' },\n { id: 8, name: 'September' },\r\n { id: 9, name: 'October' },\r\n { id: 10, name: 'November' },\n { id: 11, name: 'December' }\r\n ];\n\n // For Summary\n public StationSummary: any;\r\n public selAirQualityTypeId: string;\n ////////////////////\n\n public PageSize: number = 24;\n\n public CustomPaging: any[] = [{ id: 24, text: \"24\" },\n { id: 48, text: \"48\" },\n { id: 72, text: \"72\" },\n { id: 96, text: \"96\" },\n { id: 120, text: \"120\" },\n { id: 9999999, text: \"All\" }];\r\n\n attached() {\n\r\n }\n activate() {\n var self = this;\n this.currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n this.currentLocale = this.currentLocale == null ? \"th\" : this.currentLocale;\n if (this.currentLocale == \"th\") {\n self.Placeholder = \"เลือกสถานี\";\n }\n else {\n self.Placeholder = \"Select station\";\r\n }\n\r\n }\r\n constructor(i18n: I18N, eventAggregator: EventAggregator, DialogService) {\n super(DashboardEditorVM);\n var self = this;\n this.dialogService = DialogService;\r\n this.i18n = i18n;\n this.eventAggregator = eventAggregator;\n this.Prepare();\n\n //when change language select box\r\n self.changeLocaleSubscribe = this.eventAggregator.subscribe('ChangeLocale', (response) => {\n var currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n if (self.currentLocale != currentLocale && self.currentLocale != null) {\n window.location.reload();\n }\n\r\n });\n\n this.currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n if (this.currentLocale == null) {\n this.currentLocale = \"th\";\r\n }\n else if (this.currentLocale == \"th\") {\n this.ThisYear = new Date().getFullYear() + 543;\n this.monthListShow = this.monthListTH;\n this.CrateYearList();\r\n }\n else {\n this.ThisYear = new Date().getFullYear();\n this.monthListShow = this.monthListEN;\n this.CrateYearList();\r\n }\n\n }\n\n\n async Prepare() {\n this.LoadAirQualityType();\n this.LoadDistrictGroupDropdown();\n this.LoadDistrictDropdown();\n //this.LoadStationDropdown();\n this.SetDatetime();\r\n }\n\n TimeAll: string[] = [];\n SetDatetime() {\n var date = new Date;\n var d = date.getDate();\n var h = date.getHours();\n var dateYesterday = new Date(new Date(new Date().setDate(d - 1)).setHours(h + 1));\n this.DateStart = dateYesterday\n this.DateEnd = date\n for (var i = 0; i < 24; i++) {\n var x = i.toString();\n if (i < 10) x = \"0\" + x;\n this.TimeAll.push((x + \":00\"));\r\n }\n this.TimeStart = this.zeroPad(date.getHours()+1, 2) + \":00\";\n this.TimeEnd = this.zeroPad(date.getHours(), 2) + \":00\";\r\n }\n\n async LoadAirQualityType() {\n var self = this;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.AirQualityTypeList()\r\n .done((result) => {\n self.AirQualityTypeList = result;\n var html;\n html = \"
\";\n var x = result.length;\n for (let i = 1; i <= result.length; i++) {\n var id = \"\";\n if (i == 1) {\n id = \"check-AirType-First\";\r\n }\n else if (i == 2 || i == 3 || i == 4 || i == 7 || i == 8 || i == 9 || i == 12 || i == 13 || i == 14 || i == 17 || i == 18 || i == 19) {\n id = \"check-AirType-2to4-7to9\";\n if (i == result.length) id = \"check-AirType-10\";\r\n }\n else if (i == 5 || i == 15) {\n id = \"check-AirType-5\";\r\n }\n else if (i == 6 || i == 16) {\n id = \"check-AirType-6\";\n if (i == result.length) id = \"check-AirType-RightOrOne\";\r\n }\n else if (i == 10 || i == 20) {\n id = \"check-AirType-10\";\r\n }\n else if (i == 11) {\n id = \"check-AirType-11\";\n if (i == result.length) id = \"check-AirType-One\";\r\n }\n html = html + \"
\";\n }\n html = html + \"
\";\n const div = document.getElementById('AirQualityType') as HTMLDivElement\n div.innerHTML = html;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n async LoadDistrictGroupDropdown() {\n var self = this;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.DistrictGroupDropdown()\r\n .done((result) => {\r\n self.DistrictGroupList = result;\r\n })\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n LoadDistrictDropdown() {\n var self = this;\n var param = new StationParameter();\n param.DistrictGroupId = this.DistrictGroupId;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.DistrictDropdown(param)\r\n .done((result) => {\r\n self.DistrictList = result;\r\n })\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n async LoadStationDropdown(params, success, failure) {\n var self = this;\n var param = new StationParameter();\n param.StationName = params.data.term ? params.data.term : ''\n param.DistrictGroupId = this.DistrictGroupId;\n param.DistrictId = this.DistrictId;\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.StationDropdown(param)\r\n .done((result) => {\r\n success(result);\r\n })\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n YearList: any;\n CrateYearList() {\n var self = this;\r\n var x = self.ThisYear - 2566;\r\n const y = { id: 1, name: self.ThisYear + 1 };\r\n self.YearList = []\r\n self.YearList.push(y);\r\n for (let i = 0; i <= x; i++) {\r\n self.YearList.push({ id: 1, name: self.ThisYear - i });\r\n }\n\n \n }\n\n ChangeDistrictGroup() {\n this.LoadDistrictDropdown();\n this.StationIds = [];\n $('#Station').val('').trigger(\"change\");\n\r\n }\n\n ChangeDistrict() {\n\n this.StationIds = [];\n $('#Station').val('').trigger(\"change\");\n\r\n }\n\n ClearData(e) {\n this.StationIds = null;\r\n }\n\n GetSelectedAirQualityType(): string[] {\n const ar = [];\n this.SelectedAirQualityType = [];\n for (var i in this.AirQualityTypeList) {\n const checkbox = document.getElementById(this.AirQualityTypeList[i].Name) as HTMLInputElement | null;\n if (checkbox?.checked) {\r\n ar.push(this.AirQualityTypeList[i].Name);\r\n this.SelectedAirQualityType.push({\n Id: this.AirQualityTypeList[i].Id,\n Name: this.AirQualityTypeList[i].Name,\n DisplayName: this.AirQualityTypeList[i].DisplayName,\n UnitDisplayName: this.AirQualityTypeList[i].UnitDisplayName,\n UnitName: this.AirQualityTypeList[i].UnitName,\n StandardValue: this.AirQualityTypeList[i].StandardValue\n });\n }\r\n }\n return ar;\n }\n\n HideGraphAndTable() {\r\n this.Showgraph = false;\n this.Showtable = false;\r\n }\n\n ShowLoading(flag) {\n this.Showloading = flag;\n if (flag) {\n const load = document.getElementById('load');\n load.scrollIntoView({ behavior: 'smooth' });\n }\r\n }\n\n ShowGraph() {\n this.ShowLoading(false);\n this.Showgraph = true;\n this.Showtable = false;\n this.GraphTabClick();\r\n }\n\n GraphTabClick() {\n var btn = document.getElementById('btn-All') as HTMLButtonElement;\n btn.click();\r\n }\n\n CreateChart(result: AirQualityGraphData[]) {\n \n var timeunit = this.i18n.tr('Aqs.Dashboard:DashboardPage.UnitTime');\n var standardtxt = this.i18n.tr('Aqs.Dashboard:DashboardPage.StandardTxt');\n var self = this;\n if (self.charts != null) {\n self.charts.forEach(t => {\n t.chart.destroy()\n });\n }\n self.charts = [];\n var Average = \"\";\r\n var Hourly = \"Average 1 hour\";\n var Standard = \"Standard value\";\r\n if (self.currentLocale == \"th\") {\r\n\r\n Hourly = \"ค่าเฉลี่ย 1 ชั่วโมง\";\n Standard = \"ค่ามาตรฐาน\";\r\n }\n const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n for (let i = 0; i < result.length; i++) {\n var noData = true;\n var StandardValue = 0;\n var StandardObj = self.AirQualityTypeList.find(t => t.Name == result[i].AirQualityTypeName);\n\n if (StandardObj != null) {\n StandardValue = StandardObj.StandardValue;\n Average = \"Average \" + StandardObj.AVGHour + \" hour\";\n if (self.currentLocale == \"th\") {\n Average = \"ค่าเฉลี่ย \" + StandardObj.AVGHour + \" ชั่วโมง\";\n }\n }\n //for (let t = 0; t < this.AirQualityTypeList.length; t++) {\n // if (this.AirQualityTypeList[t].Name == result[i].AirQualityTypeName) {\n // if (this.AirQualityTypeList[t].StandardValue != null && this.AirQualityTypeList[t].StandardValue.toString() != \"\") {\n // StandardValue = this.AirQualityTypeList[t].StandardValue;\r\n // }\r\n // }\r\n //}\n\n var name = this.SelectedAirQualityType.find(t => t.Name == result[i].AirQualityTypeName);\n var div = \"#chart_\" + name.Id;\n var div_element = document.getElementById(\"chart_\" + name.Id) as HTMLDivElement;\n div_element.innerHTML = \"\";\n let Series = [];\n let Labels = [];\n let Marker = 0;\n var startdatetime = this.DateStart;\n var enddatetime = this.DateEnd;\n var caldate = enddatetime.getTime() - startdatetime.getTime();\n var conditiondate = caldate / (1000 * 3600 * 24);\n var options = {};\n let DataAvgColors = [];\n if (this.PeriodType == 1 && result[i].StationData.length == 1 && conditiondate <= 3 && !result[i].StationData[0]?.AirQualityData.every(t => t.AVGValue === null)) {\n \n let max = 0;\n let Data = [];\n let DataAvg = [];\n DataAvgColors = [];\n for (let k = 0; k < result[i].StationData[0].AirQualityData.length; k++) {\n\n Data.push(result[i].StationData[0].AirQualityData[k].Value);\n if (result[i].StationData[0].AirQualityData[k].Value != null) {\n noData = false;\r\n }\n DataAvg.push(result[i].StationData[0].AirQualityData[k].AVGValue == null ? null : result[i].StationData[0].AirQualityData[k].AVGValue?.toFixed());\n\n DataAvgColors.push(result[i].StationData[0].AirQualityData[k].AVGColor);\n if (max <= result[i].StationData[0].AirQualityData[k].Value) {\n max = result[i].StationData[0].AirQualityData[k].Value;\r\n }\n\n if (max <= result[i].StationData[0].AirQualityData[k].AVGValue) {\n max = result[i].StationData[0].AirQualityData[k].AVGValue;\r\n }\n\n var datetime = result[i].StationData[0].AirQualityData[k].DateTime;\n Labels.push(datetime);\n\n }\n\n //Creat Series\n Series.push({\r\n name: Average,\r\n data: DataAvg,\n type: \"column\",\n });\n\n Series.push({\r\n name: Hourly,\r\n data: Data,\n type: \"line\"\r\n });\n\n\n\n //Setting Chart\n options = {\n\n legend: {\n show: false,\n },\n\n plotOptions: {\r\n bar: {\r\n borderRadius: 5,\r\n borderRadiusApplication: \"end\",\n columnWidth: '50%',\r\n }\r\n },\n\n colors: [\n function ({ value, seriesIndex, dataPointIndex, w }) {\r\n return self.charts.find(t => t.Id == w.config.chart.id).DataAvgColors[dataPointIndex]\r\n },\n \"#03754A\"\n ],\n\n series: Series,\r\n chart: {\n id: name.Id,\n height: 350, type: 'line', zoom: { enabled: false },\r\n animations: { enabled: false },\n toolbar: {\n show: true, tools: { download: true }, export: {\n png: {\r\n filename: name.Name,\r\n }\n }\n }\n },\n\n markers: { size: Marker },\n\r\n stroke: { width: 2, curve: 'straight' },\n\r\n labels: Labels,\n\n yaxis: {\n showAlways: true,\n max: max <= StandardValue ? StandardValue + 10 : max + 10,\n min: 0,\n title: {\r\n text: name.UnitName,\r\n rotate: -90,\r\n offsetX: 0,\r\n offsetY: 0,\r\n style: {\r\n color: '#ff0000',\r\n fontSize: '18px',\r\n fontWeight: 600,\r\n cssClass: 'apexcharts-yaxis-title',\r\n },\r\n },\n },\n\r\n xaxis: {\r\n type: \"datetime\",\r\n labels: { datetimeUTC: false, },\r\n tooltip: { enabled: false, },\r\n },\n\n annotations: StandardObj != null ? {\n yaxis: [{\n y: StandardValue,\r\n borderColor: '#FF0000',\r\n label: { borderColor: '#FF0000', style: { color: '#fff', background: '#FF0000' }, text: '' },\n\r\n }]\r\n } : {},\n\n tooltip: {\r\n y: {\n title: { formatter: (seriesName) => seriesName, },\n\r\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n return value + \" \" + unit.unitName\n },\n\n colors: [\n function ({ value, seriesIndex, dataPointIndex, w }) {\r\n return self.charts.find(t => t.Id == w.config.chart.id).DataAvgColors[dataPointIndex]\r\n },\n \"#03754A\"\n ],\n\r\n },\n\n x: {\r\n show: true,\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n let dateTime = new Date(value);\n let showDate = new Intl.DateTimeFormat(self.currentLocale, { dateStyle: \"full\", timeStyle: \"short\" }).format(dateTime) + ' ' + timeunit + '' + (unit.StandardValue == null ? '' : ' ' + standardtxt + ' : ' + unit.StandardValue) + '';\r\n return showDate;\r\n },\r\n },\r\n }\n\r\n };\n }\n else {\n \n let max = 0;\n for (let j = 0; j < result[i].StationData.length; j++) {\n let Data = [];\n //var firstHours = new Date(result[i].StationData[j].AirQualityData[0].DateTime).getHours();\n for (let k = 0; k < result[i].StationData[j].AirQualityData.length; k++) {\n Data.push(result[i].StationData[j].AirQualityData[k].Value);\n if (result[i].StationData[0].AirQualityData[k].Value != null) {\n noData = false;\r\n }\n if (max <= result[i].StationData[j].AirQualityData[k].Value) {\n max = result[i].StationData[j].AirQualityData[k].Value;\r\n }\n var datetime = result[i].StationData[j].AirQualityData[k].DateTime;\n Labels.push(datetime);\n }\n\n //Creat Series\n Series.push({\r\n name: result[i].StationData[j].StationName,\r\n data: Data\r\n });\n }\n\n //Setting Chart\n options = {\n\n series: Series,\r\n chart: {\n id: name.Id,\n height: 350, type: 'line', zoom: { enabled: false },\r\n animations: { enabled: false },\n toolbar: {\n show: true, tools: { download: true }, export: {\n png: {\r\n filename: name.Name,\r\n }\n }\n }\n },\n\n markers: { size: Marker },\r\n stroke: { width: 2, curve: 'straight' },\r\n labels: Labels,\n yaxis: {\n showAlways: true,\n max: max <= StandardValue ? StandardValue + 10 : max + 10,\n min: 0,\n title: {\r\n text: name.UnitName,\r\n rotate: -90,\r\n offsetX: 0,\r\n offsetY: 0,\r\n style: {\r\n color: '#ff0000',\r\n fontSize: '18px',\r\n fontWeight: 600,\r\n cssClass: 'apexcharts-yaxis-title',\r\n },\r\n },\n },\n\r\n xaxis: {\r\n type: \"datetime\",\r\n labels: { datetimeUTC: false, },\r\n tooltip: { enabled: false, },\r\n },\n\n annotations: {\n yaxis: [{\n y: StandardValue,\r\n borderColor: '#FF0000',\r\n label: { borderColor: '#FF0000', style: { color: '#fff', background: '#FF0000' }, text: '' }\r\n }]\r\n },\n\n tooltip: {\n\r\n y: {\n title: { formatter: (seriesName) => seriesName, },\n\r\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n return value + \" \" + unit.unitName\n },\n\n colors: [\n function ({ value, seriesIndex, dataPointIndex, w }) {\r\n return self.charts.find(t => t.Id == w.config.chart.id).DataAvgColors[dataPointIndex]\r\n },\n \"#03754A\"\n ],\n\r\n },\n\n x: {\r\n show: true,\n formatter: function (value, seriesIndex, w) {\n var id = w == undefined ? seriesIndex.w.config.chart.id : w.w.config.chart.id;\n var unit = self.charts.find(t => t.Id == id);\n let dateTime = new Date(value);\n let showDate = new Intl.DateTimeFormat(self.currentLocale, { dateStyle: \"full\", timeStyle: \"short\" }).format(dateTime) + (unit.StandardValue == null ? '' : \" ค่ามาตราฐาน: \" + unit.StandardValue);\r\n return showDate;\r\n },\r\n },\r\n }\n\r\n };\r\n }\n\n\n var divnodata = \"nodata_\" + name.Id;\n if (noData) {\n document.getElementById(divnodata).style.display = '';\r\n }\n else {\n document.getElementById(divnodata).style.display = 'none';\n var chart = new ApexCharts(document.querySelector(div), options);\n chart.render();\n self.charts.push({ chart: chart, StandardValue: StandardValue, unitName: name.UnitDisplayName, Id: name.Id, DataAvgColors: DataAvgColors });\n }\n\n var div_all = \"#chart_all\" + name.Id;\n var div_element_all = document.getElementById(\"chart_all\" + name.Id) as HTMLDivElement;\n div_element_all.innerHTML = \"\";\n var divnodata_all = \"nodata_all\" + name.Id;\n if (noData) {\n document.getElementById(divnodata_all).style.display = '';\r\n }\n else {\n document.getElementById(divnodata_all).style.display = 'none';\n var chart = new ApexCharts(document.querySelector(div_all), options);\n chart.render();\n }\n\n }\n self.SelectAirQualityType = \"\";\r\n }\n\n charts: any;\n SelectAirQualityType: string;\n ShowTable() {\n this.ShowLoading(false);\r\n this.Showgraph = false;\n this.Showtable = true;\r\n }\n\r\n SearchCriteria: DashboardSearchCriteria;\n\n MonthStart: any;\n MonthEnd: any;\n YearStart: any;\n YearEnd: any;\n SelectStartYear: number;\n SelectEndYear: number;\n startMonthYear: number;\n endMonthYear: number;\n RawDate: Date = new Date();\n startDateFormat: Date;\n endDateFormat: Date;\n IsCreate: boolean = true;\n CreateCriteria(): DashboardSearchCriteria {\n var self = this;\n\n if (this.StationIds.length == 0) {\n this.endtimeError = true;\n FsUtility.AlertModal(this.i18n.tr('กรุณาเลือกอย่างน้อย 1 สถานี'), 1, 2, 3);\n return;\n }\n\n const criteria = new DashboardSearchCriteria();\n criteria.DistrictGroupId = this.DistrictGroupId;\n criteria.DistrictId = this.DistrictId;\n criteria.StationIds = this.StationIds;\n criteria.OutputType = this.OutputType;\n criteria.PeriodType = this.PeriodType;\n criteria.IsCreate = this.IsCreate;\n this.IsCreate = !this.IsCreate;\n var startdatetime = new Date(this.zeroPad(this.DateStart.getFullYear(), 2) + \"-\" + this.zeroPad((this.DateStart.getMonth() + 1), 2) + \"-\" + this.zeroPad(this.DateStart.getDate(), 2) + \" \" + this.TimeStart);\n var enddatetime = new Date(this.zeroPad(this.DateEnd.getFullYear(), 2) + \"-\" + this.zeroPad((this.DateEnd.getMonth() + 1), 2) + \"-\" + this.zeroPad(this.DateEnd.getDate(), 2) + \" \" + this.TimeEnd);\n criteria.DateTimeStart = FsUtility.ToJsonDate(startdatetime);\n criteria.DateTimeEnd = FsUtility.ToJsonDate(enddatetime);\n criteria.AirQualityTypeList = this.GetSelectedAirQualityType();\n\n //Select Month Type\n if (this.PeriodType == 3 && this.currentLocale == \"th\") {\n self.SelectStartYear = this.YearStart.name - 543;\n self.SelectEndYear = this.YearEnd.name - 543;\n\n self.startMonthYear = this.RawDate.setFullYear(self.SelectStartYear, this.MonthStart.id, 1);\n self.endMonthYear = this.RawDate.setFullYear(self.SelectEndYear, this.MonthEnd.id + 1, 0);\n\n self.startDateFormat = new Date(self.startMonthYear);\n self.endDateFormat = new Date(self.endMonthYear);\n\n criteria.DateTimeStart = FsUtility.ToJsonDate(self.startDateFormat);\n criteria.DateTimeEnd = FsUtility.ToJsonDate(self.endDateFormat);\n }\n else if (this.PeriodType == 3 && this.currentLocale == \"en\") {\n self.SelectStartYear = this.YearStart.name;\n self.SelectEndYear = this.YearEnd.name;\n\n self.startMonthYear = this.RawDate.setFullYear(self.SelectStartYear, this.MonthStart.id, 1);\n self.endMonthYear = this.RawDate.setFullYear(self.SelectEndYear, this.MonthEnd.id + 1, 0);\n\n self.startDateFormat = new Date(self.startMonthYear);\n self.endDateFormat = new Date(self.endMonthYear);\n\n criteria.DateTimeStart = FsUtility.ToJsonDate(self.startDateFormat);\n criteria.DateTimeEnd = FsUtility.ToJsonDate(self.endDateFormat);\n }\n //End Select Month Type\n return criteria;\n }\n\n tempSelected: any;\n SearchItems(searchCallback: (result: AirQualityGroupData[]) => void, searchCriteria: DashboardSearchCriteria, sortingCriteria: SortingCriteria, pagingCriteria: PagingCriteria) {\n var self = this;\n self.tempSelected = this.SelectedAirQualityType;\n self.ShowLoading(true);\n this.HideGraphAndTable();\r\n const searchParameter = new DashboardSearchParameter();\r\n searchParameter.Criteria = searchCriteria;\n //searchParameter.Criteria = self.CreateCriteria();\r\n searchParameter.SortingCriteria = sortingCriteria;\n searchParameter.PagingCriteria = pagingCriteria;\r\n \r\n var service = self.container.get(DashboardAppService) as DashboardAppService;\n if (self.OutputType == 1) {\n service.FindGraph(searchParameter)\r\n .done((result) => {\n self.ShowGraph();\n self.CreateChart(result);\r\n })\n .fail((error) => {\n FsUtility.AlertErrorMessage(error);\r\n });\n }\n else {\n service.FindTable(searchParameter)\r\n .done((result) => {\n const table = document.getElementById('table') as HTMLTableElement;\n const tbody = document.getElementById('table').getElementsByTagName('tbody')[0];\n const tfoot = document.getElementById('table').getElementsByTagName('tfoot')[0];\n tbody.innerHTML = \"\";\n tfoot.innerHTML = \"\";\n\n //Create Footer\n var newfootRow = tfoot.insertRow();\n var newfootCell = newfootRow.insertCell();\n var newfootText = document.createTextNode(\"ค่ามาตรฐาน\");\n\n newfootCell.style.textAlign = \"center\";\n newfootCell.style.borderBottomLeftRadius = \"20px\";\n newfootCell.colSpan = 3;\r\n newfootCell.appendChild(newfootText);\n\n for (let i = 0; i < self.tempSelected.length; i++) {\n var newCell = newfootRow.insertCell();\n var stdtext = \"\";\n\n if (self.tempSelected.length[i] == self.tempSelected.length) {\n newCell.style.borderBottomRightRadius = \"20px\";\r\n }\n\n newCell.style.textAlign = \"center\";\n if (self.tempSelected[i].StandardValue != null) {\n stdtext = self.tempSelected[i].StandardValue.toString();\r\n }\n else {\n stdtext = \"n/a\";\r\n }\n\n if (i == self.tempSelected.length-1) {\n newCell.style.borderBottomRightRadius = \"20px\";\r\n }\n \n var newText = document.createTextNode(stdtext);\r\n newCell.appendChild(newText);\n }\n //End\n\n for (var i = 0; i < result.length; i++) {\n var newrow = tbody.insertRow();\n\n /*var newCell = newrow.insertCell();\n var newText = document.createTextNode(result[i].DistrictGroupName);\r\n newCell.appendChild(newText);*/\n\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(result[i].DistrictName);\n newCell.style.textAlign = \"center\";\r\n newCell.appendChild(newText);\n\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(result[i].StationName);\n newCell.style.textAlign = \"center\";\r\n newCell.appendChild(newText);\n\n var newCell = newrow.insertCell();\n var datetime = new Date(result[i].DateTime);\n\n const day = datetime.getDate();\r\n const monthIndex = datetime.getMonth();\r\n const year = datetime.getFullYear();\r\n const minutes = datetime.getMinutes();\r\n const hours = datetime.getHours();\n\n //Hourly\n if (this.PeriodType == 1) {\n var datetimeStr = day + \"/\" + (monthIndex + 1) + \"/\" + year + \" \" + this.zeroPad(hours, 2) + \":\" + this.zeroPad(minutes, 2);\n }\n\n //Daily\n if (this.PeriodType == 2) {\n var datetimeStr = day + \"/\" + (monthIndex + 1) + \"/\" + year;\n }\n\n //Monthly\n if (this.PeriodType == 3) {\n const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\r\n \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n var datetimeStr = monthNames[monthIndex] + \" \" + year;;\n }\n\n var newText = document.createTextNode(datetimeStr);\n newCell.style.textAlign = \"center\";\r\n newCell.appendChild(newText);\n\n for (let j = 0; j < this.SelectedAirQualityType.length; j++) {\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(\"\");\r\n newCell.appendChild(newText);\n }\n\n for (let j = 0; j < result[i].AirQualityList.length; j++) {\n for (var c = 3, col; col = newrow.cells[c]; c++) {\r\n if (result[i].AirQualityList[j].TypeDisplayName == table.rows[0].cells[c].innerHTML) {\n //newrow.cells[c].innerText = result[i].AirQualityList[j].Value?.toString();\n //if (result[i].AirQualityList[j].Value > 0 && result[i].AirQualityList[j].Value <= 300) {\n // newrow.cells[c].innerText = result[i].AirQualityList[j].Value.toString();\r\n //}\n //else {\n // newrow.cells[c].innerText = \"n/a\";\r\n //}\n newrow.cells[c].innerText = result[i].AirQualityList[j].Value.toString();\n newrow.cells[c].style.textAlign = \"center\";\n }\r\n }\n }\n\n\n }\n\n if (result.length == 0) {\n var newrow = tbody.insertRow();\n var newCell = newrow.insertCell();\n var newText = document.createTextNode(\"ไม่พบข้อมูล\");\r\n newCell.appendChild(newText);\r\n }\n\r\n searchCallback(result);\n this.ShowTable();\r\n }).fail((error) => {\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\r\n }\n\n CountItems(searchCallback: (result: number) => void) {\r\n var self = this;\n var req = self.CreateCriteria();\n var service = this.container.get(DashboardAppService) as DashboardAppService;\r\n service.Count(req)\r\n .done((result) => {\r\n searchCallback(result)\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n PrepareDefaultSortingCriteria(sortingCriteria: SortBy[]): void {\r\n var sortBy = new SortBy();\r\n sortBy.Direction = 0;\r\n sortBy.Name = \"DateTime\";\r\n sortingCriteria.push(sortBy);\r\n }\n\n\n\n Reset() {\n this.HideGraphAndTable();\n }\n\n SearchFunction() {\n this.HideGraphAndTable();\n //Validation\n this.startdateError = false;\n this.enddateError = false;\n this.starttimeError = false;\n this.endtimeError = false;\n /*if (this.DateStart == \"\") {\n this.startdateError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\r\n }\n if (this.DateEnd == \"\") {\n this.enddateError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\r\n }*/\n if (this.DateStart > this.DateEnd) {\n this.startdateError = true;\n this.enddateError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\r\n }\n if (this.PeriodType == 1) {\n if (this.DistrictId != null) {\n if (!this.StationIds) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Station'), 1, 2, 3);\n this.ShowLoading(false);\n return;\r\n }\n else if (this.StationIds.length == 0) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Station'), 1, 2, 3);\n this.ShowLoading(false);\n return;\r\n }\r\n }\n\n if (!this.StationIds) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Station'), 1, 2, 3);\n this.ShowLoading(false);\n return;\n }\n if (this.TimeStart == \"\") {\n this.starttimeError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\n }\n if (this.TimeEnd == \"\") {\n this.endtimeError = true;\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.Datetime'), 1, 2, 3);\n return;\n }\r\n }\n this.GetSelectedAirQualityType();\n if (this.SelectedAirQualityType.length == 0) {\n FsUtility.AlertModal(this.i18n.tr('Aqs.Dashboard:Error.SelectAirQualityType'), 1, 2, 3);\n return;\r\n }\n this.HideGraphAndTable();\n\n //this.Search();\n this.ShowLoading(true);\n this.SearchSummary();\r\n }\n\n ChangePeriodType() {\n if (this.PeriodType == 1) {\n this.SetDatetime();\r\n }\n else if (this.PeriodType == 2) {\n this.DateStart = new Date(new Date().setMonth(new Date().getMonth() - 1));\n }\n else if (this.PeriodType == 3) {\n this.DateStart = new Date(new Date().setMonth(new Date().getMonth() - 12));\n }\r\n }\n\n SetAirQualityType(id: string) {\n this.SelectAirQualityType = id;\r\n }\n\n changeTab(val: string) {\n document.getElementById('btn-' + val).click();\n this.SelectAirQualityType = val;\r\n }\n\n SelectAllAirQualityType() {\n var check = true;\n for (var i in this.AirQualityTypeList) {\n const checkbox = document.getElementById(this.AirQualityTypeList[i].Name) as HTMLInputElement;\n if (checkbox != null) {\n if (!checkbox.checked) check = false;\n checkbox.checked = true;\r\n }\r\n }\n if (check) {\n for (var i in this.AirQualityTypeList) {\n const checkbox = document.getElementById(this.AirQualityTypeList[i].Name) as HTMLInputElement;\n if (checkbox != null) {\n checkbox.checked = false;\r\n }\r\n }\r\n }\r\n }\n\n\n SearchSummary() {\n \n var self = this;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n const searchParameter = new DashboardSearchParameter();\r\n searchParameter.Criteria = this.CreateCriteria();\r\n\n service.FindSummaryWeb(searchParameter)\r\n .done((result) => {\r\n if (!result) {\r\n self.StationSummary = null;\r\n }\r\n else {\r\n self.StationSummary = result;\r\n self.selAirQualityTypeId = null;\r\n }\n self.Search();\r\n })\r\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\n }\n\n\n tempErrorValue: any;\r\n PopupErrorValue(data) {\n var self = this;\n self.tempErrorValue = data;\n this.dialogService = this.container.get(DialogService);\n this.dialogService.open({\n viewModel: PickDateDialogVM,\n model: {\n viewModel: self,\n view: PLATFORM.moduleName('Modules/Aqs/Programs/Dashboard/ErrorDialogView.html'),\n okbtnclass: \"invisible\",\n cancelbtn: \"ปิด\",\n IsShowCancel: true,\n Header: \"รายละเอียดค่าผิดปกติ\"\n }, lock: true\n }).whenClosed(response => {\n\n });\r\n }\n\n ErrorDateFormat(date) {\r\n if (date == null || date == \"\" || date == undefined) {\r\n return \"\";\r\n } else {\r\n try {\r\n let dateTime = new Date(date);\r\n var datestring = new Intl.DateTimeFormat(\r\n this.currentLocale == null ? \"th\" : this.currentLocale,\r\n {\r\n dateStyle: \"medium\",\r\n timeStyle: \"short\",\r\n }\r\n ).format(dateTime);\r\n return datestring;\r\n } catch (error) {\r\n console.error(error);\r\n return \"\";\r\n }\r\n }\r\n }\n\n ShowDate(date) {\r\n if (date == null || date == \"\" || date == undefined || this.currentLocale == null) {\r\n return \"\";\r\n }\n else {\n var datetime = new Date(date);\n\n const day = datetime.getDate();\r\n const monthIndex = datetime.getMonth();\r\n const year = datetime.getFullYear();\r\n const minutes = datetime.getMinutes();\r\n const hours = datetime.getHours();\n\n //Hourly\n if (this.PeriodType == 1) {\n var datetimeStr = day + \"/\" + (monthIndex + 1) + \"/\" + year + \" \" + this.zeroPad(hours, 2) + \":\" + this.zeroPad(minutes, 2);\n }\n\n //Daily\n if (this.PeriodType == 2) {\n var datetimeStr = day + \"/\" + (monthIndex + 1) + \"/\" + year;\n }\n\n //Monthly\n if (this.PeriodType == 3) {\n const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\r\n \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n var datetimeStr = monthNames[monthIndex] + \" \" + year;;\n }\n\r\n //let dateTime = new Date(date);\r\n //return new Intl.DateTimeFormat(\"en\", { dateStyle: \"short\", timeStyle: \"short\" }).format(dateTime);\n return datetimeStr;\r\n }\r\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n}\r\n","\r\nimport { useView, autoinject, Container } from 'aurelia-framework'\r\nimport { PLATFORM } from 'aurelia-pal';\nimport TabViewModel from '../../../../Lib/Fs.SmartClient.Client/TabViewModel';\r\n\r\n\r\n@autoinject()\r\n @useView(PLATFORM.moduleName(\"./EmissionMapGraphPublicSearchView.html\"))\r\nexport default class EmissionMapGraphPublicSearchVM extends TabViewModel {\r\n \n attached() {\n \n }\n\r\n constructor() {\r\n super();\n \r\n }\n\r\n \n\r\n}\r\n\r\n"],"names":[],"sourceRoot":""}