Add next and previous actions for calendar
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Peter Stuifzand 2021-08-15 13:47:13 +02:00
parent 3022be7e66
commit 170acda64f
6 changed files with 100 additions and 28 deletions

View File

@ -84,3 +84,13 @@ document.querySelectorAll(".page-loader")
}
})
})
$(document).on('click', '.calendar-update', function (event) {
const cal = $(this).data('calendar')
fetch('/api/calendar/' + cal)
.then(res => res.text())
.then(calendar => {
$('.calendar').html(calendar)
})
return false
})

View File

@ -252,6 +252,26 @@ mark {
}
}
.calendar-buttons {
width: 257px;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
padding: 3px;
.calendar-update {
display: block;
width: 32px;
height: 32px;
text-align: center;
}
.calendar-update:active {
border: 3px solid #aaa;
border-radius: 4px;
}
}
.calendar-grid {
display: grid;
width: 257px;

View File

@ -140,12 +140,16 @@ function editor(root, inputData, options) {
function start() {
root.focus();
disableDragging(drake)
render(root, store);
drake = enableDragging(root)
$(root).on('click', '.marker', function (event) {
if (event.ctrlKey) {
zoomin(this).then(id => {
location.href = '/edit/' + id;
})
}
return true;
})
cursor.set(0)
trigger('change')
renderUpdate()
}
function getChildren(id) {
@ -754,7 +758,7 @@ function editor(root, inputData, options) {
$(root).on('click', '.marker', function () {
stopEditing(root, store, $(this).next('textarea'));
return false;
return true;
});
$(root).on('click', '.content a', function (event) {

32
main.go
View File

@ -127,6 +127,9 @@ type pageBaseInfo struct {
RedirectURI string
Days []Day
Month string
Year int
PrevMonth string
NextMonth string
}
type indexPage struct {
@ -197,7 +200,7 @@ type recentPage struct {
Recent []Change
}
var baseTemplate = []string{"templates/layout.html", "templates/sidebar.html", "templates/sidebar-right.html"}
var baseTemplate = []string{"templates/layout.html", "templates/sidebar.html", "templates/sidebar-right.html", "templates/calendar.html"}
type indexHandler struct{}
type graphHandler struct{}
@ -483,7 +486,12 @@ func getPageBase(repo PagesRepository, t time.Time) pageBaseInfo {
RedirectURI: redirectURI,
Days: prepareDays(mp, t),
Month: t.Month().String(),
Year: t.Year(),
}
pageBase.PrevMonth = t.AddDate(0, -1, -t.Day()+1).Format("2006-01-02")
pageBase.NextMonth = t.AddDate(0, 1, -t.Day()+1).Format("2006-01-02")
return pageBase
}
@ -1192,6 +1200,28 @@ func main() {
return
}
})
http.HandleFunc("/api/calendar/", func(w http.ResponseWriter, r *http.Request) {
dateString := r.URL.Path[len("/api/calendar/"):]
curDate, err := time.Parse("2006-01-02", dateString)
if err != nil {
curDate = time.Now()
}
pageBase := getPageBase(mp, curDate)
t, err := template.ParseFiles("templates/calendar.html")
if err != nil {
http.Error(w, err.Error(), 500)
return
}
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.Header().Set("Cache-Control", "public, max-age=600")
err = t.ExecuteTemplate(w, "calendar", pageBase)
if err != nil {
log.Println(err)
http.Error(w, err.Error(), 500)
return
}
})
http.Handle("/search/", sh)
http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("./dist"))))
http.Handle("/save/", &saveHandler{})

27
templates/calendar.html Normal file
View File

@ -0,0 +1,27 @@
{{ define "calendar" }}
<div class="calendar">
<div class="calendar-buttons">
<a href="" class="calendar-update" data-calendar="{{ .PrevMonth }}">&lt;</a>
<h3>{{ .Month }} {{ .Year }}</h3>
<a href="" class="calendar-update" data-calendar="{{ .NextMonth }}">&gt;</a>
</div>
<div class="calendar-grid">
<div class="day"></div>
<div class="day">m</div>
<div class="day">d</div>
<div class="day">w</div>
<div class="day">d</div>
<div class="day">v</div>
<div class="day">z</div>
<div class="day">z</div>
{{ range .Days }}
<div class="{{ .Class }}">
<a href="{{ .URL }}">
<span class="day-text">{{ .Text }}</span>
<span class="day-count">{{ .Count }}</span>
</a>
</div>
{{ end }}
</div>
</div>
{{ end }}

View File

@ -1,25 +1,6 @@
{{ define "sidebar-right" }}
<div class="sidebar-right">
<div class="calendar">
<h3>{{ .Month }}</h3>
<div class="calendar-grid">
<div class="day"></div>
<div class="day">m</div>
<div class="day">d</div>
<div class="day">w</div>
<div class="day">d</div>
<div class="day">v</div>
<div class="day">z</div>
<div class="day">z</div>
{{ range .Days }}
<div class="{{ .Class }}">
<a href="{{ .URL }}">
<span class="day-text">{{ .Text }}</span>
<span class="day-count">{{ .Count }}</span>
</a>
</div>
{{block "calendar" .}}
{{end}}
</div>
</div>
</div>
{{ end }}