{"version":3,"file":"app-8ef407a3.b149463909b5e91f4e75.bundle.js","mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AAEA;AAOA;AACA;AACA;AACA;AAIA;AAAA;AAmCA;AAAA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AA5CA;AAFA;AACA;AAoCA;AAnCA;AAqMA;AAAA;AArMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAKA;AAAA;AA0IA;AAAA;AAzHA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AA0jBA;AAxdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAvHA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;;AARA;AAuBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;;;AAZA;AAeA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AALA;AAOA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AARA;AAYA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAoCA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AAAA;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;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;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;AAEA;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;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AASA;;AAEA;AACA;AACA;AACA;AAGA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;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;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAtnBA;AAFA;AACA;AA2IA;AA1IA;AA2nBA;AAAA;AA3nBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAmCA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;AACA;AACA;AACA;AACA;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAPA;AAQA;AACA;AACA;;;AAdA;;;AAeA;AACA;;;;;AACA;AAEA;;;;;;AACA;AACA;AACA;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAlBA;;;;AAoBA;;;AAvBA;;;AA0BA;;;;;AACA;AACA;;;AACA;;;;AACA;AACA;;;;;;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AARA;AAUA;;;;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AACA;AACA;;;AAAA;AAEA;AAAA;AACA;AACA;;;AAAA;AAEA;AAAA;AACA;AACA;;;AAAA;AAEA;AAAA;AACA;AACA;;;AAAA;AAdA;AADA;;;AAGA;AAEA;AADA;;;AAGA;AAEA;AADA;;;AAGA;AAEA;AADA;;;AAGA;AAhOA;AAFA;AACA;AAoCA;AAnCA;AAiOA;AAAA;AAjOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAOA;AAAA;AAwEA;AAAA;AA3DA;AACA;AACA;AACA;AA0DA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAKA;AACA;AAEA;AACA;AAEA;AACA;;AACA;AAzDA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;;;AAZA;AAeA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;AAPA;AAWA;AACA;AACA;AA2BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAIA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAKA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AASA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAhZA;AAFA;AACA;AAyEA;AAxEA;AAkZA;AAAA;AAlZA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAGA;AACA;AAKA;AAAA;AAyEA;AAAA;AA5DA;AACA;AAKA;AACA;AACA;AACA;AAqDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;;AACA;AA5DA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;;;AAZA;AAeA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AALA;AAQA;AACA;AACA;AACA;AAgCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA;AAEA;;;;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AACA;AACA;AACA;AACA;AAEA;;;AAAA;AAMA;;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AASA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;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;AA5dA;AAFA;AACA;AA0EA;AAzEA;AA8dA;AAAA;AA9dA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClCA;AAIA;AAEA;AAKA;AAAA;AAqBA;AAAA;AAEA;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AApFA;AADA;;AACA;AAsFA;AAAA;AAtFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AAAA;AAkBA;AAAA;AAdA;AACA;AAiKA;AAlJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;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;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AAlLA;AAFA;AACA;;AACA;AAoLA;AAAA;AApLA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAiBA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAMA;AACA;AAKA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AA7EA;AADA;;AACA;AA+EA;AAAA;AA/EA;;;;;;;;;;;;;;;;ACZA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA","sources":["webpack://app/./src/Modules/Aqs/Programs/Fondue/FondueSearchView.html","webpack://app/./src/Modules/Aqs/Programs/Home/HomeSearchView.html","webpack://app/./src/Modules/Aqs/Programs/Issue/IssueSearchView.html","webpack://app/./src/Modules/Aqs/Programs/MapMonitoringEgat/MapMonitoringSearchView.html","webpack://app/./src/Modules/Aqs/Programs/MapMonitoring/MapMonitoringSearchView.html","webpack://app/./src/Modules/Aqs/Programs/News/NewsCriteriaView.html","webpack://app/./src/Modules/Aqs/Programs/News/NewsSearchView.html","webpack://app/./src/Modules/Aqs/Programs/News/NewsView.html","webpack://app/./src/Modules/Aqs/Programs/Fondue/FondueEditorVM.ts","webpack://app/./src/Modules/Aqs/Programs/Home/HomeSearchVM.ts","webpack://app/./src/Modules/Aqs/Programs/Issue/IssueEditorVM.ts","webpack://app/./src/Modules/Aqs/Programs/MapMonitoringEgat/MapMonitoringSearchVM.ts","webpack://app/./src/Modules/Aqs/Programs/MapMonitoring/MapMonitoringSearchVM.ts","webpack://app/./src/Modules/Aqs/Programs/News/NewsEditorVM.ts","webpack://app/./src/Modules/Aqs/Programs/News/NewsSearchVM.ts","webpack://app/./src/Modules/Aqs/Programs/News/NewsViewEditorVM.ts","webpack://app/./src/Modules/Aqs/Resources/Enums.ts"],"sourcesContent":["// 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;","// 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 EditorVMBase from \"../../../../Lib/Fs.SmartClient.Client/EditorVMBase\";\r\nimport FsUtility from \"../../../../Lib/Fs.SmartClient.Client/FsUtility\";\r\nimport { fs } from \"config/FsConfig\";\r\nimport IssueData from \"../../Scripts/AppServiceContract/IssueData\";\r\nimport { IssueStatusEnum, IssueTypeEnum } from \"../../Resources/Enums\";\nimport { ValidationRules } from \"aurelia-validation\";\nimport FileInfoData from '../../../Core/Scripts/FileInfoData';\nimport UploadFileAppService from '../../Scripts/AppServiceContract/UploadFileAppService';\r\nimport PublicIssueAppService from \"../../Scripts/AppServiceContract/PublicIssueAppService\";\nimport { useView, autoinject, Container, computedFrom } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\nimport { I18N } from 'aurelia-i18n';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\n@autoinject()\r\n@useView(PLATFORM.moduleName(\"./FondueSearchView.html\"))\r\nexport default class FondueEditorVM extends EditorVMBase {\r\n\r\n Id: string;\r\n Title: string;\r\n Description: string;\r\n RequestorName: string;\r\n RequestorEmail: string;\r\n RequestorPhone: string;\r\n IssueDate: Date;\r\n Status: any;\r\n FileInfoList: any;\n IssueType: any;\n DescriptionDisplay: string;\r\n\n public i18n: I18N;\n public Container: Container;\n public UploadFileAppService: UploadFileAppService;\r\n public ServiceBaseUrl: string;\n public name: string;\n public Obj: any;\n SelectFile: any;\n Errormsg: string;\n AttachmentBaseUrl: string;\r\n message: any;\n Rules: any;\n validate: boolean;\n TextSubject: string;\n TextDetail: string;\n TextSelectFile: string;\n TextName: string;\n TextTelephone: string;\n\n eventAggregator: any;\n changeLocaleSubscribe: any;\n\r\n constructor(container: Container, i18n: I18N, eventAggregator: EventAggregator,) {\r\n super();\n this.Container = container;\n this.i18n = i18n;\n this.AttachmentBaseUrl = fs.Config.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/DownloadFile/id=\";\n this.ServiceBaseUrl = fs.Config.ServiceBaseUrl;\n var self = this;\n\n \r\n }\n\n\n\n/* CreateRequest(): IssueData {\r\n const criteria = new IssueData();\n criteria.Id = this.Id\n criteria.Title = this.Title;\n criteria.Description = this.Description;\n criteria.IssueDate = new Date();\n criteria.RequestorName = this.RequestorName;\n criteria.RequestorEmail = this.RequestorEmail;\n criteria.RequestorPhone = this.RequestorPhone;\n criteria.Status = IssueStatusEnum.New;\n criteria.IssueType = IssueTypeEnum.Public;\n criteria.FileInfoList = this.FileInfoList;\n return criteria;\r\n }*/\n\n/* Save(doneCallback: () => void, failCallback: (error: any) => void) {\r\n var self = this;\r\n this.validationController.validate().then((result) => {\r\n this.validate = result.valid;\r\n if (result.valid) {\r\n var request = this.CreateRequest();\r\n var service = Container.instance.get(PublicIssueAppService) as PublicIssueAppService;\r\n service.Add(request)\r\n .done((result) => {\r\n FsUtility.AlertModal(\"ส่งข้อมูลเรียบร้อย\", 2, 1);\r\n this.ResetData();\r\n self.Id = result;\r\n }).fail(FsUtility.CommonErrorHandler);\r\n }\r\n })\r\n };*/\n\n /* async OnSelectFile(selectedFiles) {\r\n var self = this;\n var listfile = [];\r\n var files = selectedFiles.target.files;\r\n for (var x = 0; x < files.length; x++) {\r\n var data = new FormData();\r\n data.append(\"file\" + x, files[x]);\r\n\r\n var File = await $.ajax({\r\n type: \"POST\",\r\n url: this.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/UpLoad\",\r\n contentType: false,\r\n processData: false,\r\n data: data,\r\n async: false,\r\n });\r\n this.Obj = { ...this.Obj, File: File.FileName, FileName: files[x].name }\r\n this.SelectFile = files[x];\n listfile.push(self.Obj)\r\n };\n this.ImportFile(listfile);\r\n }*/\n\n/* async ImportFile(obj) {\r\n var self = this;\n var list = [];\n for (var i = 0; i < obj.length; i++) {\r\n try {\r\n var service = Container.instance.get(UploadFileAppService) as UploadFileAppService;\r\n await service.UpdateAttachment(obj[i])\r\n .done((result) => {\r\n for (var i = 0; i < result.length; i++) {\n const data = new FileInfoData();\n data.Id = result[i].Id;\n data.FileName = result[i].FileName;\n data.FilePath = result[i].FilePath;\n data.Extension = result[i].Extension;\n data.ExtensionId = result[i].ExtensionId;\n data.MimeType = result[i].MimeType;\n data.Description = result[i].Description;\n data.FilePath = result[i].FilePath;\n data.RelationId = result[i].RelationId;\n data.RelationTypeValue = result[i].RelationTypeValue;\n list.push(data);\r\n }\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n } catch (err) {\r\n FsUtility.AlertErrorMessage(err);\r\n }\r\n }\n self.FileInfoList = list;\r\n }*/\n\n/* async ValidateBeforeSave() {\r\n var self = this;\r\n this.validationController.removeObject(this);\r\n this.Validate();\r\n this.validationController.addObject(this, this.Rules);\r\n\r\n let res = await this.validationController.validate()\r\n .then(result => {\r\n if (!result.valid) {\r\n var erorrMsg = self.SetValidate(result);\r\n if (erorrMsg != \"\")\r\n FsUtility.AlertModal(erorrMsg, 1, 2, 3);\r\n }\r\n return result.valid;\r\n });\r\n\r\n return Promise.resolve(res);\r\n }*/\r\n\r\n/* SetValidate(error) {\r\n var errors = \"\";\r\n var errorsData = error.results.filter(t => t.valid == false);\r\n\r\n for (var i = 0; i < errorsData.length; i++) {\r\n if (errorsData[i].rule.property.displayName == null || errorsData[i].rule.property.displayName == \"\")\r\n errors += errorsData[i].message + \"
\";\r\n }\r\n return errors;\r\n }*/\n\n/* ResetData() {\n this.Id = null;\r\n this.Title = null;\r\n this.Description = null;\r\n this.RequestorName = null;\r\n this.RequestorEmail = null;\r\n this.RequestorPhone = null;\r\n this.IssueDate = null;\r\n this.Status = null;\r\n this.FileInfoList = null;\n this.IssueType = null;\n this.DescriptionDisplay = null;\n this.SelectFile = null;\n this.Obj = null;\n }*/\n\n /*@computedFrom('validationController.errors.length', 'Title')\r\n get TitleErrors() {\r\n return this.getValidateErrors('Title');\r\n }\r\n @computedFrom('validationController.errors.length', 'Description')\r\n get DescriptionErrors() {\r\n return this.getValidateErrors('Description');\r\n }\n @computedFrom('validationController.errors.length', 'RequestorName')\r\n get RequestorNameErrors() {\r\n return this.getValidateErrors('RequestorName');\r\n }\n @computedFrom('validationController.errors.length', 'RequestorEmail')\r\n get RequestorEmailErrors() {\r\n return this.getValidateErrors('RequestorEmail');\r\n }*/\r\n}\r\n","import { DialogService } from 'aurelia-dialog';\r\nimport { inject } from 'aurelia-framework';\r\nimport { useView, autoinject, Container } from 'aurelia-framework'\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport MapMonitoringSearchVM from '../MapMonitoring/MapMonitoringSearchVM';\nimport TabViewModel from '../../../../Lib/Fs.SmartClient.Client/TabViewModel';\nimport Map from 'ol/Map';\nimport Feature from 'ol/Feature';\r\nimport View from 'ol/View';\nimport { fromLonLat, transformExtent } from 'ol/proj';\nimport { OSM, TileJSON, Vector as VectorSource, XYZ } from 'ol/source';\r\nimport { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer';\r\nimport Point from 'ol/geom/Point';\r\nimport { Overlay } from 'ol';\nimport GeoJSON from 'ol/format/GeoJSON';\r\nimport PublicAirQualityMapAppService from '../../Scripts/AppServiceContract/PublicAirQualityMapAppService';\nimport { Fill, Icon, Style, Text, Stroke, Circle } from 'ol/style';\nimport { fs } from '../../../../Config/FsConfig';\r\nimport FsUtility from '../../../../Lib/Fs.SmartClient.Client/FsUtility';\r\nimport { I18N } from 'aurelia-i18n';\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport StationAirQualityData from '../../Scripts/AppServiceContract/StationAirQualityData';\r\nimport SortBy from '../../../../Lib/Fs.Core.Data/SortBy';\r\nimport StationParameter from '../../Scripts/AppServiceContract/StationParameter';\r\nimport DashboardAppService from '../../Scripts/AppServiceContract/DashboardAppService';\r\nimport PublicAppService from '../../Scripts/AppServiceContract/PublicAppService';\r\nimport Popover from 'bootstrap/js/dist/popover';\r\nimport DistrictParameter from '../../Scripts/AppServiceContract/DistrictParameter';\r\nimport CustomContentAppService from '../../Scripts/AppServiceContract/CustomContentAppService';\r\n\r\n\r\n@autoinject()\r\n@useView(PLATFORM.moduleName(\"./HomeSearchView.html\"))\r\nexport default class HomeSearchVM extends TabViewModel {\r\n MapMonitoringSearchVM: MapMonitoringSearchVM;\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n public changeLocaleSubscribe: any;\r\n public MapsView: string;\n public Today: string;\n public Value: number;\n public dialogService: DialogService;\n public ListDistrict: any;\n public ListDistrictFilter: any;\n public ListDistrictGroup: any;\n public AirQualityIndexList: any;\n //public placeholder: string;\n public thisAqsIndexpm25: any;\n public AirQualityIndexItemList: any;\n public AirQualityIndexItemTableList: any;\n public valueAirQualityIndexHealthRecommend: number = 0;\n public Placeholder2: string = \"เลือกสถานี\";\n public Placeholder: string = \"ค้นหาสถานี\";\n public stationname: string;\n public delayTimer: any;\n public StationShowTable: any;\n public StationSelectId: any;\n public SecectId: any;\n public StationTable: any;\n public tempFindStation: any;\n public ListAqsTypeCode = [\n \"PM10\",\n \"PM2.5\",\n \"CO\",\n \"NO2\",\n \"O3\",\n ];\n\n public ListStdAqs: any;\n\n /*Maps*/\n map: any;\n view = new View({\r\n center: fromLonLat([100.50231745637795, 13.75512316215497]),\r\n zoom: 10\r\n });\n public ColorMaps: any;\n chart: any;\n vectorLayer: any;\n LineAreaLayer: any;\n vectorSource: any\n\r\n stationId: string;\r\n get StationId(): string {\r\n return this.stationId;\r\n }\r\n set StationId(data: string) {\r\n var self = this;\r\n\r\n self.stationId = data;\r\n var station = self.StationData.find((t) => t.StationId == data);\r\n\r\n self.OpenDailog(station);\r\n }\n\n ShowPopup: boolean;\n DataStation: any;\r\n AQIData: any;\n StationTime: string;\r\n AirQualityMax: number;\r\n AirQualityList: any;\n AirQualityCalculateData: any;\n StationData: any;\n public districtGroupId: string;\n airQualityArea: any;\r\n AttachmentBaseUrl: string;\n\n\r\n get DistrictGroupId(): string {\r\n return this.districtGroupId\r\n }\r\n set DistrictGroupId(data: string) {\r\n var self = this\r\n self.districtGroupId = data;\n\n if (data != null && data != \"\") {\n self.ListDistrictFilter = self.ListDistrict.filter(t => t.DistrictGroupId == data);\n this.LoadMapLayer(self.AirQualityAreaDatas);\r\n } else {\n self.ListDistrictFilter = self.ListDistrict;\n this.LoadMapLayer(self.AirQualityAreaDatas);\n }\r\n }\n\n public districtId: string;\n get DistrictId(): string {\r\n return this.districtId\r\n }\r\n set DistrictId(data: string) {\r\n var self = this\n self.districtId = data;\n this.LoadMapLayer(self.AirQualityAreaDatas);\r\n }\n\n get StationName(): string {\r\n return this.stationname\r\n }\r\n set StationName(data: string) {\r\n var self = this\r\n this.stationname = data;\r\n clearTimeout(this.delayTimer);\r\n this.delayTimer = setTimeout(function () {\r\n self.FilterStation()\r\n }, 1000);\r\n }\n\n public AirQualityAreaDatas: any;\n\n attached() {\n this.LoadMap();\n if (document.querySelectorAll('[data-bs-toggle=\"popover\"]')[0] != null) {\n new Popover(document.querySelectorAll('[data-bs-toggle=\"popover\"]')[0]);\r\n }\n\n }\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 self.Placeholder2 = \"เลือกสถานี\";\n }\n else {\n self.Placeholder = \"Search station\";\n self.Placeholder2 = \"Select station\";\r\n }\n\r\n }\r\n\r\n constructor(i18n: I18N, eventAggregator: EventAggregator) {\r\n super();\n var self = this;\n this.i18n = i18n;\n this.eventAggregator = eventAggregator;\n let dateTime = new Date();\n self.FindAirIndexItemTable();\n self.AttachmentBaseUrl = fs.Config.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/DownloadFile/id=\";\n self.MapsView = PLATFORM.moduleName(\"Modules/Aqs/Programs/MapMonitoring/MapMonitoringSearchView.html\");\n self.PrepareDropdown().then(() => {\n self.SearchArea();\n setInterval(function () {\n self.CloseDailog();\n self.SearchArea();\n self.stationname = \"\";\n self.FilterStation()\r\n \n }, 1200000);\n });\n self.LoadAirQualityIndexItemList();\n\n self.changeLocaleSubscribe = self.eventAggregator.subscribe('ChangeLocale', (response) => {\n var currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n self.Today = new Intl.DateTimeFormat(currentLocale, { dateStyle: 'full' }).format(dateTime);\n self.PrepareDropdown();\n self.FindFooterContent();\n if (self.currentLocale != currentLocale && self.currentLocale != null) {\n window.location.reload();\n }\r\n });\n self.FindAirQualityType();\r\n }\n\n\n FilterStation() {\n var self = this;\n self.StationShowTable = this.StationData.filter(t => t.StationName.indexOf(self.StationName) > -1);\n this.StationTable = self.StationShowTable;\r\n }\r\n\n GotoMap() {\n const element = document.getElementById(\"Maps\");\r\n element.scrollIntoView({ behavior: \"smooth\" });\n }\n\n public StationSearchTable: any;\n SearchStation() {\r\n var service = this.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.FindStation()\r\n .done((result) => {\r\n this.StationSearchTable = result;\r\n })\r\n .fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\r\n SearchArea() {\n var service = this.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.Find2()\r\n .done((result) => {\n this.StationData = result;\n this.StationTable = result;\n this.FindAirQualityArea();\r\n })\n .fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n TbPM10: any;\n TbPM25: any;\n TbCO: any;\n TbNO2: any;\n TbO3: any;\n FindAirIndexItemTable() {\n var service = this.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.FindAirIndexItemTable()\r\n .done((result) => {\n this.TbPM10 = result.find(t => t.Name == \"PM10\");\n this.TbPM25 = result.find(t => t.Name == \"PM2.5\");\n this.TbCO = result.find(t => t.Name == \"CO\");\n this.TbNO2 = result.find(t => t.Name == \"NO2\");\n this.TbO3 = result.find(t => t.Name == \"O3\");\r\n })\n .fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n dynamicSort(property) {\r\n var sortOrder = 1;\r\n if (property[0] === \"-\") {\r\n sortOrder = -1;\r\n property = property.substr(1);\r\n }\r\n return function (a, b) {\r\n var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;\r\n return result * sortOrder;\r\n }\n }\n\n PrepareDropdown() {\n var defered = $.Deferred();\r\n var ajax = this.DistrictDropdown();\r\n var ajax2 = this.DistrictGroupDropdown();\n var ajax3 = this.LoadAirQualityIndexList();\n var ajax4 = this.SearchStation();\r\n\r\n $.when(ajax, ajax2, ajax3, ajax4).done(function (r1) {\r\n defered.resolve(null);\r\n });\r\n return defered.promise();\n }\n\n async LoadStationDropdown(params, success, failure) {\r\n var self = this;\r\n var param = new StationParameter();\r\n param.StationName = params.data.term ? params.data.term : \"\";\r\n param.DistrictGroupId = this.DistrictGroupId;\r\n param.DistrictId = this.DistrictId;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.StationDropdown(param)\r\n .done((result) => {\r\n success(result);\r\n })\r\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n async LoadDistrictDropdown(params, success, failure) {\r\n var self = this;\r\n var param = new DistrictParameter();\r\n param.DistrictName = params.data.term ? params.data.term : \"\";\r\n param.DistrictGroupId = this.DistrictGroupId;\r\n param.DistrictId = this.DistrictId;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.DistrictDropdown2(param)\r\n .done((result) => {\r\n success(result);\r\n })\r\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n FindAirQualityType() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.FindAirQualityType()\r\n .done((result) => {\r\n self.ListStdAqs = result;\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n DistrictDropdown() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.DistrictDropdown()\r\n .done((result) => {\r\n self.ListDistrict = result;\n self.ListDistrictFilter = self.ListDistrict;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n DistrictGroupDropdown() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.DistrictGroupDropdown()\r\n .done((result) => {\r\n self.ListDistrictGroup = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n LoadAirQualityIndexList() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.AirQualityIndexList()\r\n .done((result) => {\n this.AirQualityIndexList = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n FindAirQualityArea() {\n var self = this;\n var service = self.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.FindAirQualityArea()\r\n .done((result) => {\r\n self.AirQualityAreaDatas = result;\n this.LoadMapLayer(result);\r\n }).fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\n async LoadAirQualityIndexItemList() {\n var self = this;\r\n var service = Container.instance.get(PublicAppService) as PublicAppService;\r\n service.AirQualityIndexItemPMforMobile()\r\n .done((result) => {\r\n self.AirQualityIndexItemList = result;\r\n })\r\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n\n\n\n FirstData: any;\n FirstData2: any;\n Test: any;\n\n OpenDailog(stationdata: StationAirQualityData) {\n //Set null first\n this.Test = null;\n this.FirstData = null;\n this.FirstData2 = null;\n this.thisAqsIndexpm25 = null;\n ///// \n\n var self = this;\n var data = [];\n self.ShowPopup = true;\n this.FirstData = stationdata;\n self.FirstData2 = stationdata.AirQualityPM25;\n\n if (stationdata.AirQualityPM25 != null) {\n var AirQualityIndexItem = self.AirQualityIndexItemList?.find((t) => t.Name == \"PM2.5\"\n && Number(self.FirstData2.AverageAQI) >= t.Min\n && (Number(self.FirstData2.AverageAQI) <= t.Max || t.Max == null));\n\n var AirQualityIndexpm25 = self.AirQualityIndexList?.find((t) => t.Id == AirQualityIndexItem?.AirQualityIndexId);\n self.thisAqsIndexpm25 = AirQualityIndexpm25;\r\n }\n this.Test = stationdata.AirQualityCalculateItemDatas.filter(t => t.AqsTypeCode != \"PM2.5\");\n this.SetData(stationdata.AirQualityCalculateItemDatas);\n }\n SetData(AirQualityCalculateData) {\n if (AirQualityCalculateData.length != 0) {\n let dateTime = new Date(AirQualityCalculateData[0].DateTime);\n this.StationTime = new Intl.DateTimeFormat('th-th', { timeStyle: 'short' }).format(dateTime) + \" น.\";\n }\n }\n LoadMap() {\n var self = this;\n self.map = new Map({\r\n view: self.view,\r\n layers: [\r\n new TileLayer({\r\n source: new XYZ({\r\n url: 'https://mt1.google.com/vt/lyrs=r&x={x}&y={y}&z={z}'\r\n })\r\n })\r\n ],\r\n target: 'map'\r\n });\n }\n\n LoadMapLayer(data) {\n var self = this\r\n self.airQualityArea = data;\n if (data != null) {\n if (self.DistrictId != null && self.DistrictId != \"\") {\n data = data.filter(t => t.Id == self.DistrictId);\n }\n self.flyTo(fromLonLat([data[0].LongitudeCenter, data[0].LatitudeCenter]), data[0].Zoom);\n self.addLayerPolygon(data[0].PolygonJSON);\r\n }\n self.LoadStationOnMap();\n }\n\n LoadStationOnMap() {\n var self = this;\n if (self.vectorLayer != null) {\n self.map.removeLayer(self.vectorLayer);\r\n }\n\n if (self.StationData == null) return;\n\n var data = self.StationData;\n if (self.DistrictId != null && self.DistrictId != \"\") {\n data = self.StationData.filter(t => t.DistrictId == self.DistrictId);\n }\n else if (self.DistrictGroupId != null && self.DistrictGroupId != \"\") {\n data = self.StationData.filter(t => t.DistrictGroupId == self.DistrictGroupId);\n }\n\n var features = new Array(data.length);\r\n for (let i = 0; i < data.length; ++i) {\n var mainAqi: any;\n var firstdata: any;\n if (data[i].AirQualityPM25 != null) {\n firstdata = data[i].AirQualityPM25;\n mainAqi = (firstdata.AverageAQI);\n }\n else {\n firstdata = data[i];\n firstdata.AirQaulityIndexColorCode = \"#ABABAB\";\n mainAqi = \"N/A\";\r\n }\n var icon = '' + $.trim(mainAqi) + '';\n features[i] = new Feature({\n geometry: new Point(fromLonLat([data[i].Longitude, data[i].Latitude])),\n data: data[i],\r\n Latitude: data[i].Latitude,\n Longitude: data[i].Longitude,\n Value: data[i].AirQualityCalculateItemDatas.AqsValue,\r\n });\n\r\n features[i].setStyle(\n new Style({\n image: new Icon({\r\n opacity: 1,\r\n src: 'data:image/svg+xml;utf8,' + escape(icon),\r\n scale: 0.5\r\n }),\r\n })\n );\n\r\n }\n\r\n self.vectorLayer = new VectorLayer({\r\n source: new VectorSource({\r\n features: features,\r\n }),\n\r\n });\n\n self.map.addLayer(self.vectorLayer);\n\n var container = document.getElementById('popup');\r\n var content = document.getElementById('popup-content');\r\n var closer = document.getElementById('popup-closer');\r\n\r\n var overlay = new Overlay({\r\n element: container,\r\n autoPan: true,\r\n autoPanAnimation: {\r\n duration: 250\r\n }\r\n });\r\n this.map.addOverlay(overlay);\r\n\r\n closer.onclick = function () {\r\n overlay.setPosition(undefined);\r\n closer.blur();\r\n return false;\r\n };\r\n\n var self = this;\n\r\n this.map.on('singleclick', function (event) {\r\n if (self.map.hasFeatureAtPixel(event.pixel) === true) {\r\n var coordinate = event.coordinate;\r\n var features = self.map.getFeaturesAtPixel(event.pixel);\r\n content.innerHTML = features[0].getProperties().html;\n var stationdata = features[0].getProperties().data;\n if (stationdata != null) { self.OpenDailog(stationdata); }\n else {\r\n overlay.setPosition(undefined);\r\n closer.blur();\r\n }\r\n }\n else {\r\n overlay.setPosition(undefined);\r\n closer.blur();\r\n }\r\n });\n }\n\n flyTo(location, zoom) {\n var self = this;\r\n const duration = 2000;\r\n\r\n let parts = 2;\r\n let called = false;\r\n function callback(complete) {\r\n --parts;\r\n if (called) {\r\n return;\r\n }\r\n if (parts === 0 || !complete) {\r\n called = true;\r\n\r\n }\r\n }\r\n self.view.animate(\r\n {\r\n center: location,\r\n duration: duration,\r\n },\r\n callback\r\n );\r\n self.view.animate(\r\n {\r\n zoom: zoom - 1,\r\n duration: duration / 2,\r\n },\r\n {\r\n zoom: zoom,\r\n duration: duration / 2,\r\n },\r\n callback\r\n );\r\n }\n\n addLayerPolygon(features) {\n var self = this;\n if (self.LineAreaLayer != null) {\n\n self.map.removeLayer(self.LineAreaLayer);\r\n }\n\n self.LineAreaLayer = new VectorLayer({\r\n source: new VectorSource({\r\n url: 'data:,' + encodeURIComponent(features),\r\n format: new GeoJSON()\r\n }),\n style: new Style({\r\n stroke: new Stroke({\r\n /*color: 'rgb(23,109,248)',*/\n color: 'rgb(0,0,0)',\r\n width: 2,\r\n }),\n fill: new Fill({ color: \"#898b8e33\" }),\r\n\r\n }),\n\r\n });\n self.map.addLayer(self.LineAreaLayer);\n\r\n }\n\n public currentLocale: string;\n ShowDate(date) {\r\n if (date == null || date == \"\" || date == undefined || this.currentLocale == null) {\r\n return \"\";\r\n } else {\r\n let dateTime = new Date(date);\r\n return new Intl.DateTimeFormat(this.currentLocale, { dateStyle: \"medium\", timeStyle: \"short\" }).format(dateTime);\r\n }\r\n }\n\n ShowDatePopup(date) {\r\n if (date == null || date == \"\" || date == undefined) {\r\n return \"\";\r\n } else {\r\n let dateTime = new Date(date);\r\n return new Intl.DateTimeFormat(this.currentLocale, { dateStyle: \"full\", timeStyle: \"short\", }).format(dateTime);\r\n }\r\n }\n\n ShowHourPM25() {\n new Popover(document.querySelectorAll('[data-bs-toggle=\"popover\"]')[0]);\n }\n\n CloseDailog() {\n //var closepopover = document.querySelectorAll('[data-bs-toggle=\"popover\"]')[0] as HTMLElement;\n //closepopover.click();\n this.ShowPopup = false;\n this.StationTime = null;\n this.AirQualityCalculateData = null;\n }\n\n public FooterDatas: any;\n public CustomeContentCode = [\"home-note\"];\n FindFooterContent() {\n var self = this;\n var service = Container.instance.get(CustomContentAppService) as CustomContentAppService;\r\n service.LoadCustomContentFooter(this.CustomeContentCode)\r\n .done((result) => {\n self.FooterDatas = result;\n self.FilterFooter();\n })\n .fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\n public Note: string;\n FilterFooter() {\n var self = this;\n this.Note = self.FooterDatas.find(t => t.Code == \"home-note\");\r\n }\n\n\n\n\r\n}\r\n","import EditorVMBase from \"../../../../Lib/Fs.SmartClient.Client/EditorVMBase\";\r\nimport FsUtility from \"../../../../Lib/Fs.SmartClient.Client/FsUtility\";\r\nimport { fs } from \"config/FsConfig\";\r\nimport IssueData from \"../../Scripts/AppServiceContract/IssueData\";\r\nimport { IssueStatusEnum, IssueTypeEnum } from \"../../Resources/Enums\";\nimport { ValidationRules } from \"aurelia-validation\";\nimport FileInfoData from '../../../Core/Scripts/FileInfoData';\nimport UploadFileAppService from '../../Scripts/AppServiceContract/UploadFileAppService';\r\nimport PublicIssueAppService from \"../../Scripts/AppServiceContract/PublicIssueAppService\";\nimport { useView, autoinject, Container, computedFrom } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\nimport { I18N } from 'aurelia-i18n';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\n@autoinject()\r\n@useView(PLATFORM.moduleName(\"./IssueSearchView.html\"))\r\nexport default class ReportEditorVM extends EditorVMBase {\r\n\r\n Id: string;\r\n Title: string;\r\n Description: string;\r\n RequestorName: string;\r\n RequestorEmail: string;\r\n RequestorPhone: string;\r\n IssueDate: Date;\r\n Status: any;\r\n FileInfoList: any;\n IssueType: any;\n DescriptionDisplay: string;\r\n\n public i18n: I18N;\n public Container: Container;\n public UploadFileAppService: UploadFileAppService;\r\n public ServiceBaseUrl: string;\n public name: string;\n public Obj: any;\n SelectFile: any;\n Errormsg: string;\n AttachmentBaseUrl: string;\r\n message: any;\n Rules: any;\n validate: boolean;\n TextSubject: string;\n TextDetail: string;\n TextSelectFile: string;\n TextName: string;\n TextTelephone: string;\n\n eventAggregator: any;\n changeLocaleSubscribe: any;\n\r\n constructor(container: Container, i18n: I18N, eventAggregator: EventAggregator,) {\r\n super();\n this.Container = container;\n this.i18n = i18n;\n this.AttachmentBaseUrl = fs.Config.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/DownloadFile/id=\";\n this.ServiceBaseUrl = fs.Config.ServiceBaseUrl;\n\n var self = this;\n\n ValidationRules\r\n .ensure('Title').required()\n .withMessage(self.i18n.tr('Aqs.Issue:Error.Subject'))\n .ensure('Description').required()\n .withMessage(self.i18n.tr('Aqs.Issue:Error.Detail'))\n .ensure('RequestorName').required()\n .withMessage(self.i18n.tr('Aqs.Issue:Error.Name'))\n .ensure('RequestorEmail').required()\n .withMessage(self.i18n.tr('Aqs.Issue:Error.Email'))\r\n .on(self);\n\n this.Rules = ValidationRules\r\n .ensure('Title').required().withMessage(self.i18n.tr('Aqs.Issue:Error.Subject'))\n .ensure('Description').required().withMessage(self.i18n.tr('Aqs.Issue:Error.Detail'))\n .ensure('RequestorName').required().withMessage(self.i18n.tr('Aqs.Issue:Error.Name'))\n .ensure('RequestorEmail').required().withMessage(self.i18n.tr('Aqs.Issue:Error.Email'))\r\n .rules;\n\n self.eventAggregator = eventAggregator;\r\n self.changeLocaleSubscribe = self.eventAggregator.subscribe('ChangeLocale', function (response) {\r\n self.TextSubject = self.i18n.tr('Aqs.Issue:IssuePage.Subject');\n self.TextDetail = self.i18n.tr('Aqs.Issue:IssuePage.Detail');\n self.TextSelectFile = self.i18n.tr('Aqs.Issue:IssuePage.SelectFile');\n self.TextName = self.i18n.tr('Aqs.Issue:IssuePage.Name');\n self.TextTelephone = self.i18n.tr('Aqs.Issue:IssuePage.Telephone');\r\n });\r\n }\n\n\n\n CreateRequest(): IssueData {\r\n const criteria = new IssueData();\n criteria.Id = this.Id\n criteria.Title = this.Title;\n criteria.Description = this.Description;\n criteria.IssueDate = new Date();\n criteria.RequestorName = this.RequestorName;\n criteria.RequestorEmail = this.RequestorEmail;\n criteria.RequestorPhone = this.RequestorPhone;\n criteria.Status = IssueStatusEnum.New;\n criteria.IssueType = IssueTypeEnum.Public;\n criteria.FileInfoList = this.FileInfoList;\n return criteria;\r\n }\n\n Save(doneCallback: () => void, failCallback: (error: any) => void) {\r\n var self = this;\r\n this.validationController.validate().then((result) => {\r\n this.validate = result.valid;\r\n if (result.valid) {\r\n var request = this.CreateRequest();\r\n var service = Container.instance.get(PublicIssueAppService) as PublicIssueAppService;\r\n service.Add(request)\r\n .done((result) => {\r\n FsUtility.AlertModal(\"ส่งข้อมูลเรียบร้อย\", 2, 1);\r\n this.ResetData();\r\n self.Id = result;\r\n }).fail(FsUtility.CommonErrorHandler);\r\n }\r\n })\r\n };\n\n async OnSelectFile(selectedFiles) {\r\n var self = this;\n var listfile = [];\r\n var files = selectedFiles.target.files;\r\n for (var x = 0; x < files.length; x++) {\r\n var data = new FormData();\r\n data.append(\"file\" + x, files[x]);\r\n\r\n var File = await $.ajax({\r\n type: \"POST\",\r\n url: this.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/UpLoad\",\r\n contentType: false,\r\n processData: false,\r\n data: data,\r\n async: false,\r\n });\r\n this.Obj = { ...this.Obj, File: File.FileName, FileName: files[x].name }\r\n this.SelectFile = files[x];\n listfile.push(self.Obj)\r\n };\n this.ImportFile(listfile);\r\n }\n\n async ImportFile(obj) {\r\n var self = this;\n var list = [];\n for (var i = 0; i < obj.length; i++) {\r\n try {\r\n var service = Container.instance.get(UploadFileAppService) as UploadFileAppService;\r\n await service.UpdateAttachment(obj[i])\r\n .done((result) => {\r\n for (var i = 0; i < result.length; i++) {\n const data = new FileInfoData();\n data.Id = result[i].Id;\n data.FileName = result[i].FileName;\n data.FilePath = result[i].FilePath;\n data.Extension = result[i].Extension;\n data.ExtensionId = result[i].ExtensionId;\n data.MimeType = result[i].MimeType;\n data.Description = result[i].Description;\n data.FilePath = result[i].FilePath;\n data.RelationId = result[i].RelationId;\n data.RelationTypeValue = result[i].RelationTypeValue;\n list.push(data);\r\n }\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n } catch (err) {\r\n FsUtility.AlertErrorMessage(err);\r\n }\r\n }\n self.FileInfoList = list;\r\n }\n async RemoveFile(fileInfo) {\r\n this.FileInfoList = this.FileInfoList.filter((obj) => obj !== fileInfo);\r\n }\n async ValidateBeforeSave() {\r\n var self = this;\r\n this.validationController.removeObject(this);\r\n this.Validate();\r\n this.validationController.addObject(this, this.Rules);\r\n\r\n let res = await this.validationController.validate()\r\n .then(result => {\r\n if (!result.valid) {\r\n var erorrMsg = self.SetValidate(result);\r\n if (erorrMsg != \"\")\r\n FsUtility.AlertModal(erorrMsg, 1, 2, 3);\r\n }\r\n return result.valid;\r\n });\r\n\r\n return Promise.resolve(res);\r\n }\r\n\r\n SetValidate(error) {\r\n var errors = \"\";\r\n var errorsData = error.results.filter(t => t.valid == false);\r\n\r\n for (var i = 0; i < errorsData.length; i++) {\r\n if (errorsData[i].rule.property.displayName == null || errorsData[i].rule.property.displayName == \"\")\r\n errors += errorsData[i].message + \"
\";\r\n }\r\n return errors;\r\n }\n\n ResetData() {\n this.Id = null;\r\n this.Title = null;\r\n this.Description = null;\r\n this.RequestorName = null;\r\n this.RequestorEmail = null;\r\n this.RequestorPhone = null;\r\n this.IssueDate = null;\r\n this.Status = null;\r\n this.FileInfoList = null;\n this.IssueType = null;\n this.DescriptionDisplay = null;\n this.SelectFile = null;\n this.Obj = null;\n }\n\n @computedFrom('validationController.errors.length', 'Title')\r\n get TitleErrors() {\r\n return this.getValidateErrors('Title');\r\n }\r\n @computedFrom('validationController.errors.length', 'Description')\r\n get DescriptionErrors() {\r\n return this.getValidateErrors('Description');\r\n }\n @computedFrom('validationController.errors.length', 'RequestorName')\r\n get RequestorNameErrors() {\r\n return this.getValidateErrors('RequestorName');\r\n }\n @computedFrom('validationController.errors.length', 'RequestorEmail')\r\n get RequestorEmailErrors() {\r\n return this.getValidateErrors('RequestorEmail');\r\n }\r\n}\r\n","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';\nimport Map from 'ol/Map';\nimport Feature from 'ol/Feature';\r\nimport View from 'ol/View';\nimport { fromLonLat, transformExtent } from 'ol/proj';\nimport { OSM, XYZ, TileJSON, Vector as VectorSource } from 'ol/source';\r\nimport { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer';\r\nimport Point from 'ol/geom/Point';\r\nimport { Overlay } from 'ol';\r\nimport TabViewModel from '../../../../Lib/Fs.SmartClient.Client/TabViewModel';\nimport GeoJSON from 'ol/format/GeoJSON';\r\nimport PublicAirQualityMapAppService from '../../Scripts/AppServiceContract/PublicAirQualityMapAppService';\nimport { Fill, Icon, Style, Text, Stroke, Circle } from 'ol/style';\r\nimport { toContext } from 'ol/render';\r\nimport { fs } from '../../../../Config/FsConfig';\r\nimport AirQualityCalculateItemData from '../../Scripts/AppServiceContract/AirQualityCalculateItemData';\r\nimport StationAirQualityData from '../../Scripts/AppServiceContract/StationAirQualityData';\r\ndeclare var Windy: any;\r\n\r\n@autoinject()\r\n@useView(PLATFORM.moduleName(\"./MapMonitoringSearchView.html\"))\r\nexport default class MapMonitoringSearchVM extends TabViewModel {\r\n public dialogService: DialogService;\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n changeLocaleSubscribe: any;\n ListDistrict: any;\n ListDistrictFilter: any;\n ListDistrictGroup: any;\n Today: string;\n AirQualityIndexList: any;\n\n /*Maps*/\n map: any;\n view = new View({\r\n center: fromLonLat([100.50231745637795, 13.75512316215497]),\r\n zoom: 10\r\n });\n public ColorMaps: any;\n chart: any;\n vectorLayer: any;\n LineAreaLayer: any;\n vectorSource: any;\r\n\n ShowPopup: boolean;\n DataStation: any;\r\n AQIData: any;\n StationTime: string;\n StationDate: string;\r\n AirQualityMax: number;\r\n AirQualityList: any;\n AirQualityCalculateData: any;\n StationData: any;\n tooltip: any;\n overlay: any;\n\n public districtGroupId: string;\n airQualityArea: any;\r\n AttachmentBaseUrl: string;\r\n get DistrictGroupId(): string {\r\n return this.districtGroupId\r\n }\r\n set DistrictGroupId(data: string) {\r\n var self = this\r\n self.districtGroupId = data;\n\n if (data != null && data != \"\") {\n self.ListDistrictFilter = self.ListDistrict.filter(t => t.DistrictGroupId == data);\n this.LoadMapLayer(self.AirQualityAreaDatas);\r\n } else {\n self.ListDistrictFilter = self.ListDistrict;\n this.LoadMapLayer(self.AirQualityAreaDatas);\n }\r\n }\n\n public districtId: string;\n get DistrictId(): string {\r\n return this.districtId\r\n }\r\n set DistrictId(data: string) {\r\n var self = this\r\n\n self.districtId = data;\n this.LoadMapLayer(self.AirQualityAreaDatas);\n\r\n }\n\n public AirQualityAreaDatas: any;\n\n attached() {\n this.LoadMap();\n }\n\r\n constructor(i18n: I18N, eventAggregator: EventAggregator) {\r\n super();\n var self = this;\n self.i18n = i18n;\n self.eventAggregator = eventAggregator;\n let dateTime = new Date();\n\n self.AttachmentBaseUrl = fs.Config.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/DownloadFile/id=\";\n self.PrepareDropdown().then(() => {\r\n self.SearchArea();\r\n });\n //var currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n\n //th-th\n //en-US\r\n self.changeLocaleSubscribe = self.eventAggregator.subscribe('ChangeLocale', (response) => {\n var currentLocale = self.i18n.i18next.language == null ? \"th-th\" : (self.i18n.i18next.language == \"th\" ? \"th-th\" : \"en-US\");\n\n self.Today = new Intl.DateTimeFormat(currentLocale, { dateStyle: 'full' }).format(dateTime);\r\n self.PrepareDropdown().then(() => {\r\n //this.SearchArea();\r\n });\r\n });\r\n }\n\r\n SearchArea() {\n var service = this.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.Find2()\r\n .done((result) => {\n this.StationData = result;\n this.FindAirQualityArea();\r\n }).fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\n PrepareDropdown() {\n var defered = $.Deferred();\r\n var ajax = this.DistrictDropdown();\r\n var ajax2 = this.DistrictGroupDropdown();\n var ajax3 = this.LoadAirQualityIndexList();\r\n\r\n $.when(ajax, ajax2, ajax3).done(function (r1) {\r\n defered.resolve(null);\r\n });\r\n\r\n return defered.promise();\n }\n\n DistrictDropdown() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.DistrictDropdown()\r\n .done((result) => {\r\n self.ListDistrict = result;\r\n self.ListDistrictFilter = self.ListDistrict;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n DistrictGroupDropdown() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.DistrictGroupDropdown()\r\n .done((result) => {\r\n self.ListDistrictGroup = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n LoadAirQualityIndexList() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.AirQualityIndexList()\r\n .done((result) => {\n this.AirQualityIndexList = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n FindAirQualityArea() {\n var self = this;\n var service = self.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.FindAirQualityArea()\r\n .done((result) => {\r\n self.AirQualityAreaDatas = result;\n this.LoadMapLayer(result);\r\n }).fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\n FirstData: any;\n FirstData2: any;\n Test: any;\n Icon: any;\n OpenDailog(stationdata: StationAirQualityData) {\n var self = this;\n var data = [];\n this.ShowPopup = true;\n this.FirstData = stationdata;\n self.FirstData2 = stationdata.AirQualitySelectAvgData;\n if (this.FirstData2) {\n this.Icon = \"data:image/png;base64, \" + this.FirstData2.AqsIcon;\r\n }\n \n this.Test = stationdata.AirQualityCalculateItemDatas;\n this.SetData(stationdata.AirQualityCalculateItemDatas);\n }\n\n SetData(AirQualityCalculateData) {\n\n if (AirQualityCalculateData != null) {\n if (AirQualityCalculateData.length != 0) {\n\r\n \n let dateTime = new Date(AirQualityCalculateData[0].DateTime);\n this.StationTime = new Intl.DateTimeFormat('th-th', { timeStyle: 'short' }).format(dateTime) + \" น.\";\n this.StationDate = new Intl.DateTimeFormat('th-th', { dateStyle: 'full' }).format(dateTime);\n }\n }\n }\n\n CloseDailog() {\n this.ShowPopup = false;\n this.StationTime = null;\n this.StationDate = null;\n this.AirQualityCalculateData = null;\n }\n\n LoadMap() {\n var self = this;\n self.map = new Map({\r\n view: self.view,\r\n layers: [\r\n new TileLayer({\r\n source: new XYZ({\r\n url: 'https://mt1.google.com/vt/lyrs=r&x={x}&y={y}&z={z}'\r\n })\r\n })\r\n ],\r\n target: 'map'\r\n });\n self.tooltip = document.getElementById('tooltip');\n self.overlay = new Overlay({\r\n element: self.tooltip,\r\n offset: [10, 0],\r\n autoPan: {\r\n animation: {\r\n duration: 250,\r\n },\r\n },\r\n });\r\n self.map.addOverlay(self.overlay);\n self.map.on('click', function (evt) {\n var feature = self.map.forEachFeatureAtPixel(evt.pixel, function (feature) {\r\n return feature;\r\n });\n self.tooltip.style.display = feature ? '' : 'none';\n\n\n if (feature) {\n if (feature.values_.Latitude != null) {\n self.overlay.setPosition(evt.coordinate);\n\r\n\n var stationdata = feature.getProperties().data;\n self.OpenDailog(stationdata);\r\n }\n\n }\n\r\n\r\n\r\n });\n\n }\n\n LoadMapLayer(data) {\n var self = this\r\n self.airQualityArea = data;\n if (data != null) {\n if (self.DistrictId != null && self.DistrictId != \"\") {\n data = data.filter(t => t.Id == self.DistrictId);\n }\n self.flyTo(fromLonLat([data[0].LongitudeCenter, data[0].LatitudeCenter]), data[0].Zoom);\n self.addLayerPolygon(data[0].PolygonJSON);\r\n }\n\n self.LoadStationOnMap();\n }\n\n LoadStationOnMap() {\n var self = this;\n\n if (self.vectorLayer != null) {\n self.map.removeLayer(self.vectorLayer);\r\n }\n\n if (self.StationData == null) return;\n var data = self.StationData;\n\n if (self.DistrictId != null && self.DistrictId != \"\") {\n data = self.StationData.filter(t => t.DistrictId == self.DistrictId);\n }\n\n var features = new Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n\n //var FindMax = Math.max(...data[i].AirQualityCalculateItemDatas.map(o => o.AqsValue));\n //var firstdata = data[i].AirQualityCalculateItemDatas.find(o => o.AqsValue == FindMax);\n //var mainAqi = (firstdata.AqsValue).toString();\n if (data[i].AirQualitySelectAvgData != null) {\n\n var firstdata = data[i].AirQualitySelectAvgData;\n var mainAqi = (firstdata.AverageAQI).toString();\n } else {\n var firstdata = null;\n var mainAqi = null;\r\n }\n\n var icon = ' ' + $.trim(mainAqi) + ' ';\n\n //var icon = '' + $.trim(mainAqi) +'';\n\r\n features[i] = new Feature({\n geometry: new Point(fromLonLat([data[i].Longitude, data[i].Latitude])),\n data: data[i],\r\n Latitude: data[i].Latitude,\n Longitude: data[i].Longitude,\n Value: data[i].Value,\r\n });\n\r\n features[i].setStyle(\n new Style({\n image: new Icon({\r\n opacity: 1,\r\n src: 'data:image/svg+xml;utf8,' + escape(icon),\r\n scale: 0.5\r\n }),\r\n //text: new Text({\n // text: $.trim(mainAqi),\r\n // font: 'bold 16px Calibri,sans-serif',\r\n // fill: new Fill({\r\n // color: 'black',\r\n // }),\n // offsetY: -5,\r\n //}),\r\n })\n );\n\r\n }\n\r\n self.vectorLayer = new VectorLayer({\r\n source: new VectorSource({\r\n features: features,\r\n }),\n\r\n });\n\n self.map.addLayer(self.vectorLayer);\n\n\n }\n\n flyTo(location, zoom) {\n var self = this;\r\n const duration = 2000;\r\n\r\n let parts = 2;\r\n let called = false;\r\n function callback(complete) {\r\n --parts;\r\n if (called) {\r\n return;\r\n }\r\n if (parts === 0 || !complete) {\r\n called = true;\r\n\r\n }\r\n }\r\n self.view.animate(\r\n {\r\n center: location,\r\n duration: duration,\r\n },\r\n callback\r\n );\r\n self.view.animate(\r\n {\r\n zoom: zoom - 1,\r\n duration: duration / 2,\r\n },\r\n {\r\n zoom: zoom,\r\n duration: duration / 2,\r\n },\r\n callback\r\n );\r\n }\n\n addLayerPolygon(features) {\n var self = this;\n if (self.LineAreaLayer != null) {\n\n self.map.removeLayer(self.LineAreaLayer);\r\n }\n\n self.LineAreaLayer = new VectorLayer({\r\n source: new VectorSource({\r\n url: 'data:,' + encodeURIComponent(features),\r\n format: new GeoJSON()\r\n }),\n style: new Style({\r\n stroke: new Stroke({\r\n /*color: 'rgb(23,109,248)',*/\n color: 'rgb(0,0,0)',\r\n width: 2,\r\n }),\r\n\r\n }),\n\r\n });\n self.map.addLayer(self.LineAreaLayer);\n\r\n }\n\r\n}\r\n\r\n","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';\nimport Map from 'ol/Map';\nimport Feature from 'ol/Feature';\r\nimport View from 'ol/View';\nimport { fromLonLat, transformExtent } from 'ol/proj';\nimport { OSM, XYZ, TileJSON, Vector as VectorSource } from 'ol/source';\r\nimport { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer';\r\nimport Point from 'ol/geom/Point';\r\nimport { Overlay } from 'ol';\r\nimport TabViewModel from '../../../../Lib/Fs.SmartClient.Client/TabViewModel';\nimport GeoJSON from 'ol/format/GeoJSON';\r\nimport PublicAirQualityMapAppService from '../../Scripts/AppServiceContract/PublicAirQualityMapAppService';\nimport { Fill, Icon, Style, Text, Stroke, Circle } from 'ol/style';\r\nimport { toContext } from 'ol/render';\r\nimport { fs } from '../../../../Config/FsConfig';\r\nimport AirQualityCalculateItemData from '../../Scripts/AppServiceContract/AirQualityCalculateItemData';\r\nimport StationAirQualityData from '../../Scripts/AppServiceContract/StationAirQualityData';\r\nimport PublicAppService from '../../Scripts/AppServiceContract/PublicAppService';\r\nimport DashboardAppService from '../../Scripts/AppServiceContract/DashboardAppService';\r\nimport StationParameter from '../../Scripts/AppServiceContract/StationParameter';\r\nimport DistrictAppService from '../../Scripts/AppServiceContract/DistrictAppService';\r\nimport DistrictData from '../../Scripts/AppServiceContract/DistrictData';\r\nimport DistrictParameter from '../../Scripts/AppServiceContract/DistrictParameter';\r\nimport Popover from 'bootstrap/js/dist/popover';\r\ndeclare var Windy: any;\r\n\r\n@autoinject()\r\n@useView(PLATFORM.moduleName(\"./MapMonitoringSearchView.html\"))\r\nexport default class MapMonitoringSearchVM extends TabViewModel {\r\n public dialogService: DialogService;\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n public currentLocale: string;\n public AirQualityIndexItemList: any;\n public thisAqsIndexpm25: any;\n public changeLocaleSubscribe: any;\n public ListDistrict: any;\n public ListDistrictFilter: any;\n public ListDistrictGroup: any;\n public Today: string;\n public AirQualityIndexList: any;\n public valueAirQualityIndexHealthRecommend: number = 0;\n public ShowStationPic: boolean = false;\n public Placeholder: string;\n\n /*Maps*/\n map: any;\n view = new View({\r\n center: fromLonLat([100.50231745637795, 13.75512316215497]),\r\n zoom: 10\r\n });\n public ColorMaps: any;\n chart: any;\n vectorLayer: any;\n LineAreaLayer: any;\n vectorSource: any;\r\n\n ShowPopup: boolean;\n DataStation: any;\r\n AQIData: any;\n StationTime: string;\r\n AirQualityMax: number;\r\n AirQualityList: any;\n AirQualityCalculateData: any;\n StationData: any;\n\n public districtGroupId: string;\n airQualityArea: any;\r\n AttachmentBaseUrl: string;\r\n get DistrictGroupId(): string {\r\n return this.districtGroupId\r\n }\r\n set DistrictGroupId(data: string) {\r\n var self = this\r\n self.districtGroupId = data;\n\n if (data != null && data != \"\") {\n self.ListDistrictFilter = self.ListDistrict.filter(t => t.DistrictGroupId == data);\n this.LoadMapLayer(self.AirQualityAreaDatas);\r\n } else {\n self.ListDistrictFilter = self.ListDistrict;\n this.LoadMapLayer(self.AirQualityAreaDatas);\n }\r\n }\n\n public districtId: string;\n get DistrictId(): string {\r\n return this.districtId\r\n }\r\n set DistrictId(data: string) {\r\n var self = this\n self.districtId = data;\n this.LoadMapLayer(self.AirQualityAreaDatas);\r\n }\n\n public AirQualityAreaDatas: any;\n attached() {\n this.LoadMap();\n new Popover(document.querySelectorAll('[data-bs-toggle=\"popover\"]')[0]);\n }\n\r\n constructor(i18n: I18N, eventAggregator: EventAggregator) {\r\n super();\n var self = this;\n self.i18n = i18n;\n self.eventAggregator = eventAggregator;\n let dateTime = new Date();\n self.currentLocale = sessionStorage.getItem(\"CurrentSystemLocale\");\n if (this.currentLocale == \"th\") {\n self.Placeholder = \"เลือกสถานี\";\n }\n else {\n self.Placeholder = \"Select station\";\r\n }\n self.AttachmentBaseUrl = fs.Config.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/DownloadFile/id=\";\n self.PrepareDropdown().then(() => {\r\n self.SearchArea();\r\n });\n self.LoadAirQualityIndexList();\n self.LoadAirQualityIndexItemList();\n\r\n self.changeLocaleSubscribe = self.eventAggregator.subscribe('ChangeLocale', (response) => {\n var currentLocale = self.i18n.i18next.language == null ? \"th-th\" : (self.i18n.i18next.language == \"th\" ? \"th-th\" : \"en-US\");\n\n self.Today = new Intl.DateTimeFormat(currentLocale, { dateStyle: 'full' }).format(dateTime);\r\n self.PrepareDropdown().then(() => {\r\n //this.SearchArea();\r\n });\r\n });\r\n }\n\r\n SearchArea() {\n var service = this.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.Find2()\r\n .done((result) => {\n this.StationData = result;\n this.FindAirQualityArea();\r\n }).fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\n PrepareDropdown() {\n var defered = $.Deferred();\r\n var ajax = this.DistrictDropdown();\r\n var ajax2 = this.DistrictGroupDropdown();\n var ajax3 = this.LoadAirQualityIndexList();\r\n\r\n $.when(ajax, ajax2, ajax3).done(function (r1) {\r\n defered.resolve(null);\r\n });\r\n\r\n return defered.promise();\n }\n\n DistrictDropdown() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.DistrictDropdown()\r\n .done((result) => {\r\n self.ListDistrict = result;\r\n self.ListDistrictFilter = self.ListDistrict;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n DistrictGroupDropdown() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.DistrictGroupDropdown()\r\n .done((result) => {\r\n self.ListDistrictGroup = result;\r\n }).fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n\n async LoadAirQualityIndexList() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.AirQualityIndexList()\r\n .done((result) => {\n this.AirQualityIndexList = result;\r\n })\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n async LoadAirQualityIndexItemList() {\r\n var self = this;\r\n var service = Container.instance.get(PublicAppService) as PublicAppService;\r\n service.AirQualityIndexItemPMforMobile()\r\n .done((result) => {\r\n self.AirQualityIndexItemList = result;\n\r\n })\r\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n\n\n FindAirQualityArea() {\n var self = this;\n var service = self.container.get(PublicAirQualityMapAppService) as PublicAirQualityMapAppService;\r\n service.FindAirQualityArea()\r\n .done((result) => {\r\n self.AirQualityAreaDatas = result;\n this.LoadMapLayer(result);\r\n }).fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\n public stationId: string;\n set StationId(data: string) {\r\n var self = this;\r\n self.stationId = data;\r\n var station = self.StationData.find((t) => t.StationId == data);\r\n self.OpenDailog(station);\n //debugger\r\n }\n\n FirstData: any;\n FirstData2: any;\n Test: any;\n Icon: any;\n OpenDailog(stationdata: StationAirQualityData) {\n var self = this;\n var data = [];\n self.ShowPopup = true;\n this.FirstData = stationdata;\n self.FirstData2 = stationdata.AirQualityPM25;\n\n var AirQualityIndexItem = self.AirQualityIndexItemList?.find((t) => t.Name == \"PM2.5\"\n && Number(self.FirstData2.AverageAQI) >= t.Min\n && (Number(self.FirstData2.AverageAQI) <= t.Max || t.Max == null));\n\n var AirQualityIndexpm25 = self.AirQualityIndexList?.find((t) => t.Id == AirQualityIndexItem?.AirQualityIndexId);\n self.thisAqsIndexpm25 = AirQualityIndexpm25;\n\n this.Icon = \"data:image/png;base64, \" + this.FirstData2.AqsIcon;\n this.Test = stationdata.AirQualityCalculateItemDatas.filter(t => t.AqsTypeCode != \"PM2.5\");\n this.SetData(stationdata.AirQualityCalculateItemDatas);\n }\n\n SetData(AirQualityCalculateData) {\n if (AirQualityCalculateData != null) {\n let dateTime = new Date(AirQualityCalculateData[0].DateTime);\n this.StationTime = new Intl.DateTimeFormat('th-th', { timeStyle: 'short' }).format(dateTime) + \" น.\";\n }\n }\n\n\n\n LoadMap() {\n var self = this;\n self.map = new Map({\r\n view: self.view,\r\n layers: [\r\n new TileLayer({\r\n source: new XYZ({\r\n url: 'https://mt1.google.com/vt/lyrs=r&x={x}&y={y}&z={z}'\r\n })\r\n })\r\n ],\r\n target: 'map'\r\n });\n }\n\n LoadMapLayer(data) {\n var self = this\r\n self.airQualityArea = data;\n if (data != null) {\n if (self.DistrictId != null && self.DistrictId != \"\") {\n data = data.filter(t => t.Id == self.DistrictId);\n }\n\n self.flyTo(fromLonLat([data[0].LongitudeCenter, data[0].LatitudeCenter]), data[0].Zoom);\n self.addLayerPolygon(data[0].PolygonJSON);\r\n }\n\n self.LoadStationOnMap();\n }\n\n LoadStationOnMap() {\n var self = this;\n\n if (self.vectorLayer != null) {\n self.map.removeLayer(self.vectorLayer);\r\n }\n\n if (self.StationData == null) return;\n var data = self.StationData;\n\n if (self.DistrictId != null && self.DistrictId != \"\") {\n data = self.StationData.filter(t => t.DistrictId == self.DistrictId);\n }\n else if (self.DistrictGroupId != null && self.DistrictGroupId != \"\") {\n data = self.StationData.filter(t => t.DistrictGroupId == self.DistrictGroupId);\n }\n var features = new Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n\n if (data[i].AirQualityPM25 != null) {\n var firstdata = data[i].AirQualityPM25;\n var mainAqi = (firstdata.AverageAQI).toString();\n } else {\n var firstdata = null;\n var mainAqi = null;\r\n }\n var icon = '' + $.trim(mainAqi) + '';\n\r\n features[i] = new Feature({\n geometry: new Point(fromLonLat([data[i].Longitude, data[i].Latitude])),\n data: data[i],\r\n Latitude: data[i].Latitude,\n Longitude: data[i].Longitude,\n Value: data[i].Value,\r\n });\n\r\n features[i].setStyle(\n new Style({\n image: new Icon({\r\n opacity: 1,\r\n src: 'data:image/svg+xml;utf8,' + escape(icon),\r\n scale: 0.5\r\n }),\r\n //text: new Text({\n // text: $.trim(mainAqi),\r\n // font: 'bold 16px Calibri,sans-serif',\r\n // fill: new Fill({\r\n // color: 'black',\r\n // }),\n // offsetY: -5,\r\n //}),\r\n })\n );\n\r\n }\n\r\n self.vectorLayer = new VectorLayer({\r\n source: new VectorSource({\r\n features: features,\r\n }),\n\r\n });\n\n self.map.addLayer(self.vectorLayer);\n\n var container = document.getElementById('popup');\r\n var content = document.getElementById('popup-content');\r\n var closer = document.getElementById('popup-closer');\r\n\r\n var overlay = new Overlay({\r\n element: container,\r\n autoPan: true,\r\n autoPanAnimation: {\r\n duration: 250\r\n }\r\n });\r\n this.map.addOverlay(overlay);\r\n\r\n closer.onclick = function () {\r\n overlay.setPosition(undefined);\r\n closer.blur();\r\n return false;\r\n };\r\n\n var self = this;\n\r\n this.map.on('singleclick', function (event) {\r\n if (self.map.hasFeatureAtPixel(event.pixel) === true) {\r\n var coordinate = event.coordinate;\r\n var features = self.map.getFeaturesAtPixel(event.pixel);\r\n content.innerHTML = features[0].getProperties().html;\n var stationdata = features[0].getProperties().data;\n self.OpenDailog(stationdata);\r\n } else {\r\n overlay.setPosition(undefined);\r\n closer.blur();\r\n }\r\n });\n }\n\n flyTo(location, zoom) {\n var self = this;\r\n const duration = 2000;\r\n\r\n let parts = 2;\r\n let called = false;\r\n function callback(complete) {\r\n --parts;\r\n if (called) {\r\n return;\r\n }\r\n if (parts === 0 || !complete) {\r\n called = true;\r\n\r\n }\r\n }\r\n self.view.animate(\r\n {\r\n center: location,\r\n duration: duration,\r\n },\r\n callback\r\n );\r\n self.view.animate(\r\n {\r\n zoom: zoom - 1,\r\n duration: duration / 2,\r\n },\r\n {\r\n zoom: zoom,\r\n duration: duration / 2,\r\n },\r\n callback\r\n );\r\n }\n\n addLayerPolygon(features) {\n var self = this;\n if (self.LineAreaLayer != null) {\n\n self.map.removeLayer(self.LineAreaLayer);\r\n }\n\n self.LineAreaLayer = new VectorLayer({\r\n source: new VectorSource({\r\n url: 'data:,' + encodeURIComponent(features),\r\n format: new GeoJSON()\r\n }),\n style: new Style({\r\n stroke: new Stroke({\r\n /*color: 'rgb(23,109,248)',*/\n color: 'rgb(0,0,0)',\r\n width: 2,\r\n }),\r\n fill: new Fill({ color: \"#898b8e33\" }),\r\n }),\n\r\n });\n self.map.addLayer(self.LineAreaLayer);\n\r\n }\n\n ShowDate(date) {\r\n if (date == null || date == \"\" || date == undefined) {\r\n return \"\";\r\n } else {\r\n let dateTime = new Date(date);\r\n return new Intl.DateTimeFormat(this.currentLocale, { dateStyle: \"full\", timeStyle: \"short\", }).format(dateTime);\r\n }\r\n }\n\n \n ShowHourPM25() {\n new Popover(document.querySelectorAll('[data-bs-toggle=\"popover\"]')[0]);\n\n }\n\n CloseDailog() {\n var closepopover = document.querySelectorAll('[data-bs-toggle=\"popover\"]')[0] as HTMLElement;\n closepopover.click();\n this.ShowPopup = false;\n this.StationTime = null;\n this.AirQualityCalculateData = null;\n }\n\n async LoadStationDropdown(params, success, failure) {\r\n var self = this;\r\n var param = new StationParameter();\r\n param.StationName = params.data.term ? params.data.term : \"\";\r\n param.DistrictGroupId = this.DistrictGroupId;\r\n param.DistrictId = this.DistrictId;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.StationDropdown(param)\r\n .done((result) => {\r\n success(result);\r\n })\r\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\n async LoadDistrictDropdown(params, success, failure) {\r\n var self = this;\r\n var param = new DistrictParameter();\r\n param.DistrictName = params.data.term ? params.data.term : \"\";\r\n param.DistrictGroupId = this.DistrictGroupId;\r\n param.DistrictId = this.DistrictId;\r\n var service = Container.instance.get(DashboardAppService) as DashboardAppService;\r\n service.DistrictDropdown2(param)\r\n .done((result) => {\r\n success(result);\r\n })\r\n .fail((error) => {\r\n FsUtility.AlertErrorMessage(error);\r\n });\r\n }\n\r\n}\r\n\r\n","import { I18N } from \"aurelia-i18n\";\nimport FsUtility from \"../../../../Lib/Fs.SmartClient.Client/FsUtility\";\nimport { fs } from \"config/FsConfig\";\r\nimport { parse } from \"node:url\";\r\nimport EditorVMBase from \"../../../../Lib/Fs.SmartClient.Client/EditorVMBase\";\r\nimport NewsData from \"../../Scripts/AppServiceContract/NewsData\";\nimport { useView, autoinject, Container, computedFrom } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\n\n@autoinject()\r\nexport default class NewsEditorVM extends EditorVMBase {\r\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n changeLocaleSubscribe: any;\r\n Id: string;\r\n Description: string;\n EffectiveDate: Date;\r\n FileInfoList: any;\r\n Title: string;\r\n FileInfoId: string;\r\n FileName: string;\r\n ShowDate: string;\r\n DescriptionDisplay: string;\r\n DatetimeDisplay: string;\n DaysAgo: string;\n MonthsAgo: string;\n WeeksAgo: string;\n Yesterday: string;\n TypeName: string;\n NewsTypeId: string;\n\r\n constructor() {\r\n super();\n this.i18n = Container.instance.get(I18N);\r\n }\n\r\n LoadOriginalSource(originalSource: NewsData) {\r\n this.Id = originalSource.Id;\r\n this.NewsTypeId = originalSource.NewsTypeId;\r\n this.Title = originalSource.Title;\r\n this.Description = originalSource.Description;\r\n let dateTime = new Date(originalSource.EffectiveDate);\r\n this.EffectiveDate = new Date(\r\n dateTime.getFullYear(),\r\n dateTime.getMonth(),\r\n dateTime.getDate()\r\n );\r\n this.ShowDate =\r\n new Intl.DateTimeFormat(this.i18n.tr(\"Aqs.Common:LangCode\"), {\r\n dateStyle: \"full\",\r\n timeStyle: \"short\",\r\n }).format(dateTime) + this.i18n.tr(\"Aqs.Common:TimeUnit\");\r\n this.FileInfoList = originalSource.FileInfoList;\r\n this.DescriptionDisplay = originalSource.Description.slice(0, 250) + \" ...\";\r\n this.TypeName = originalSource.TypeName;\r\n this.DatetimeDisplay = this.CheckDateDiff();\r\n }\r\n\r\n SaveOriginalSource(originalSource: NewsData) {\r\n originalSource.Id = this.Id;\r\n originalSource.Title = this.Title;\r\n originalSource.Description = this.Description;\r\n originalSource.EffectiveDate = this.EffectiveDate;\n originalSource.FileInfoId = this.FileInfoId;\n originalSource.FileName = this.FileName;\n originalSource.FileInfoList = this.FileInfoList;\n originalSource.TypeName = this.TypeName;\r\n }\n\n CheckDateDiff() {\n this.DaysAgo = this.i18n.tr('Aqs.News:NewsPage.DaysAgo');\n this.MonthsAgo = this.i18n.tr('Aqs.News:NewsPage.MonthsAgo');\n this.WeeksAgo = this.i18n.tr('Aqs.News:NewsPage.WeeksAgo');\n this.Yesterday = this.i18n.tr('Aqs.News:NewsPage.Yesterday');\n\n var date = new Date();\n var eventStartTime = new Date();\r\n var eventEndTime = this.EffectiveDate;\r\n let timeInMilisec: number = eventStartTime.getTime() - eventEndTime.getTime();\r\n let daysBetweenDates: number = Math.ceil(timeInMilisec / (1000 * 60 * 60 * 24));\n if (daysBetweenDates < 2) {\n this.DatetimeDisplay = this.Yesterday;\n } else {\n if (daysBetweenDates < 7) {\n this.DatetimeDisplay = daysBetweenDates + \" \" + this.DaysAgo;\n } else {\n if (daysBetweenDates > 30) {\n this.DatetimeDisplay = Math.floor(daysBetweenDates / 30) + \" \" + this.MonthsAgo;\n } else {\n this.DatetimeDisplay = Math.floor(daysBetweenDates / 7) + \" \" + this.WeeksAgo;\n }\n }\n }\n return this.DatetimeDisplay;\n }\n\n}\r\n","import { DialogService } from 'aurelia-dialog';\r\nimport { inject } from 'aurelia-framework';\r\nimport SortingCriteria from \"../../../../Lib/Fs.Core.Data/SortingCriteria\";\r\nimport PagingCriteria from \"../../../../Lib/Fs.Core.Data/PagingCriteria\";\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 NewsEditorVM from './NewsEditorVM';\r\nimport NewsData from '../../Scripts/AppServiceContract/NewsData';\r\nimport PublicNewsAppService from '../../Scripts/AppServiceContract/PublicNewsAppService';\r\nimport SearchVMBase2 from '../../../../Lib/Fs.SmartClient.Client/SearchVMBase2';\r\nimport PublicNewsCriteria from '../../Scripts/AppServiceContract/PublicNewsCriteria';\r\nimport PublicNewsSearchParameter from '../../Scripts/AppServiceContract/PublicNewsSearchParameter';\r\nimport { fs } from '../../../../Config/FsConfig';\r\nimport { Router } from 'aurelia-router';\nimport GeneralPopupEditorDialogVM from '../../../../Lib/Fs.Core.Aurelia/Components/GeneralPopupEditDialogVM';\r\nimport PickDateDialogVM from '../../Components/PickDateDialogVM';\r\nimport SearchVMBase from '../../../../Lib/Fs.SmartClient.Client/SearchVMBase';\r\nimport NewsTypeData from '../../Scripts/AppServiceContract/NewsTypeData';\r\n\r\n@inject(DialogService)\r\n@useView(PLATFORM.moduleName(\"./NewsSearchView.html\"))\r\nexport default class NewsSearchVM extends SearchVMBase2{\r\n public dialogService: DialogService;\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n public AllType: boolean = false;\n public Showbutton: boolean = true;\n public NewsType: NewsTypeData[];\n\n changeLocaleSubscribe: any;\n\r\n EffectiveDateFrom: Date;\n EffectiveDateTo: Date;\n\n router: Router\n AttachmentBaseUrl: string;\n TextTitle: string;\n TextOK: string;\n\r\n constructor(dialogService) {\r\n super(NewsEditorVM);\n this.eventAggregator = Container.instance.get(EventAggregator);\n this.i18n = Container.instance.get(I18N);\n this.dialogService = dialogService;\n this.router = Container.instance.get(Router);\n this.FindNewsType();\r\n this.Search();\n this.PageSize = 9;\n this.AttachmentBaseUrl = fs.Config.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/DownloadFile/id=\";\n /*this.changeLocaleSubscribe = this.eventAggregator.subscribe('ChangeLocale', (response) => {\r\n this.Search();\n this.Translate();\r\n });\n var self = this;\n setTimeout(function () {\r\n self.Translate();\r\n }, 3000);*/\r\n }\n\n Translate() {\n this.TextTitle = this.i18n.tr('Aqs.News:NewsPage.ChooseDateRange');\n this.TextOK = this.i18n.tr('Aqs.News:NewsPage.Search');\r\n }\n\r\n CreateCriteria(): PublicNewsCriteria {\r\n var self = this;\r\n const criteria = new PublicNewsCriteria();\r\n criteria.EffectiveDateForm = FsUtility.ToJsonDate(this.EffectiveDateFrom);\n criteria.EffectiveDateTo = FsUtility.ToJsonDate(this.EffectiveDateTo);\n criteria.NewsTypeId = this.NewsTypeId;\r\n return criteria;\r\n }\r\n\r\n SearchItems(searchCallback: (result: NewsData[]) => void, searchCriteria: PublicNewsCriteria, sortingCriteria: SortingCriteria, pagingCriteria: PagingCriteria) {\r\n var self = this;\r\n const searchParameter = new PublicNewsSearchParameter();\r\n searchParameter.Criteria = searchCriteria;\r\n searchParameter.PagingCriteria = pagingCriteria;\r\n searchParameter.SortingCriteria = sortingCriteria;\r\n var service = this.container.get(PublicNewsAppService) as PublicNewsAppService;\r\n service.Find(searchParameter)\r\n .done((result) => {\r\n if (self.NewsTypeId == null) {\r\n self.NewsType.forEach(t => {\r\n var SlideShow = result.find(element => element.NewsTypeId == t.Id);\r\n var newEditorVM = new NewsEditorVM();\r\n newEditorVM.LoadOriginalSource(SlideShow);\r\n this.listSlideShow.unshift(newEditorVM);\r\n result.splice(result.findIndex(e => e.Id == SlideShow.Id), 1);\r\n })\r\n this.Showbutton = true;\r\n this.SelectShowNews = self.listSlideShow[0];\r\n }\r\n else {\r\n //debugger\r\n var newsSlideShow = result.shift();\r\n var newEditorVM = new NewsEditorVM();\r\n newEditorVM.LoadOriginalSource(newsSlideShow);\r\n self.NewsSlideShow = newEditorVM;\r\n this.Showbutton = false;\r\n this.SelectShowNews = self.NewsSlideShow;\r\n }\r\n searchCallback(result);\r\n })\r\n .fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\r\n CountItems(searchCallback: (result: number) => void) {\r\n var self = this;\n var req = self.CreateCriteria();\n var service = this.container.get(PublicNewsAppService) as PublicNewsAppService;\r\n service.Count(req)\r\n .done((result) => {\r\n searchCallback(result)\r\n }).fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\r\n\n Reset() {\n this.EffectiveDateFrom = null;\n this.EffectiveDateTo = null;\n this.Search();\n }\n\n ShowNews(data) {\r\n this.router.navigate('Modules/Aqs/NewsPage/' + data.Id);\r\n }\n\n PreparePaging() {\n this.PageSize += 3;\n }\n\n SelectDate() {\n this.IsEditing = true;\n this.dialogService = this.container.get(DialogService);\r\n this.dialogService.open({\r\n viewModel: PickDateDialogVM, model: {\r\n view: PLATFORM.moduleName(\"Modules/Aqs/Programs/News/NewsCriteriaView.html\"),\r\n viewModel: this,\r\n Header: this.TextTitle,\n okbtnclass: \"btn btn-sm btn-success\",\n okbtn: this.TextOK,\r\n }, lock: true\r\n }).whenClosed(response => {\r\n if (response.wasCancelled) {\n this.EffectiveDateFrom = null;\n this.EffectiveDateTo = null;\r\n } else {\n this.EffectiveDateFrom = response.output.EffectiveDateFrom;\n this.EffectiveDateTo = response.output.EffectiveDateTo;\n this.Search();\n }\r\n });\n }\n\n FindNewsType() {\r\n var service = this.container.get(PublicNewsAppService) as PublicNewsAppService;\r\n service\r\n .FindNewsType()\r\n .done((result) => {\r\n this.NewsType = result;\r\n })\r\n .fail((error) => {\r\n FsUtility.CommonErrorHandler(error);\r\n });\r\n }\n\n public NewsTypeId: any;\r\n SelectNewsType(typeId) {\n //debugger\r\n var self = this;\r\n this.AllType = true;\r\n if (typeId != null) self.NewsTypeId = typeId;\n this.PageSize = 9;\r\n self.Search();\r\n }\r\n\r\n SelectNewsTypeAll() {\r\n this.NewsTypeId = null;\r\n this.AllType = false;\n this.PageSize = 9;\r\n this.Search();\r\n }\n\n public listSlideShow = [];\n public SelectShowNews: any;\n public NewsSlideShow: any;\r\n public ListNewsId: any;\r\n public NewsIndex: number;\r\n SelectNewsSlideShow(typeid) {\r\n //debugger\r\n var self = this;\r\n var tempTypeId = typeid;\r\n var NewsIndex = this.listSlideShow.findIndex(t => t.NewsTypeId == tempTypeId)\r\n self.NewsIndex = NewsIndex;\r\n this.SelectShowNews = this.listSlideShow[NewsIndex];\r\n }\n\r\n}\r\n","import EditorVMBase from \"../../../../Lib/Fs.SmartClient.Client/EditorVMBase\";\r\nimport NewsData from \"../../Scripts/AppServiceContract/NewsData\";\nimport { useView, Container, computedFrom } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\nimport FsUtility from \"../../../../Lib/Fs.SmartClient.Client/FsUtility\";\r\nimport PublicNewsAppService from \"../../Scripts/AppServiceContract/PublicNewsAppService\";\r\nimport { Router } from 'aurelia-router';\nimport { fs } from \"../../../../Config/FsConfig\";\nimport { I18N } from \"aurelia-i18n\";\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\n\r\n@useView(PLATFORM.moduleName(\"./NewsView.html\"))\r\nexport default class NewsViewEditorVM extends EditorVMBase {\r\n public i18n: I18N;\n public eventAggregator: EventAggregator;\n changeLocaleSubscribe: any;\r\n Id: string;\r\n Description: string;\n EffectiveDate: Date;\r\n FileInfoList: any;\r\n Title: string;\r\n FileInfoId: string;\r\n FileName: string;\r\n ShowDate: string;\n TypeName: string;\n\r\n router: Router\n AttachmentBaseUrl: string;\r\n\r\n constructor() {\r\n super();\n this.i18n = Container.instance.get(I18N);\n this.eventAggregator = Container.instance.get(EventAggregator);\n this.router = Container.instance.get(Router);\n this.AttachmentBaseUrl = fs.Config.ServiceBaseUrl + \"modules/Aqs.AppService/UploadFileAppService/DownloadFile/id=\";\n this.changeLocaleSubscribe = this.eventAggregator.subscribe('ChangeLocale', (response) => {\n if (this.Id != undefined && this.Id != null) {\n this.LoadData(this.Id);\r\n }\r\n });\r\n }\r\n\n activate(params, route) {\r\n this.LoadData(params.Id);\r\n }\n\n LoadData(data) {\r\n var service = Container.instance.get(PublicNewsAppService) as PublicNewsAppService\r\n return service.LoadNews(data).done((result) => {\r\n this.SetOriginalSource(result);\r\n }).fail(FsUtility.CommonErrorHandler);\r\n }\n\r\n LoadOriginalSource(originalSource: NewsData) {\r\n this.Id = originalSource.Id;\r\n this.Title = originalSource.Title;\r\n this.Description = originalSource.Description;\n this.TypeName = originalSource.TypeName;\n //this.EffectiveDate = new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate());\n //this.ShowDate = new Intl.DateTimeFormat(this.i18n.tr('Aqs.Common:LangCode'), { dateStyle: 'full', timeStyle: 'short' }).format(dateTime) + this.i18n.tr('Aqs.Common:TimeUnit');\n //this.FileInfoList = originalSource.FileInfoList;\n \n\n let dateTime = new Date(originalSource.EffectiveDate);\r\n this.EffectiveDate = new Date(\r\n dateTime.getFullYear(),\r\n dateTime.getMonth(),\r\n dateTime.getDate()\r\n );\r\n this.ShowDate = new Intl.DateTimeFormat(this.i18n.tr(\"Aqs.Common:LangCode\"), {\n dateStyle: \"full\", timeStyle: \"short\",\r\n }).format(dateTime) + this.i18n.tr(\"Aqs.Common:TimeUnit\");\r\n this.FileInfoList = originalSource.FileInfoList;\n\n }\r\n\r\n SaveOriginalSource(originalSource: NewsData) {\r\n originalSource.Id = this.Id;\r\n originalSource.Title = this.Title;\r\n originalSource.Description = this.Description;\r\n originalSource.EffectiveDate = this.EffectiveDate;\n originalSource.FileInfoId = this.FileInfoId;\n originalSource.FileName = this.FileName;\n originalSource.FileInfoList = this.FileInfoList;\r\n }\n\n GoBack() {\r\n var self = this;\r\n this.router.navigate('Modules/Aqs/NewsPage');\r\n }\n\n}\r\n","export enum IssueStatusEnum {\r\n New = 0,\r\n Approve = 1,\r\n Reject = 2\r\n}\n\nexport enum IssueTypeEnum {\r\n Admin = 0,\r\n Public = 1\r\n}\r\n\r\n\r\n"],"names":[],"sourceRoot":""}