Added dynamic support for years
This commit is contained in:
parent
47b9939ead
commit
770fbd5b88
|
@ -0,0 +1,14 @@
|
|||
package holiday
|
||||
|
||||
import (
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type YearService struct {
|
||||
DB *sqlx.DB
|
||||
}
|
||||
|
||||
func (s *YearService) Find() ([]int, error) {
|
||||
var years []int
|
||||
return years, s.DB.Select(&years, "SELECT distinct extract(year from date) as date FROM holiday order by date asc")
|
||||
}
|
13
main.go
13
main.go
|
@ -55,10 +55,11 @@ func main() {
|
|||
|
||||
holidayService := holiday.HolidayService{DB: client}
|
||||
countryService := holiday.CountryService{DB: client}
|
||||
yearService := holiday.YearService{DB: client}
|
||||
|
||||
g.GET("/api/v1/holidays", getHolidays(holidayService))
|
||||
|
||||
setupAdminDashboard(g.Group("/admin"), holidayService, countryService)
|
||||
setupAdminDashboard(g.Group("/admin"), holidayService, countryService, yearService)
|
||||
|
||||
g.GET("/", func(c *gin.Context) {
|
||||
year := time.Now().Year()
|
||||
|
@ -69,11 +70,13 @@ func main() {
|
|||
}
|
||||
holidays, _ := holidayService.Find(search, holiday.Paging{PageSize: 100})
|
||||
countries, _ := countryService.Find()
|
||||
c.HTML(http.StatusOK, "index.gohtml", gin.H{"Countries": countries, "Search": search, "Holidays": mapHolidays(holidays).Holidays})
|
||||
years, _ := yearService.Find()
|
||||
c.HTML(http.StatusOK, "index.gohtml", gin.H{"Years": years, "Countries": countries, "Search": search, "Holidays": mapHolidays(holidays).Holidays})
|
||||
})
|
||||
g.GET("/documentation", func(c *gin.Context) {
|
||||
countries, _ := countryService.Find()
|
||||
c.HTML(http.StatusOK, "documentation.gohtml", gin.H{"Countries": countries})
|
||||
years, _ := yearService.Find()
|
||||
c.HTML(http.StatusOK, "documentation.gohtml", gin.H{"Years": years, "Countries": countries})
|
||||
})
|
||||
g.GET("/search", func(c *gin.Context) {
|
||||
request := holiday.Search{}
|
||||
|
@ -129,7 +132,7 @@ func loadTemplates(g *gin.Engine) {
|
|||
)
|
||||
}
|
||||
|
||||
func setupAdminDashboard(adminDashboard *gin.RouterGroup, service holiday.HolidayService, countryService holiday.CountryService) {
|
||||
func setupAdminDashboard(adminDashboard *gin.RouterGroup, service holiday.HolidayService, countryService holiday.CountryService, yearService holiday.YearService) {
|
||||
adminDashboard.Use(gin.BasicAuth(loadAuth()))
|
||||
|
||||
adminDashboard.GET("/", func(c *gin.Context) {
|
||||
|
@ -142,11 +145,13 @@ func setupAdminDashboard(adminDashboard *gin.RouterGroup, service holiday.Holida
|
|||
holidays, _ := service.Find(search, holiday.Paging{PageSize: 100})
|
||||
holidayResponse := mapHolidays(holidays)
|
||||
countries, _ := countryService.Find()
|
||||
years, _ := yearService.Find()
|
||||
|
||||
response := map[string]any{}
|
||||
response["Holidays"] = holidayResponse
|
||||
response["Search"] = search
|
||||
response["Countries"] = countries
|
||||
response["Years"] = years
|
||||
|
||||
c.HTML(http.StatusOK, "admin_dashboard.gohtml", response)
|
||||
})
|
||||
|
|
|
@ -36,14 +36,9 @@
|
|||
<section>
|
||||
<label for="year">Year:</label>
|
||||
<select id="year" name="year">
|
||||
<option value="2020" {{if eq (deferint .Search.Year) 2020}}selected{{end}}>2020</option>
|
||||
<option value="2021" {{if eq (deferint .Search.Year) 2021}}selected{{end}}>2021</option>
|
||||
<option value="2022" {{if eq (deferint .Search.Year) 2022}}selected{{end}}>2022</option>
|
||||
<option value="2023" {{if eq (deferint .Search.Year) 2023}}selected{{end}}>2023</option>
|
||||
<option value="2024" {{if eq (deferint .Search.Year) 2024}}selected{{end}}>2024</option>
|
||||
<option value="2025" {{if eq (deferint .Search.Year) 2025}}selected{{end}}>2025</option>
|
||||
<option value="2026" {{if eq (deferint .Search.Year) 2026}}selected{{end}}>2026</option>
|
||||
<option value="2027" {{if eq (deferint .Search.Year) 2027}}selected{{end}}>2027</option>
|
||||
{{range $entry := .Years}}
|
||||
<option {{if intpeq $.Search.Year $entry}}selected{{end}} value="{{$entry}}">{{$entry}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</section>
|
||||
<section class="radio-group">
|
||||
|
|
|
@ -61,14 +61,9 @@
|
|||
<section>
|
||||
<label for="dsy-year">Year</label>
|
||||
<select id="dsy-year" name="year">
|
||||
<option value="2020">2020</option>
|
||||
<option value="2021">2021</option>
|
||||
<option value="2022">2022</option>
|
||||
<option value="2023">2023</option>
|
||||
<option value="2024">2024</option>
|
||||
<option value="2025">2025</option>
|
||||
<option value="2026">2026</option>
|
||||
<option value="2027">2027</option>
|
||||
{{range $entry := .Years}}
|
||||
<option value="{{$entry}}">{{$entry}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
@ -36,10 +36,9 @@
|
|||
<section>
|
||||
<label for="year">Year:</label>
|
||||
<select id="year" name="year">
|
||||
<option {{if intpeq .Search.Year 2020}}selected{{end}} value="2020">2020</option>
|
||||
<option {{if intpeq .Search.Year 2021}}selected{{end}} value="2021">2021</option>
|
||||
<option {{if intpeq .Search.Year 2022}}selected{{end}} value="2022">2022</option>
|
||||
<option {{if intpeq .Search.Year 2023}}selected{{end}} value="2023">2023</option>
|
||||
{{range $entry := .Years}}
|
||||
<option {{if intpeq $.Search.Year $entry}}selected{{end}} value="{{$entry}}">{{$entry}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</section>
|
||||
<section class="radio-group">
|
||||
|
|
Loading…
Reference in New Issue