| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import { Elysia } from 'elysia'
- import { Eta } from "eta"
- import Meteostanica from '../../utils/meteostanica'
- const eta = new Eta({ views: "./templates" })
- export default (langName, lang) => new Elysia({ prefix: `/history` })
- .get('/', ({ set }) => {
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/index`, { lang })
- })
- .get(`/:property`, ({ params: { property }, query: { day, month, year }, set }) => {
- const dateMap = Meteostanica.getDateMap()
-
- const years = Object.keys(dateMap)
- const selectedYear = years.find(i => i === year) ?? years[years.length - 1]
- const months = Object.keys(dateMap[selectedYear])
- const selectedMonth = months.find(i => i === month) ?? months[months.length - 1]
- const days = dateMap[selectedYear][selectedMonth]
- const selectedDay = days.find(i => i === day) ?? days[days.length - 1]
- const data = Meteostanica.getDataPropertyDaily(property, `${selectedYear}-${selectedMonth}-${selectedDay}`)
- if (!data) {
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/notFound`, { property })
- }
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/property`, { lang, selected: { day: selectedDay, month: selectedMonth, year: selectedYear }, dateMap: { years, months, days, raw: dateMap }, type: `daily`, property, data })
- })
- .get(`/:property/daily`, ({ params: { property }, query: { day, month, year }, set }) => {
- const dateMap = Meteostanica.getDateMap()
-
- const years = Object.keys(dateMap)
- const selectedYear = years.find(i => i === year) ?? years[years.length - 1]
- const months = Object.keys(dateMap[selectedYear])
- const selectedMonth = months.find(i => i === month) ?? months[months.length - 1]
- const days = dateMap[selectedYear][selectedMonth]
- const selectedDay = days.find(i => i === day) ?? days[days.length - 1]
- const data = Meteostanica.getDataPropertyDaily(property, `${selectedYear}-${selectedMonth}-${selectedDay}`)
- if (!data) {
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/notFound`, { property })
- }
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/property`, { lang, selected: { day: selectedDay, month: selectedMonth, year: selectedYear }, dateMap: { years, months, days, raw: dateMap }, type: `daily`, property, data })
- })
- .get(`/:property/monthly`, ({ params: { property }, query: { month, year }, set }) => {
- const dateMap = Meteostanica.getDateMap()
-
- const years = Object.keys(dateMap)
- const selectedYear = years.find(i => i === year) ?? years[years.length - 1]
- const months = Object.keys(dateMap[selectedYear])
- const selectedMonth = months.find(i => i === month) ?? months[months.length - 1]
- const data = Meteostanica.getDataPropertyMonthly(property, `${selectedYear}-${selectedMonth}`)
- if (!data) {
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/notFound`, { property })
- }
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/property`, { lang, selected: { month: selectedMonth, year: selectedYear }, dateMap: { years, months, raw: dateMap }, type: `monthly`, property, data })
- })
- .get(`/:property/yearly`, ({ params: { property }, query: { year }, set }) => {
- const dateMap = Meteostanica.getDateMap()
-
- const years = Object.keys(dateMap)
- const selectedYear = years.find(i => i === year) ?? years[years.length - 1]
- const data = Meteostanica.getDataPropertyYearly(property, selectedYear)
- if (!data) {
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/notFound`, { property })
- }
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/property`, { lang, selected: { year: selectedYear }, dateMap: { years, raw: dateMap }, type: `yearly`, property, data })
- })
- .get(`/:property/allTime`, ({ params: { property }, set }) => {
- const data = Meteostanica.getDataPropertyAllTime(property)
- const dateMap = Meteostanica.getDateMap()
- if (!data) {
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/notFound`, { property })
- }
- set.headers['content-type'] = 'text/html; charset=utf8'
- return eta.render(`${langName}/history/property`, { lang, dateMap: { raw: dateMap }, type: `allTime`, property, data })
- })
|