1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00

feat: settings dialog for mail reports

This commit is contained in:
Ferdinand Mütsch 2021-04-30 16:20:08 +02:00
parent a4e7158db2
commit ef9303e61e
15 changed files with 584 additions and 482 deletions

24
config/eventbus.go Normal file
View File

@ -0,0 +1,24 @@
package config
import "github.com/leandro-lugaresi/hub"
type ApplicationEvent struct {
Type string
Payload interface{}
}
const (
TopicUser = "user.*"
EventUserUpdate = "user.update"
FieldPayload = "payload"
)
var eventHub *hub.Hub
func init() {
eventHub = hub.New()
}
func EventBus() *hub.Hub {
return eventHub
}

View File

@ -1,56 +1,4 @@
mode: set mode: set
github.com/muety/wakapi/models/heartbeat.go:32.34,34.2 1 1
github.com/muety/wakapi/models/heartbeat.go:36.65,38.46 2 1
github.com/muety/wakapi/models/heartbeat.go:38.46,39.108 1 1
github.com/muety/wakapi/models/heartbeat.go:39.108,42.4 2 1
github.com/muety/wakapi/models/heartbeat.go:46.50,47.11 1 1
github.com/muety/wakapi/models/heartbeat.go:60.2,60.15 1 1
github.com/muety/wakapi/models/heartbeat.go:64.2,64.12 1 1
github.com/muety/wakapi/models/heartbeat.go:48.22,49.18 1 1
github.com/muety/wakapi/models/heartbeat.go:50.21,51.17 1 1
github.com/muety/wakapi/models/heartbeat.go:52.23,53.19 1 1
github.com/muety/wakapi/models/heartbeat.go:54.17,55.26 1 1
github.com/muety/wakapi/models/heartbeat.go:56.22,57.18 1 1
github.com/muety/wakapi/models/heartbeat.go:60.15,62.3 1 1
github.com/muety/wakapi/models/heartbeat.go:67.37,83.2 1 0
github.com/muety/wakapi/models/heartbeat.go:91.41,93.16 2 0
github.com/muety/wakapi/models/heartbeat.go:96.2,97.10 2 0
github.com/muety/wakapi/models/heartbeat.go:93.16,95.3 1 0
github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0
github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0
github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0
github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0
github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0
github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0
github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0
github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0
github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0
github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0
github.com/muety/wakapi/models/mail.go:16.44,20.2 3 0
github.com/muety/wakapi/models/mail.go:22.44,26.2 3 0
github.com/muety/wakapi/models/mail.go:28.32,41.2 1 0
github.com/muety/wakapi/models/mail.go:43.41,45.2 1 0
github.com/muety/wakapi/models/models.go:3.14,5.2 0 1
github.com/muety/wakapi/models/shared.go:35.52,37.2 1 0
github.com/muety/wakapi/models/shared.go:39.52,42.16 3 0
github.com/muety/wakapi/models/shared.go:45.2,47.12 3 0
github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0
github.com/muety/wakapi/models/shared.go:50.52,56.22 2 0
github.com/muety/wakapi/models/shared.go:71.2,74.12 3 0
github.com/muety/wakapi/models/shared.go:57.14,61.17 2 0
github.com/muety/wakapi/models/shared.go:64.17,66.8 2 0
github.com/muety/wakapi/models/shared.go:67.10,68.64 1 0
github.com/muety/wakapi/models/shared.go:61.17,63.4 1 0
github.com/muety/wakapi/models/shared.go:77.51,80.2 2 0
github.com/muety/wakapi/models/shared.go:82.45,84.2 1 0
github.com/muety/wakapi/models/shared.go:86.37,88.2 1 0
github.com/muety/wakapi/models/shared.go:90.35,92.2 1 0
github.com/muety/wakapi/models/shared.go:94.34,96.2 1 0
github.com/muety/wakapi/models/alias.go:12.32,14.2 1 0
github.com/muety/wakapi/models/alias.go:16.37,17.35 1 0
github.com/muety/wakapi/models/alias.go:22.2,22.14 1 0
github.com/muety/wakapi/models/alias.go:17.35,18.18 1 0
github.com/muety/wakapi/models/alias.go:18.18,20.4 1 0
github.com/muety/wakapi/models/filters.go:16.56,17.16 1 0 github.com/muety/wakapi/models/filters.go:16.56,17.16 1 0
github.com/muety/wakapi/models/filters.go:29.2,29.19 1 0 github.com/muety/wakapi/models/filters.go:29.2,29.19 1 0
github.com/muety/wakapi/models/filters.go:18.22,19.32 1 0 github.com/muety/wakapi/models/filters.go:18.22,19.32 1 0
@ -69,13 +17,23 @@ github.com/muety/wakapi/models/filters.go:39.8,39.27 1 1
github.com/muety/wakapi/models/filters.go:39.27,41.3 1 0 github.com/muety/wakapi/models/filters.go:39.27,41.3 1 0
github.com/muety/wakapi/models/filters.go:41.8,41.28 1 1 github.com/muety/wakapi/models/filters.go:41.8,41.28 1 1
github.com/muety/wakapi/models/filters.go:41.28,43.3 1 0 github.com/muety/wakapi/models/filters.go:41.28,43.3 1 0
github.com/muety/wakapi/models/interval.go:39.47,40.23 1 0 github.com/muety/wakapi/models/heartbeat.go:32.34,34.2 1 1
github.com/muety/wakapi/models/interval.go:45.2,45.14 1 0 github.com/muety/wakapi/models/heartbeat.go:36.65,38.46 2 1
github.com/muety/wakapi/models/interval.go:40.23,41.13 1 0 github.com/muety/wakapi/models/heartbeat.go:38.46,39.108 1 1
github.com/muety/wakapi/models/interval.go:41.13,43.4 1 0 github.com/muety/wakapi/models/heartbeat.go:39.108,42.4 2 1
github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0 github.com/muety/wakapi/models/heartbeat.go:46.50,47.11 1 1
github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0 github.com/muety/wakapi/models/heartbeat.go:60.2,60.15 1 1
github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0 github.com/muety/wakapi/models/heartbeat.go:64.2,64.12 1 1
github.com/muety/wakapi/models/heartbeat.go:48.22,49.18 1 1
github.com/muety/wakapi/models/heartbeat.go:50.21,51.17 1 1
github.com/muety/wakapi/models/heartbeat.go:52.23,53.19 1 1
github.com/muety/wakapi/models/heartbeat.go:54.17,55.26 1 1
github.com/muety/wakapi/models/heartbeat.go:56.22,57.18 1 1
github.com/muety/wakapi/models/heartbeat.go:60.15,62.3 1 1
github.com/muety/wakapi/models/heartbeat.go:67.37,83.2 1 0
github.com/muety/wakapi/models/heartbeat.go:91.41,93.16 2 0
github.com/muety/wakapi/models/heartbeat.go:96.2,97.10 2 0
github.com/muety/wakapi/models/heartbeat.go:93.16,95.3 1 0
github.com/muety/wakapi/models/mail_address.go:15.13,18.2 2 1 github.com/muety/wakapi/models/mail_address.go:15.13,18.2 2 1
github.com/muety/wakapi/models/mail_address.go:24.38,26.2 1 0 github.com/muety/wakapi/models/mail_address.go:24.38,26.2 1 0
github.com/muety/wakapi/models/mail_address.go:28.35,30.21 2 1 github.com/muety/wakapi/models/mail_address.go:28.35,30.21 2 1
@ -94,6 +52,7 @@ github.com/muety/wakapi/models/mail_address.go:59.40,60.22 1 1
github.com/muety/wakapi/models/mail_address.go:65.2,65.13 1 1 github.com/muety/wakapi/models/mail_address.go:65.2,65.13 1 1
github.com/muety/wakapi/models/mail_address.go:60.22,61.17 1 1 github.com/muety/wakapi/models/mail_address.go:60.22,61.17 1 1
github.com/muety/wakapi/models/mail_address.go:61.17,63.4 1 1 github.com/muety/wakapi/models/mail_address.go:61.17,63.4 1 1
github.com/muety/wakapi/models/models.go:3.14,5.2 0 1
github.com/muety/wakapi/models/summary.go:70.29,72.2 1 1 github.com/muety/wakapi/models/summary.go:70.29,72.2 1 1
github.com/muety/wakapi/models/summary.go:74.37,81.2 6 1 github.com/muety/wakapi/models/summary.go:74.37,81.2 6 1
github.com/muety/wakapi/models/summary.go:83.35,85.2 1 1 github.com/muety/wakapi/models/summary.go:83.35,85.2 1 1
@ -146,20 +105,238 @@ github.com/muety/wakapi/models/summary.go:244.33,246.2 1 1
github.com/muety/wakapi/models/summary.go:248.43,250.2 1 1 github.com/muety/wakapi/models/summary.go:248.43,250.2 1 1
github.com/muety/wakapi/models/summary.go:252.38,254.2 1 1 github.com/muety/wakapi/models/summary.go:252.38,254.2 1 1
github.com/muety/wakapi/models/user.go:8.13,10.2 1 1 github.com/muety/wakapi/models/user.go:8.13,10.2 1 1
github.com/muety/wakapi/models/user.go:77.36,78.22 1 1 github.com/muety/wakapi/models/user.go:78.36,79.22 1 1
github.com/muety/wakapi/models/user.go:81.2,82.16 2 1 github.com/muety/wakapi/models/user.go:82.2,83.16 2 1
github.com/muety/wakapi/models/user.go:85.2,85.11 1 1 github.com/muety/wakapi/models/user.go:86.2,86.11 1 1
github.com/muety/wakapi/models/user.go:78.22,80.3 1 1 github.com/muety/wakapi/models/user.go:79.22,81.3 1 1
github.com/muety/wakapi/models/user.go:82.16,84.3 1 0 github.com/muety/wakapi/models/user.go:83.16,85.3 1 0
github.com/muety/wakapi/models/user.go:88.41,91.2 2 1 github.com/muety/wakapi/models/user.go:89.41,92.2 2 1
github.com/muety/wakapi/models/user.go:93.43,96.2 1 0 github.com/muety/wakapi/models/user.go:94.43,97.2 1 0
github.com/muety/wakapi/models/user.go:98.45,101.2 1 0 github.com/muety/wakapi/models/user.go:99.45,102.2 1 0
github.com/muety/wakapi/models/user.go:103.33,108.2 1 0 github.com/muety/wakapi/models/user.go:104.33,109.2 1 0
github.com/muety/wakapi/models/user.go:110.41,112.2 1 0 github.com/muety/wakapi/models/user.go:111.41,113.2 1 0
github.com/muety/wakapi/models/user.go:114.45,116.2 1 0 github.com/muety/wakapi/models/user.go:115.45,117.2 1 0
github.com/muety/wakapi/models/user.go:118.45,120.2 1 0 github.com/muety/wakapi/models/user.go:119.45,121.2 1 0
github.com/muety/wakapi/models/user.go:122.39,124.2 1 0 github.com/muety/wakapi/models/user.go:123.39,125.2 1 0
github.com/muety/wakapi/models/user.go:126.39,129.2 2 0 github.com/muety/wakapi/models/user.go:127.39,130.2 2 0
github.com/muety/wakapi/models/alias.go:12.32,14.2 1 0
github.com/muety/wakapi/models/alias.go:16.37,17.35 1 0
github.com/muety/wakapi/models/alias.go:22.2,22.14 1 0
github.com/muety/wakapi/models/alias.go:17.35,18.18 1 0
github.com/muety/wakapi/models/alias.go:18.18,20.4 1 0
github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0
github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0
github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0
github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0
github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0
github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0
github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0
github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0
github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0
github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0
github.com/muety/wakapi/models/interval.go:39.47,40.23 1 0
github.com/muety/wakapi/models/interval.go:45.2,45.14 1 0
github.com/muety/wakapi/models/interval.go:40.23,41.13 1 0
github.com/muety/wakapi/models/interval.go:41.13,43.4 1 0
github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0
github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0
github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0
github.com/muety/wakapi/models/mail.go:19.44,23.2 3 0
github.com/muety/wakapi/models/mail.go:25.44,29.2 3 0
github.com/muety/wakapi/models/mail.go:31.32,44.2 1 0
github.com/muety/wakapi/models/mail.go:46.41,48.2 1 0
github.com/muety/wakapi/models/shared.go:35.52,37.2 1 0
github.com/muety/wakapi/models/shared.go:39.52,42.16 3 0
github.com/muety/wakapi/models/shared.go:45.2,47.12 3 0
github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0
github.com/muety/wakapi/models/shared.go:50.52,56.22 2 0
github.com/muety/wakapi/models/shared.go:71.2,74.12 3 0
github.com/muety/wakapi/models/shared.go:57.14,61.17 2 0
github.com/muety/wakapi/models/shared.go:64.17,66.8 2 0
github.com/muety/wakapi/models/shared.go:67.10,68.64 1 0
github.com/muety/wakapi/models/shared.go:61.17,63.4 1 0
github.com/muety/wakapi/models/shared.go:77.51,80.2 2 0
github.com/muety/wakapi/models/shared.go:82.45,84.2 1 0
github.com/muety/wakapi/models/shared.go:86.37,88.2 1 0
github.com/muety/wakapi/models/shared.go:90.35,92.2 1 0
github.com/muety/wakapi/models/shared.go:94.34,96.2 1 0
github.com/muety/wakapi/utils/auth.go:16.79,18.54 2 0
github.com/muety/wakapi/utils/auth.go:22.2,24.16 3 0
github.com/muety/wakapi/utils/auth.go:28.2,30.45 3 0
github.com/muety/wakapi/utils/auth.go:33.2,34.32 2 0
github.com/muety/wakapi/utils/auth.go:18.54,20.3 1 0
github.com/muety/wakapi/utils/auth.go:24.16,26.3 1 0
github.com/muety/wakapi/utils/auth.go:30.45,32.3 1 0
github.com/muety/wakapi/utils/auth.go:37.65,39.85 2 0
github.com/muety/wakapi/utils/auth.go:43.2,44.30 2 0
github.com/muety/wakapi/utils/auth.go:39.85,41.3 1 0
github.com/muety/wakapi/utils/auth.go:47.94,49.16 2 0
github.com/muety/wakapi/utils/auth.go:53.2,53.107 1 0
github.com/muety/wakapi/utils/auth.go:57.2,57.22 1 0
github.com/muety/wakapi/utils/auth.go:49.16,51.3 1 0
github.com/muety/wakapi/utils/auth.go:53.107,55.3 1 0
github.com/muety/wakapi/utils/auth.go:60.56,64.2 3 0
github.com/muety/wakapi/utils/auth.go:66.55,69.16 3 0
github.com/muety/wakapi/utils/auth.go:72.2,72.16 1 0
github.com/muety/wakapi/utils/auth.go:69.16,71.3 1 0
github.com/muety/wakapi/utils/color.go:8.90,10.32 2 0
github.com/muety/wakapi/utils/color.go:15.2,15.15 1 0
github.com/muety/wakapi/utils/color.go:10.32,11.50 1 0
github.com/muety/wakapi/utils/color.go:11.50,13.4 1 0
github.com/muety/wakapi/utils/common.go:18.73,19.58 1 0
github.com/muety/wakapi/utils/common.go:22.2,22.87 1 0
github.com/muety/wakapi/utils/common.go:25.2,25.64 1 0
github.com/muety/wakapi/utils/common.go:19.58,21.3 1 0
github.com/muety/wakapi/utils/common.go:22.87,24.3 1 0
github.com/muety/wakapi/utils/common.go:28.40,30.2 1 0
github.com/muety/wakapi/utils/common.go:32.44,34.2 1 0
github.com/muety/wakapi/utils/common.go:36.49,38.2 1 0
github.com/muety/wakapi/utils/common.go:40.45,42.2 1 0
github.com/muety/wakapi/utils/common.go:44.24,46.2 1 0
github.com/muety/wakapi/utils/common.go:48.56,51.45 3 1
github.com/muety/wakapi/utils/common.go:54.2,54.40 1 1
github.com/muety/wakapi/utils/common.go:51.45,53.3 1 1
github.com/muety/wakapi/utils/filesystem.go:14.68,16.16 2 0
github.com/muety/wakapi/utils/filesystem.go:20.2,21.15 2 0
github.com/muety/wakapi/utils/filesystem.go:33.2,33.15 1 0
github.com/muety/wakapi/utils/filesystem.go:16.16,18.3 1 0
github.com/muety/wakapi/utils/filesystem.go:21.15,23.47 2 0
github.com/muety/wakapi/utils/filesystem.go:23.47,25.23 2 0
github.com/muety/wakapi/utils/filesystem.go:29.4,29.19 1 0
github.com/muety/wakapi/utils/filesystem.go:25.23,27.5 1 0
github.com/muety/wakapi/utils/http.go:9.90,12.58 3 0
github.com/muety/wakapi/utils/http.go:12.58,14.3 1 0
github.com/muety/wakapi/utils/strings.go:8.34,10.2 1 0
github.com/muety/wakapi/utils/strings.go:12.77,13.29 1 0
github.com/muety/wakapi/utils/strings.go:18.2,18.19 1 0
github.com/muety/wakapi/utils/strings.go:13.29,14.18 1 0
github.com/muety/wakapi/utils/strings.go:14.18,16.4 1 0
github.com/muety/wakapi/utils/template.go:8.41,10.16 2 0
github.com/muety/wakapi/utils/template.go:13.2,13.23 1 0
github.com/muety/wakapi/utils/template.go:10.16,12.3 1 0
github.com/muety/wakapi/utils/template.go:16.37,17.30 1 0
github.com/muety/wakapi/utils/template.go:20.2,20.10 1 0
github.com/muety/wakapi/utils/template.go:17.30,19.3 1 0
github.com/muety/wakapi/utils/date.go:8.43,10.2 1 1
github.com/muety/wakapi/utils/date.go:12.48,14.2 1 0
github.com/muety/wakapi/utils/date.go:16.41,18.21 2 1
github.com/muety/wakapi/utils/date.go:21.2,21.23 1 1
github.com/muety/wakapi/utils/date.go:18.21,20.3 1 0
github.com/muety/wakapi/utils/date.go:24.46,26.2 1 0
github.com/muety/wakapi/utils/date.go:28.51,30.2 1 0
github.com/muety/wakapi/utils/date.go:32.44,35.2 2 1
github.com/muety/wakapi/utils/date.go:37.52,39.2 1 0
github.com/muety/wakapi/utils/date.go:41.45,43.2 1 0
github.com/muety/wakapi/utils/date.go:45.51,47.2 1 0
github.com/muety/wakapi/utils/date.go:49.44,51.2 1 0
github.com/muety/wakapi/utils/date.go:54.42,56.2 1 1
github.com/muety/wakapi/utils/date.go:59.41,61.21 2 1
github.com/muety/wakapi/utils/date.go:64.2,64.36 1 1
github.com/muety/wakapi/utils/date.go:61.21,63.3 1 1
github.com/muety/wakapi/utils/date.go:68.63,70.2 1 0
github.com/muety/wakapi/utils/date.go:73.62,79.2 5 0
github.com/muety/wakapi/utils/date.go:82.67,85.33 2 1
github.com/muety/wakapi/utils/date.go:94.2,94.18 1 1
github.com/muety/wakapi/utils/date.go:85.33,87.19 2 1
github.com/muety/wakapi/utils/date.go:90.3,91.10 2 1
github.com/muety/wakapi/utils/date.go:87.19,89.4 1 1
github.com/muety/wakapi/utils/date.go:97.50,103.2 5 0
github.com/muety/wakapi/utils/date.go:106.79,109.36 3 1
github.com/muety/wakapi/utils/date.go:113.2,113.21 1 1
github.com/muety/wakapi/utils/date.go:117.2,117.21 1 1
github.com/muety/wakapi/utils/date.go:121.2,121.13 1 1
github.com/muety/wakapi/utils/date.go:109.36,112.3 2 0
github.com/muety/wakapi/utils/date.go:113.21,116.3 2 1
github.com/muety/wakapi/utils/date.go:117.21,120.3 2 1
github.com/muety/wakapi/utils/summary.go:10.66,11.40 1 0
github.com/muety/wakapi/utils/summary.go:16.2,16.48 1 0
github.com/muety/wakapi/utils/summary.go:11.40,12.27 1 0
github.com/muety/wakapi/utils/summary.go:12.27,14.4 1 0
github.com/muety/wakapi/utils/summary.go:19.88,22.2 2 0
github.com/muety/wakapi/utils/summary.go:24.95,26.16 2 0
github.com/muety/wakapi/utils/summary.go:29.2,29.38 1 0
github.com/muety/wakapi/utils/summary.go:26.16,28.3 1 0
github.com/muety/wakapi/utils/summary.go:32.105,35.18 2 0
github.com/muety/wakapi/utils/summary.go:70.2,70.22 1 0
github.com/muety/wakapi/utils/summary.go:36.28,37.26 1 0
github.com/muety/wakapi/utils/summary.go:38.32,40.24 2 0
github.com/muety/wakapi/utils/summary.go:41.31,42.29 1 0
github.com/muety/wakapi/utils/summary.go:43.31,45.27 2 0
github.com/muety/wakapi/utils/summary.go:46.32,47.30 1 0
github.com/muety/wakapi/utils/summary.go:48.32,50.28 2 0
github.com/muety/wakapi/utils/summary.go:51.31,52.29 1 0
github.com/muety/wakapi/utils/summary.go:53.32,54.44 1 0
github.com/muety/wakapi/utils/summary.go:55.41,57.42 2 0
github.com/muety/wakapi/utils/summary.go:58.33,59.45 1 0
github.com/muety/wakapi/utils/summary.go:60.33,61.45 1 0
github.com/muety/wakapi/utils/summary.go:62.35,63.45 1 0
github.com/muety/wakapi/utils/summary.go:64.26,65.21 1 0
github.com/muety/wakapi/utils/summary.go:66.10,67.39 1 0
github.com/muety/wakapi/utils/summary.go:73.73,80.56 5 0
github.com/muety/wakapi/utils/summary.go:96.2,103.8 2 0
github.com/muety/wakapi/utils/summary.go:80.56,82.3 1 0
github.com/muety/wakapi/utils/summary.go:82.8,82.54 1 0
github.com/muety/wakapi/utils/summary.go:82.54,84.3 1 0
github.com/muety/wakapi/utils/summary.go:84.8,86.17 2 0
github.com/muety/wakapi/utils/summary.go:90.3,91.17 2 0
github.com/muety/wakapi/utils/summary.go:86.17,88.4 1 0
github.com/muety/wakapi/utils/summary.go:91.17,93.4 1 0
github.com/muety/wakapi/utils/summary.go:106.48,110.51 2 0
github.com/muety/wakapi/utils/summary.go:113.2,113.12 1 0
github.com/muety/wakapi/utils/summary.go:110.51,112.3 1 0
github.com/muety/wakapi/config/db.go:39.50,40.19 1 0
github.com/muety/wakapi/config/db.go:53.2,53.12 1 0
github.com/muety/wakapi/config/db.go:41.23,45.5 1 0
github.com/muety/wakapi/config/db.go:46.26,49.5 1 0
github.com/muety/wakapi/config/db.go:50.24,51.48 1 0
github.com/muety/wakapi/config/db.go:56.53,66.2 1 1
github.com/muety/wakapi/config/db.go:68.56,70.16 2 1
github.com/muety/wakapi/config/db.go:74.2,81.3 1 1
github.com/muety/wakapi/config/db.go:70.16,72.3 1 0
github.com/muety/wakapi/config/db.go:84.54,86.2 1 1
github.com/muety/wakapi/config/eventbus.go:18.13,20.2 1 1
github.com/muety/wakapi/config/eventbus.go:22.26,24.2 1 0
github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0
github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0
github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0
github.com/muety/wakapi/config/sentry.go:22.35,24.2 1 0
github.com/muety/wakapi/config/sentry.go:26.62,29.2 2 0
github.com/muety/wakapi/config/sentry.go:39.33,46.2 2 0
github.com/muety/wakapi/config/sentry.go:48.79,51.2 2 0
github.com/muety/wakapi/config/sentry.go:53.72,57.2 3 0
github.com/muety/wakapi/config/sentry.go:59.71,63.2 3 0
github.com/muety/wakapi/config/sentry.go:65.71,69.2 3 0
github.com/muety/wakapi/config/sentry.go:71.72,75.2 3 0
github.com/muety/wakapi/config/sentry.go:77.72,81.2 3 0
github.com/muety/wakapi/config/sentry.go:83.67,88.18 4 0
github.com/muety/wakapi/config/sentry.go:100.2,100.28 1 0
github.com/muety/wakapi/config/sentry.go:88.18,89.65 1 0
github.com/muety/wakapi/config/sentry.go:89.65,92.42 3 0
github.com/muety/wakapi/config/sentry.go:95.4,96.10 2 0
github.com/muety/wakapi/config/sentry.go:92.42,94.5 1 0
github.com/muety/wakapi/config/sentry.go:110.50,114.91 1 0
github.com/muety/wakapi/config/sentry.go:114.91,115.29 1 0
github.com/muety/wakapi/config/sentry.go:119.4,122.38 3 0
github.com/muety/wakapi/config/sentry.go:127.4,127.39 1 0
github.com/muety/wakapi/config/sentry.go:130.4,130.69 1 0
github.com/muety/wakapi/config/sentry.go:115.29,117.5 1 0
github.com/muety/wakapi/config/sentry.go:122.38,123.38 1 0
github.com/muety/wakapi/config/sentry.go:123.38,125.6 1 0
github.com/muety/wakapi/config/sentry.go:127.39,129.5 1 0
github.com/muety/wakapi/config/sentry.go:132.79,133.27 1 0
github.com/muety/wakapi/config/sentry.go:140.4,140.16 1 0
github.com/muety/wakapi/config/sentry.go:133.27,134.84 1 0
github.com/muety/wakapi/config/sentry.go:134.84,135.42 1 0
github.com/muety/wakapi/config/sentry.go:135.42,137.7 1 0
github.com/muety/wakapi/config/sentry.go:142.17,144.3 1 0
github.com/muety/wakapi/config/sentry.go:147.49,151.51 2 0
github.com/muety/wakapi/config/sentry.go:154.2,154.12 1 0
github.com/muety/wakapi/config/sentry.go:151.51,153.3 1 0
github.com/muety/wakapi/config/utils.go:5.78,7.22 2 0
github.com/muety/wakapi/config/utils.go:13.2,13.11 1 0
github.com/muety/wakapi/config/utils.go:7.22,8.18 1 0
github.com/muety/wakapi/config/utils.go:11.3,11.12 1 0
github.com/muety/wakapi/config/utils.go:8.18,10.4 1 0
github.com/muety/wakapi/config/config.go:147.70,149.2 1 0 github.com/muety/wakapi/config/config.go:147.70,149.2 1 0
github.com/muety/wakapi/config/config.go:151.65,153.2 1 0 github.com/muety/wakapi/config/config.go:151.65,153.2 1 0
github.com/muety/wakapi/config/config.go:155.82,165.2 1 0 github.com/muety/wakapi/config/config.go:155.82,165.2 1 0
@ -233,68 +410,6 @@ github.com/muety/wakapi/config/config.go:344.70,346.3 1 0
github.com/muety/wakapi/config/config.go:348.28,350.3 1 0 github.com/muety/wakapi/config/config.go:348.28,350.3 1 0
github.com/muety/wakapi/config/config.go:352.29,355.3 2 0 github.com/muety/wakapi/config/config.go:352.29,355.3 2 0
github.com/muety/wakapi/config/config.go:357.94,359.3 1 0 github.com/muety/wakapi/config/config.go:357.94,359.3 1 0
github.com/muety/wakapi/config/db.go:39.50,40.19 1 0
github.com/muety/wakapi/config/db.go:53.2,53.12 1 0
github.com/muety/wakapi/config/db.go:41.23,45.5 1 0
github.com/muety/wakapi/config/db.go:46.26,49.5 1 0
github.com/muety/wakapi/config/db.go:50.24,51.48 1 0
github.com/muety/wakapi/config/db.go:56.53,66.2 1 1
github.com/muety/wakapi/config/db.go:68.56,70.16 2 1
github.com/muety/wakapi/config/db.go:74.2,81.3 1 1
github.com/muety/wakapi/config/db.go:70.16,72.3 1 0
github.com/muety/wakapi/config/db.go:84.54,86.2 1 1
github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0
github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0
github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0
github.com/muety/wakapi/config/sentry.go:22.35,24.2 1 0
github.com/muety/wakapi/config/sentry.go:26.62,29.2 2 0
github.com/muety/wakapi/config/sentry.go:39.33,46.2 2 0
github.com/muety/wakapi/config/sentry.go:48.79,51.2 2 0
github.com/muety/wakapi/config/sentry.go:53.72,57.2 3 0
github.com/muety/wakapi/config/sentry.go:59.71,63.2 3 0
github.com/muety/wakapi/config/sentry.go:65.71,69.2 3 0
github.com/muety/wakapi/config/sentry.go:71.72,75.2 3 0
github.com/muety/wakapi/config/sentry.go:77.72,81.2 3 0
github.com/muety/wakapi/config/sentry.go:83.67,88.18 4 0
github.com/muety/wakapi/config/sentry.go:100.2,100.28 1 0
github.com/muety/wakapi/config/sentry.go:88.18,89.65 1 0
github.com/muety/wakapi/config/sentry.go:89.65,92.42 3 0
github.com/muety/wakapi/config/sentry.go:95.4,96.10 2 0
github.com/muety/wakapi/config/sentry.go:92.42,94.5 1 0
github.com/muety/wakapi/config/sentry.go:110.50,114.91 1 0
github.com/muety/wakapi/config/sentry.go:114.91,115.29 1 0
github.com/muety/wakapi/config/sentry.go:119.4,122.38 3 0
github.com/muety/wakapi/config/sentry.go:127.4,127.39 1 0
github.com/muety/wakapi/config/sentry.go:130.4,130.69 1 0
github.com/muety/wakapi/config/sentry.go:115.29,117.5 1 0
github.com/muety/wakapi/config/sentry.go:122.38,123.38 1 0
github.com/muety/wakapi/config/sentry.go:123.38,125.6 1 0
github.com/muety/wakapi/config/sentry.go:127.39,129.5 1 0
github.com/muety/wakapi/config/sentry.go:132.79,133.27 1 0
github.com/muety/wakapi/config/sentry.go:140.4,140.16 1 0
github.com/muety/wakapi/config/sentry.go:133.27,134.84 1 0
github.com/muety/wakapi/config/sentry.go:134.84,135.42 1 0
github.com/muety/wakapi/config/sentry.go:135.42,137.7 1 0
github.com/muety/wakapi/config/sentry.go:142.17,144.3 1 0
github.com/muety/wakapi/config/sentry.go:147.49,151.51 2 0
github.com/muety/wakapi/config/sentry.go:154.2,154.12 1 0
github.com/muety/wakapi/config/sentry.go:151.51,153.3 1 0
github.com/muety/wakapi/config/utils.go:5.78,7.22 2 0
github.com/muety/wakapi/config/utils.go:13.2,13.11 1 0
github.com/muety/wakapi/config/utils.go:7.22,8.18 1 0
github.com/muety/wakapi/config/utils.go:11.3,11.12 1 0
github.com/muety/wakapi/config/utils.go:8.18,10.4 1 0
github.com/muety/wakapi/middlewares/security.go:19.62,20.43 1 0
github.com/muety/wakapi/middlewares/security.go:20.43,22.3 1 0
github.com/muety/wakapi/middlewares/security.go:25.80,26.36 1 0
github.com/muety/wakapi/middlewares/security.go:31.2,31.27 1 0
github.com/muety/wakapi/middlewares/security.go:26.36,27.30 1 0
github.com/muety/wakapi/middlewares/security.go:27.30,29.4 1 0
github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0
github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0
github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0
github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0
github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0
github.com/muety/wakapi/middlewares/authenticate.go:19.91,25.2 1 1 github.com/muety/wakapi/middlewares/authenticate.go:19.91,25.2 1 1
github.com/muety/wakapi/middlewares/authenticate.go:27.90,30.2 2 0 github.com/muety/wakapi/middlewares/authenticate.go:27.90,30.2 2 0
github.com/muety/wakapi/middlewares/authenticate.go:32.90,35.2 2 0 github.com/muety/wakapi/middlewares/authenticate.go:32.90,35.2 2 0
@ -367,143 +482,226 @@ github.com/muety/wakapi/middlewares/principal.go:54.52,56.3 1 0
github.com/muety/wakapi/middlewares/principal.go:59.49,60.52 1 0 github.com/muety/wakapi/middlewares/principal.go:59.49,60.52 1 0
github.com/muety/wakapi/middlewares/principal.go:63.2,63.12 1 0 github.com/muety/wakapi/middlewares/principal.go:63.2,63.12 1 0
github.com/muety/wakapi/middlewares/principal.go:60.52,62.3 1 0 github.com/muety/wakapi/middlewares/principal.go:60.52,62.3 1 0
github.com/muety/wakapi/utils/summary.go:10.66,11.40 1 0 github.com/muety/wakapi/middlewares/security.go:19.62,20.43 1 0
github.com/muety/wakapi/utils/summary.go:16.2,16.48 1 0 github.com/muety/wakapi/middlewares/security.go:20.43,22.3 1 0
github.com/muety/wakapi/utils/summary.go:11.40,12.27 1 0 github.com/muety/wakapi/middlewares/security.go:25.80,26.36 1 0
github.com/muety/wakapi/utils/summary.go:12.27,14.4 1 0 github.com/muety/wakapi/middlewares/security.go:31.2,31.27 1 0
github.com/muety/wakapi/utils/summary.go:19.88,22.2 2 0 github.com/muety/wakapi/middlewares/security.go:26.36,27.30 1 0
github.com/muety/wakapi/utils/summary.go:24.95,26.16 2 0 github.com/muety/wakapi/middlewares/security.go:27.30,29.4 1 0
github.com/muety/wakapi/utils/summary.go:29.2,29.38 1 0 github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0
github.com/muety/wakapi/utils/summary.go:26.16,28.3 1 0 github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0
github.com/muety/wakapi/utils/summary.go:32.105,35.18 2 0 github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0
github.com/muety/wakapi/utils/summary.go:70.2,70.22 1 0 github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0
github.com/muety/wakapi/utils/summary.go:36.28,37.26 1 0 github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0
github.com/muety/wakapi/utils/summary.go:38.32,40.24 2 0 github.com/muety/wakapi/services/language_mapping.go:18.118,24.2 1 0
github.com/muety/wakapi/utils/summary.go:41.31,42.29 1 0 github.com/muety/wakapi/services/language_mapping.go:26.86,28.2 1 0
github.com/muety/wakapi/utils/summary.go:43.31,45.27 2 0 github.com/muety/wakapi/services/language_mapping.go:30.96,31.53 1 0
github.com/muety/wakapi/utils/summary.go:46.32,47.30 1 0 github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0
github.com/muety/wakapi/utils/summary.go:48.32,50.28 2 0 github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0
github.com/muety/wakapi/utils/summary.go:51.31,52.29 1 0 github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0
github.com/muety/wakapi/utils/summary.go:53.32,54.44 1 0 github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0
github.com/muety/wakapi/utils/summary.go:55.41,57.42 2 0 github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0
github.com/muety/wakapi/utils/summary.go:58.33,59.45 1 0 github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0
github.com/muety/wakapi/utils/summary.go:60.33,61.45 1 0 github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0
github.com/muety/wakapi/utils/summary.go:62.35,63.45 1 0 github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0
github.com/muety/wakapi/utils/summary.go:64.26,65.21 1 0 github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0
github.com/muety/wakapi/utils/summary.go:66.10,67.39 1 0 github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0
github.com/muety/wakapi/utils/summary.go:73.73,80.56 5 0 github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0
github.com/muety/wakapi/utils/summary.go:96.2,103.8 2 0 github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0
github.com/muety/wakapi/utils/summary.go:80.56,82.3 1 0 github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0
github.com/muety/wakapi/utils/summary.go:82.8,82.54 1 0 github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0
github.com/muety/wakapi/utils/summary.go:82.54,84.3 1 0 github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0
github.com/muety/wakapi/utils/summary.go:84.8,86.17 2 0 github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0
github.com/muety/wakapi/utils/summary.go:90.3,91.17 2 0 github.com/muety/wakapi/services/misc.go:23.126,30.2 1 0
github.com/muety/wakapi/utils/summary.go:86.17,88.4 1 0 github.com/muety/wakapi/services/misc.go:42.50,44.48 1 0
github.com/muety/wakapi/utils/summary.go:91.17,93.4 1 0 github.com/muety/wakapi/services/misc.go:48.2,50.19 3 0
github.com/muety/wakapi/utils/summary.go:106.48,110.51 2 0 github.com/muety/wakapi/services/misc.go:44.48,46.3 1 0
github.com/muety/wakapi/utils/summary.go:113.2,113.12 1 0 github.com/muety/wakapi/services/misc.go:53.51,59.40 4 0
github.com/muety/wakapi/utils/summary.go:110.51,112.3 1 0 github.com/muety/wakapi/services/misc.go:63.2,66.56 2 0
github.com/muety/wakapi/utils/template.go:8.41,10.16 2 0 github.com/muety/wakapi/services/misc.go:77.2,77.12 1 0
github.com/muety/wakapi/utils/template.go:13.2,13.23 1 0 github.com/muety/wakapi/services/misc.go:59.40,61.3 1 0
github.com/muety/wakapi/utils/template.go:10.16,12.3 1 0 github.com/muety/wakapi/services/misc.go:66.56,67.27 1 0
github.com/muety/wakapi/utils/template.go:16.37,17.30 1 0 github.com/muety/wakapi/services/misc.go:67.27,72.4 1 0
github.com/muety/wakapi/utils/template.go:20.2,20.10 1 0 github.com/muety/wakapi/services/misc.go:73.8,75.3 1 0
github.com/muety/wakapi/utils/template.go:17.30,19.3 1 0 github.com/muety/wakapi/services/misc.go:80.116,81.24 1 0
github.com/muety/wakapi/utils/auth.go:16.79,18.54 2 0 github.com/muety/wakapi/services/misc.go:81.24,82.151 1 0
github.com/muety/wakapi/utils/auth.go:22.2,24.16 3 0 github.com/muety/wakapi/services/misc.go:91.3,91.48 1 0
github.com/muety/wakapi/utils/auth.go:28.2,30.45 3 0 github.com/muety/wakapi/services/misc.go:82.151,84.4 1 0
github.com/muety/wakapi/utils/auth.go:33.2,34.32 2 0 github.com/muety/wakapi/services/misc.go:84.9,90.4 2 0
github.com/muety/wakapi/utils/auth.go:18.54,20.3 1 0 github.com/muety/wakapi/services/misc.go:91.48,94.4 2 0
github.com/muety/wakapi/utils/auth.go:24.16,26.3 1 0 github.com/muety/wakapi/services/misc.go:98.86,101.30 3 0
github.com/muety/wakapi/utils/auth.go:30.45,32.3 1 0 github.com/muety/wakapi/services/misc.go:106.2,109.17 1 0
github.com/muety/wakapi/utils/auth.go:37.65,39.85 2 0 github.com/muety/wakapi/services/misc.go:113.2,116.17 1 0
github.com/muety/wakapi/utils/auth.go:43.2,44.30 2 0 github.com/muety/wakapi/services/misc.go:101.30,104.3 2 0
github.com/muety/wakapi/utils/auth.go:39.85,41.3 1 0 github.com/muety/wakapi/services/misc.go:109.17,111.3 1 0
github.com/muety/wakapi/utils/auth.go:47.94,49.16 2 0 github.com/muety/wakapi/services/misc.go:116.17,118.3 1 0
github.com/muety/wakapi/utils/auth.go:53.2,53.107 1 0 github.com/muety/wakapi/services/user.go:21.73,28.2 1 0
github.com/muety/wakapi/utils/auth.go:57.2,57.22 1 0 github.com/muety/wakapi/services/user.go:30.74,31.40 1 0
github.com/muety/wakapi/utils/auth.go:49.16,51.3 1 0 github.com/muety/wakapi/services/user.go:35.2,36.16 2 0
github.com/muety/wakapi/utils/auth.go:53.107,55.3 1 0 github.com/muety/wakapi/services/user.go:40.2,41.15 2 0
github.com/muety/wakapi/utils/auth.go:60.56,64.2 3 0 github.com/muety/wakapi/services/user.go:31.40,33.3 1 0
github.com/muety/wakapi/utils/auth.go:66.55,69.16 3 0 github.com/muety/wakapi/services/user.go:36.16,38.3 1 0
github.com/muety/wakapi/utils/auth.go:72.2,72.16 1 0 github.com/muety/wakapi/services/user.go:44.72,45.37 1 0
github.com/muety/wakapi/utils/auth.go:69.16,71.3 1 0 github.com/muety/wakapi/services/user.go:49.2,50.16 2 0
github.com/muety/wakapi/utils/color.go:8.90,10.32 2 0 github.com/muety/wakapi/services/user.go:54.2,55.15 2 0
github.com/muety/wakapi/utils/color.go:15.2,15.15 1 0 github.com/muety/wakapi/services/user.go:45.37,47.3 1 0
github.com/muety/wakapi/utils/color.go:10.32,11.50 1 0 github.com/muety/wakapi/services/user.go:50.16,52.3 1 0
github.com/muety/wakapi/utils/color.go:11.50,13.4 1 0 github.com/muety/wakapi/services/user.go:58.76,60.2 1 0
github.com/muety/wakapi/utils/common.go:18.73,19.58 1 0 github.com/muety/wakapi/services/user.go:62.86,64.2 1 0
github.com/muety/wakapi/utils/common.go:22.2,22.87 1 0 github.com/muety/wakapi/services/user.go:66.58,68.2 1 0
github.com/muety/wakapi/utils/common.go:25.2,25.64 1 0 github.com/muety/wakapi/services/user.go:70.86,72.2 1 0
github.com/muety/wakapi/utils/common.go:19.58,21.3 1 0 github.com/muety/wakapi/services/user.go:74.61,77.2 2 0
github.com/muety/wakapi/utils/common.go:22.87,24.3 1 0 github.com/muety/wakapi/services/user.go:79.48,81.2 1 0
github.com/muety/wakapi/utils/common.go:28.40,30.2 1 0 github.com/muety/wakapi/services/user.go:83.102,93.93 2 0
github.com/muety/wakapi/utils/common.go:32.44,34.2 1 0 github.com/muety/wakapi/services/user.go:99.2,99.38 1 0
github.com/muety/wakapi/utils/common.go:36.45,38.2 1 0 github.com/muety/wakapi/services/user.go:93.93,95.3 1 0
github.com/muety/wakapi/utils/common.go:40.24,42.2 1 0 github.com/muety/wakapi/services/user.go:95.8,97.3 1 0
github.com/muety/wakapi/utils/common.go:44.56,47.45 3 1 github.com/muety/wakapi/services/user.go:102.73,106.2 3 0
github.com/muety/wakapi/utils/common.go:50.2,50.40 1 1 github.com/muety/wakapi/services/user.go:108.78,112.2 3 0
github.com/muety/wakapi/utils/common.go:47.45,49.3 1 1 github.com/muety/wakapi/services/user.go:114.99,117.2 2 0
github.com/muety/wakapi/utils/date.go:8.43,10.2 1 1 github.com/muety/wakapi/services/user.go:119.106,122.96 3 0
github.com/muety/wakapi/utils/date.go:12.48,14.2 1 0 github.com/muety/wakapi/services/user.go:127.2,127.68 1 0
github.com/muety/wakapi/utils/date.go:16.41,18.21 2 1 github.com/muety/wakapi/services/user.go:122.96,124.3 1 0
github.com/muety/wakapi/utils/date.go:21.2,21.23 1 1 github.com/muety/wakapi/services/user.go:124.8,126.3 1 0
github.com/muety/wakapi/utils/date.go:18.21,20.3 1 0 github.com/muety/wakapi/services/user.go:130.85,132.2 1 0
github.com/muety/wakapi/utils/date.go:24.46,26.2 1 0 github.com/muety/wakapi/services/user.go:134.57,141.2 4 0
github.com/muety/wakapi/utils/date.go:28.51,30.2 1 0 github.com/muety/wakapi/services/user.go:143.38,145.2 1 0
github.com/muety/wakapi/utils/date.go:32.44,35.2 2 1 github.com/muety/wakapi/services/user.go:147.57,152.2 1 0
github.com/muety/wakapi/utils/date.go:37.52,39.2 1 0 github.com/muety/wakapi/services/alias.go:17.77,22.2 1 1
github.com/muety/wakapi/utils/date.go:41.45,43.2 1 0 github.com/muety/wakapi/services/alias.go:26.60,27.43 1 1
github.com/muety/wakapi/utils/date.go:45.51,47.2 1 0 github.com/muety/wakapi/services/alias.go:30.2,30.14 1 1
github.com/muety/wakapi/utils/date.go:49.44,51.2 1 0 github.com/muety/wakapi/services/alias.go:27.43,29.3 1 1
github.com/muety/wakapi/utils/date.go:54.42,56.2 1 1 github.com/muety/wakapi/services/alias.go:33.62,35.16 2 1
github.com/muety/wakapi/utils/date.go:59.41,61.21 2 1 github.com/muety/wakapi/services/alias.go:38.2,38.12 1 1
github.com/muety/wakapi/utils/date.go:64.2,64.36 1 1 github.com/muety/wakapi/services/alias.go:35.16,37.3 1 1
github.com/muety/wakapi/utils/date.go:61.21,63.3 1 1 github.com/muety/wakapi/services/alias.go:41.76,43.16 2 0
github.com/muety/wakapi/utils/date.go:68.63,70.2 1 0 github.com/muety/wakapi/services/alias.go:46.2,46.21 1 0
github.com/muety/wakapi/utils/date.go:73.62,79.2 5 0 github.com/muety/wakapi/services/alias.go:43.16,45.3 1 0
github.com/muety/wakapi/utils/date.go:82.67,85.33 2 1 github.com/muety/wakapi/services/alias.go:49.113,51.16 2 0
github.com/muety/wakapi/utils/date.go:94.2,94.18 1 1 github.com/muety/wakapi/services/alias.go:54.2,54.21 1 0
github.com/muety/wakapi/utils/date.go:85.33,87.19 2 1 github.com/muety/wakapi/services/alias.go:51.16,53.3 1 0
github.com/muety/wakapi/utils/date.go:90.3,91.10 2 1 github.com/muety/wakapi/services/alias.go:57.108,58.32 1 1
github.com/muety/wakapi/utils/date.go:87.19,89.4 1 1 github.com/muety/wakapi/services/alias.go:64.2,65.46 2 1
github.com/muety/wakapi/utils/date.go:97.50,103.2 5 0 github.com/muety/wakapi/services/alias.go:70.2,70.19 1 1
github.com/muety/wakapi/utils/date.go:106.79,109.36 3 1 github.com/muety/wakapi/services/alias.go:58.32,59.52 1 1
github.com/muety/wakapi/utils/date.go:113.2,113.21 1 1 github.com/muety/wakapi/services/alias.go:59.52,61.4 1 1
github.com/muety/wakapi/utils/date.go:117.2,117.21 1 1 github.com/muety/wakapi/services/alias.go:65.46,66.48 1 1
github.com/muety/wakapi/utils/date.go:121.2,121.13 1 1 github.com/muety/wakapi/services/alias.go:66.48,68.4 1 1
github.com/muety/wakapi/utils/date.go:109.36,112.3 2 0 github.com/muety/wakapi/services/alias.go:73.77,75.16 2 0
github.com/muety/wakapi/utils/date.go:113.21,116.3 2 1 github.com/muety/wakapi/services/alias.go:78.2,79.20 2 0
github.com/muety/wakapi/utils/date.go:117.21,120.3 2 1 github.com/muety/wakapi/services/alias.go:75.16,77.3 1 0
github.com/muety/wakapi/utils/filesystem.go:14.68,16.16 2 0 github.com/muety/wakapi/services/alias.go:82.60,83.24 1 0
github.com/muety/wakapi/utils/filesystem.go:20.2,21.15 2 0 github.com/muety/wakapi/services/alias.go:86.2,88.12 3 0
github.com/muety/wakapi/utils/filesystem.go:33.2,33.15 1 0 github.com/muety/wakapi/services/alias.go:83.24,85.3 1 0
github.com/muety/wakapi/utils/filesystem.go:16.16,18.3 1 0 github.com/muety/wakapi/services/alias.go:91.69,94.28 3 0
github.com/muety/wakapi/utils/filesystem.go:21.15,23.47 2 0 github.com/muety/wakapi/services/alias.go:102.2,104.31 2 0
github.com/muety/wakapi/utils/filesystem.go:23.47,25.23 2 0 github.com/muety/wakapi/services/alias.go:108.2,108.12 1 0
github.com/muety/wakapi/utils/filesystem.go:29.4,29.19 1 0 github.com/muety/wakapi/services/alias.go:94.28,95.21 1 0
github.com/muety/wakapi/utils/filesystem.go:25.23,27.5 1 0 github.com/muety/wakapi/services/alias.go:98.3,99.16 2 0
github.com/muety/wakapi/utils/http.go:9.90,12.58 3 0 github.com/muety/wakapi/services/alias.go:95.21,97.4 1 0
github.com/muety/wakapi/utils/http.go:12.58,14.3 1 0 github.com/muety/wakapi/services/alias.go:104.31,106.3 1 0
github.com/muety/wakapi/utils/strings.go:8.34,10.2 1 0 github.com/muety/wakapi/services/alias.go:111.52,112.51 1 0
github.com/muety/wakapi/utils/strings.go:12.77,13.29 1 0 github.com/muety/wakapi/services/alias.go:112.51,114.3 1 0
github.com/muety/wakapi/utils/strings.go:18.2,18.19 1 0 github.com/muety/wakapi/services/heartbeat.go:17.141,23.2 1 0
github.com/muety/wakapi/utils/strings.go:13.29,14.18 1 0 github.com/muety/wakapi/services/heartbeat.go:25.72,27.2 1 0
github.com/muety/wakapi/utils/strings.go:14.18,16.4 1 0 github.com/muety/wakapi/services/heartbeat.go:29.80,34.32 3 0
github.com/muety/wakapi/services/report.go:22.122,30.2 1 0 github.com/muety/wakapi/services/heartbeat.go:41.2,41.55 1 0
github.com/muety/wakapi/services/report.go:32.38,36.16 3 0 github.com/muety/wakapi/services/heartbeat.go:34.32,35.36 1 0
github.com/muety/wakapi/services/report.go:40.2,41.26 2 0 github.com/muety/wakapi/services/heartbeat.go:35.36,38.4 2 0
github.com/muety/wakapi/services/report.go:36.16,38.3 1 0 github.com/muety/wakapi/services/heartbeat.go:44.53,46.2 1 0
github.com/muety/wakapi/services/report.go:41.26,43.3 1 0 github.com/muety/wakapi/services/heartbeat.go:48.76,50.2 1 0
github.com/muety/wakapi/services/report.go:46.62,51.65 3 0 github.com/muety/wakapi/services/heartbeat.go:52.96,54.2 1 0
github.com/muety/wakapi/services/report.go:59.2,59.65 1 0 github.com/muety/wakapi/services/heartbeat.go:56.111,58.16 2 0
github.com/muety/wakapi/services/report.go:51.65,56.3 4 0 github.com/muety/wakapi/services/heartbeat.go:61.2,61.43 1 0
github.com/muety/wakapi/services/report.go:59.65,69.3 4 0 github.com/muety/wakapi/services/heartbeat.go:58.16,60.3 1 0
github.com/muety/wakapi/services/report.go:72.80,77.16 4 0 github.com/muety/wakapi/services/heartbeat.go:64.92,66.2 1 0
github.com/muety/wakapi/services/report.go:82.2,89.65 2 0 github.com/muety/wakapi/services/heartbeat.go:68.116,70.2 1 0
github.com/muety/wakapi/services/report.go:94.2,95.12 2 0 github.com/muety/wakapi/services/heartbeat.go:72.78,74.2 1 0
github.com/muety/wakapi/services/report.go:77.16,80.3 2 0 github.com/muety/wakapi/services/heartbeat.go:76.62,78.2 1 0
github.com/muety/wakapi/services/report.go:89.65,92.3 2 0 github.com/muety/wakapi/services/heartbeat.go:80.116,82.16 2 0
github.com/muety/wakapi/services/heartbeat.go:86.2,86.28 1 0
github.com/muety/wakapi/services/heartbeat.go:90.2,90.24 1 0
github.com/muety/wakapi/services/heartbeat.go:82.16,84.3 1 0
github.com/muety/wakapi/services/heartbeat.go:86.28,88.3 1 0
github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0
github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0
github.com/muety/wakapi/services/key_value.go:25.78,27.16 2 0
github.com/muety/wakapi/services/key_value.go:33.2,33.11 1 0
github.com/muety/wakapi/services/key_value.go:27.16,32.3 1 0
github.com/muety/wakapi/services/key_value.go:36.72,38.2 1 0
github.com/muety/wakapi/services/key_value.go:40.60,42.2 1 0
github.com/muety/wakapi/services/aggregation.go:29.142,37.2 1 0
github.com/muety/wakapi/services/aggregation.go:46.43,48.37 1 0
github.com/muety/wakapi/services/aggregation.go:52.2,54.19 3 0
github.com/muety/wakapi/services/aggregation.go:48.37,50.3 1 0
github.com/muety/wakapi/services/aggregation.go:57.67,58.47 1 0
github.com/muety/wakapi/services/aggregation.go:61.2,66.40 4 0
github.com/muety/wakapi/services/aggregation.go:70.2,70.50 1 0
github.com/muety/wakapi/services/aggregation.go:75.2,75.60 1 0
github.com/muety/wakapi/services/aggregation.go:81.2,81.35 1 0
github.com/muety/wakapi/services/aggregation.go:58.47,60.3 1 0
github.com/muety/wakapi/services/aggregation.go:66.40,68.3 1 0
github.com/muety/wakapi/services/aggregation.go:70.50,72.3 1 0
github.com/muety/wakapi/services/aggregation.go:75.60,79.3 3 0
github.com/muety/wakapi/services/aggregation.go:84.109,85.24 1 0
github.com/muety/wakapi/services/aggregation.go:85.24,86.111 1 0
github.com/muety/wakapi/services/aggregation.go:86.111,88.4 1 0
github.com/muety/wakapi/services/aggregation.go:88.9,91.4 2 0
github.com/muety/wakapi/services/aggregation.go:95.80,96.33 1 0
github.com/muety/wakapi/services/aggregation.go:96.33,97.60 1 0
github.com/muety/wakapi/services/aggregation.go:97.60,99.4 1 0
github.com/muety/wakapi/services/aggregation.go:103.100,107.59 3 0
github.com/muety/wakapi/services/aggregation.go:122.2,123.16 2 0
github.com/muety/wakapi/services/aggregation.go:129.2,130.16 2 0
github.com/muety/wakapi/services/aggregation.go:136.2,137.44 2 0
github.com/muety/wakapi/services/aggregation.go:142.2,142.41 1 0
github.com/muety/wakapi/services/aggregation.go:156.2,156.12 1 0
github.com/muety/wakapi/services/aggregation.go:107.59,110.3 2 0
github.com/muety/wakapi/services/aggregation.go:110.8,110.47 1 0
github.com/muety/wakapi/services/aggregation.go:110.47,112.30 2 0
github.com/muety/wakapi/services/aggregation.go:112.30,113.43 1 0
github.com/muety/wakapi/services/aggregation.go:113.43,115.5 1 0
github.com/muety/wakapi/services/aggregation.go:117.8,119.3 1 0
github.com/muety/wakapi/services/aggregation.go:123.16,126.3 2 0
github.com/muety/wakapi/services/aggregation.go:130.16,133.3 2 0
github.com/muety/wakapi/services/aggregation.go:137.44,139.3 1 0
github.com/muety/wakapi/services/aggregation.go:142.41,143.21 1 0
github.com/muety/wakapi/services/aggregation.go:143.21,147.4 1 0
github.com/muety/wakapi/services/aggregation.go:147.9,147.62 1 0
github.com/muety/wakapi/services/aggregation.go:147.62,151.4 1 0
github.com/muety/wakapi/services/aggregation.go:159.73,162.27 3 0
github.com/muety/wakapi/services/aggregation.go:167.2,167.27 1 0
github.com/muety/wakapi/services/aggregation.go:170.2,170.12 1 0
github.com/muety/wakapi/services/aggregation.go:162.27,163.39 1 0
github.com/muety/wakapi/services/aggregation.go:163.39,165.4 1 0
github.com/muety/wakapi/services/aggregation.go:167.27,169.3 1 0
github.com/muety/wakapi/services/aggregation.go:173.69,176.27 3 0
github.com/muety/wakapi/services/aggregation.go:176.27,178.3 1 0
github.com/muety/wakapi/services/aggregation.go:181.83,196.41 5 0
github.com/muety/wakapi/services/aggregation.go:196.41,206.3 3 0
github.com/muety/wakapi/services/aggregation.go:209.34,212.2 2 0
github.com/muety/wakapi/services/report.go:24.122,35.33 3 0
github.com/muety/wakapi/services/report.go:41.2,41.12 1 0
github.com/muety/wakapi/services/report.go:35.33,36.31 1 0
github.com/muety/wakapi/services/report.go:36.31,38.4 1 0
github.com/muety/wakapi/services/report.go:44.38,48.16 3 0
github.com/muety/wakapi/services/report.go:52.2,53.26 2 0
github.com/muety/wakapi/services/report.go:48.16,50.3 1 0
github.com/muety/wakapi/services/report.go:53.26,55.3 1 0
github.com/muety/wakapi/services/report.go:60.61,65.65 3 0
github.com/muety/wakapi/services/report.go:73.2,73.65 1 0
github.com/muety/wakapi/services/report.go:85.2,85.24 1 0
github.com/muety/wakapi/services/report.go:65.65,70.3 4 0
github.com/muety/wakapi/services/report.go:73.65,83.3 4 0
github.com/muety/wakapi/services/report.go:88.80,89.22 1 0
github.com/muety/wakapi/services/report.go:93.2,93.29 1 0
github.com/muety/wakapi/services/report.go:98.2,102.16 4 0
github.com/muety/wakapi/services/report.go:107.2,114.65 2 0
github.com/muety/wakapi/services/report.go:119.2,120.12 2 0
github.com/muety/wakapi/services/report.go:89.22,91.3 1 0
github.com/muety/wakapi/services/report.go:93.29,96.3 2 0
github.com/muety/wakapi/services/report.go:102.16,105.3 2 0
github.com/muety/wakapi/services/report.go:114.65,117.3 2 0
github.com/muety/wakapi/services/summary.go:28.149,36.2 1 1 github.com/muety/wakapi/services/summary.go:28.149,36.2 1 1
github.com/muety/wakapi/services/summary.go:40.136,43.66 2 1 github.com/muety/wakapi/services/summary.go:40.136,43.66 2 1
github.com/muety/wakapi/services/summary.go:48.2,48.44 1 1 github.com/muety/wakapi/services/summary.go:48.2,48.44 1 1
@ -597,189 +795,3 @@ github.com/muety/wakapi/services/summary.go:344.54,346.3 1 1
github.com/muety/wakapi/services/summary.go:351.59,353.25 2 1 github.com/muety/wakapi/services/summary.go:351.59,353.25 2 1
github.com/muety/wakapi/services/summary.go:356.2,356.32 1 1 github.com/muety/wakapi/services/summary.go:356.2,356.32 1 1
github.com/muety/wakapi/services/summary.go:353.25,355.3 1 1 github.com/muety/wakapi/services/summary.go:353.25,355.3 1 1
github.com/muety/wakapi/services/user.go:19.73,25.2 1 0
github.com/muety/wakapi/services/user.go:27.74,28.40 1 0
github.com/muety/wakapi/services/user.go:32.2,33.16 2 0
github.com/muety/wakapi/services/user.go:37.2,38.15 2 0
github.com/muety/wakapi/services/user.go:28.40,30.3 1 0
github.com/muety/wakapi/services/user.go:33.16,35.3 1 0
github.com/muety/wakapi/services/user.go:41.72,42.37 1 0
github.com/muety/wakapi/services/user.go:46.2,47.16 2 0
github.com/muety/wakapi/services/user.go:51.2,52.15 2 0
github.com/muety/wakapi/services/user.go:42.37,44.3 1 0
github.com/muety/wakapi/services/user.go:47.16,49.3 1 0
github.com/muety/wakapi/services/user.go:55.76,57.2 1 0
github.com/muety/wakapi/services/user.go:59.86,61.2 1 0
github.com/muety/wakapi/services/user.go:63.58,65.2 1 0
github.com/muety/wakapi/services/user.go:67.86,69.2 1 0
github.com/muety/wakapi/services/user.go:71.61,74.2 2 0
github.com/muety/wakapi/services/user.go:76.48,78.2 1 0
github.com/muety/wakapi/services/user.go:80.102,90.93 2 0
github.com/muety/wakapi/services/user.go:96.2,96.38 1 0
github.com/muety/wakapi/services/user.go:90.93,92.3 1 0
github.com/muety/wakapi/services/user.go:92.8,94.3 1 0
github.com/muety/wakapi/services/user.go:99.73,102.2 2 0
github.com/muety/wakapi/services/user.go:104.78,108.2 3 0
github.com/muety/wakapi/services/user.go:110.99,113.2 2 0
github.com/muety/wakapi/services/user.go:115.106,118.96 3 0
github.com/muety/wakapi/services/user.go:123.2,123.68 1 0
github.com/muety/wakapi/services/user.go:118.96,120.3 1 0
github.com/muety/wakapi/services/user.go:120.8,122.3 1 0
github.com/muety/wakapi/services/user.go:126.85,128.2 1 0
github.com/muety/wakapi/services/user.go:130.57,133.2 2 0
github.com/muety/wakapi/services/user.go:135.38,137.2 1 0
github.com/muety/wakapi/services/aggregation.go:29.142,37.2 1 0
github.com/muety/wakapi/services/aggregation.go:46.43,48.37 1 0
github.com/muety/wakapi/services/aggregation.go:52.2,54.19 3 0
github.com/muety/wakapi/services/aggregation.go:48.37,50.3 1 0
github.com/muety/wakapi/services/aggregation.go:57.67,58.47 1 0
github.com/muety/wakapi/services/aggregation.go:61.2,66.40 4 0
github.com/muety/wakapi/services/aggregation.go:70.2,70.50 1 0
github.com/muety/wakapi/services/aggregation.go:75.2,75.60 1 0
github.com/muety/wakapi/services/aggregation.go:81.2,81.35 1 0
github.com/muety/wakapi/services/aggregation.go:58.47,60.3 1 0
github.com/muety/wakapi/services/aggregation.go:66.40,68.3 1 0
github.com/muety/wakapi/services/aggregation.go:70.50,72.3 1 0
github.com/muety/wakapi/services/aggregation.go:75.60,79.3 3 0
github.com/muety/wakapi/services/aggregation.go:84.109,85.24 1 0
github.com/muety/wakapi/services/aggregation.go:85.24,86.111 1 0
github.com/muety/wakapi/services/aggregation.go:86.111,88.4 1 0
github.com/muety/wakapi/services/aggregation.go:88.9,91.4 2 0
github.com/muety/wakapi/services/aggregation.go:95.80,96.33 1 0
github.com/muety/wakapi/services/aggregation.go:96.33,97.60 1 0
github.com/muety/wakapi/services/aggregation.go:97.60,99.4 1 0
github.com/muety/wakapi/services/aggregation.go:103.100,107.59 3 0
github.com/muety/wakapi/services/aggregation.go:122.2,123.16 2 0
github.com/muety/wakapi/services/aggregation.go:129.2,130.16 2 0
github.com/muety/wakapi/services/aggregation.go:136.2,137.44 2 0
github.com/muety/wakapi/services/aggregation.go:142.2,142.41 1 0
github.com/muety/wakapi/services/aggregation.go:156.2,156.12 1 0
github.com/muety/wakapi/services/aggregation.go:107.59,110.3 2 0
github.com/muety/wakapi/services/aggregation.go:110.8,110.47 1 0
github.com/muety/wakapi/services/aggregation.go:110.47,112.30 2 0
github.com/muety/wakapi/services/aggregation.go:112.30,113.43 1 0
github.com/muety/wakapi/services/aggregation.go:113.43,115.5 1 0
github.com/muety/wakapi/services/aggregation.go:117.8,119.3 1 0
github.com/muety/wakapi/services/aggregation.go:123.16,126.3 2 0
github.com/muety/wakapi/services/aggregation.go:130.16,133.3 2 0
github.com/muety/wakapi/services/aggregation.go:137.44,139.3 1 0
github.com/muety/wakapi/services/aggregation.go:142.41,143.21 1 0
github.com/muety/wakapi/services/aggregation.go:143.21,147.4 1 0
github.com/muety/wakapi/services/aggregation.go:147.9,147.62 1 0
github.com/muety/wakapi/services/aggregation.go:147.62,151.4 1 0
github.com/muety/wakapi/services/aggregation.go:159.73,162.27 3 0
github.com/muety/wakapi/services/aggregation.go:167.2,167.27 1 0
github.com/muety/wakapi/services/aggregation.go:170.2,170.12 1 0
github.com/muety/wakapi/services/aggregation.go:162.27,163.39 1 0
github.com/muety/wakapi/services/aggregation.go:163.39,165.4 1 0
github.com/muety/wakapi/services/aggregation.go:167.27,169.3 1 0
github.com/muety/wakapi/services/aggregation.go:173.69,176.27 3 0
github.com/muety/wakapi/services/aggregation.go:176.27,178.3 1 0
github.com/muety/wakapi/services/aggregation.go:181.83,196.41 5 0
github.com/muety/wakapi/services/aggregation.go:196.41,206.3 3 0
github.com/muety/wakapi/services/aggregation.go:209.34,212.2 2 0
github.com/muety/wakapi/services/alias.go:17.77,22.2 1 1
github.com/muety/wakapi/services/alias.go:26.60,27.43 1 1
github.com/muety/wakapi/services/alias.go:30.2,30.14 1 1
github.com/muety/wakapi/services/alias.go:27.43,29.3 1 1
github.com/muety/wakapi/services/alias.go:33.62,35.16 2 1
github.com/muety/wakapi/services/alias.go:38.2,38.12 1 1
github.com/muety/wakapi/services/alias.go:35.16,37.3 1 1
github.com/muety/wakapi/services/alias.go:41.76,43.16 2 0
github.com/muety/wakapi/services/alias.go:46.2,46.21 1 0
github.com/muety/wakapi/services/alias.go:43.16,45.3 1 0
github.com/muety/wakapi/services/alias.go:49.113,51.16 2 0
github.com/muety/wakapi/services/alias.go:54.2,54.21 1 0
github.com/muety/wakapi/services/alias.go:51.16,53.3 1 0
github.com/muety/wakapi/services/alias.go:57.108,58.32 1 1
github.com/muety/wakapi/services/alias.go:64.2,65.46 2 1
github.com/muety/wakapi/services/alias.go:70.2,70.19 1 1
github.com/muety/wakapi/services/alias.go:58.32,59.52 1 1
github.com/muety/wakapi/services/alias.go:59.52,61.4 1 1
github.com/muety/wakapi/services/alias.go:65.46,66.48 1 1
github.com/muety/wakapi/services/alias.go:66.48,68.4 1 1
github.com/muety/wakapi/services/alias.go:73.77,75.16 2 0
github.com/muety/wakapi/services/alias.go:78.2,79.20 2 0
github.com/muety/wakapi/services/alias.go:75.16,77.3 1 0
github.com/muety/wakapi/services/alias.go:82.60,83.24 1 0
github.com/muety/wakapi/services/alias.go:86.2,88.12 3 0
github.com/muety/wakapi/services/alias.go:83.24,85.3 1 0
github.com/muety/wakapi/services/alias.go:91.69,94.28 3 0
github.com/muety/wakapi/services/alias.go:102.2,104.31 2 0
github.com/muety/wakapi/services/alias.go:108.2,108.12 1 0
github.com/muety/wakapi/services/alias.go:94.28,95.21 1 0
github.com/muety/wakapi/services/alias.go:98.3,99.16 2 0
github.com/muety/wakapi/services/alias.go:95.21,97.4 1 0
github.com/muety/wakapi/services/alias.go:104.31,106.3 1 0
github.com/muety/wakapi/services/alias.go:111.52,112.51 1 0
github.com/muety/wakapi/services/alias.go:112.51,114.3 1 0
github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0
github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0
github.com/muety/wakapi/services/key_value.go:25.78,27.16 2 0
github.com/muety/wakapi/services/key_value.go:33.2,33.11 1 0
github.com/muety/wakapi/services/key_value.go:27.16,32.3 1 0
github.com/muety/wakapi/services/key_value.go:36.72,38.2 1 0
github.com/muety/wakapi/services/key_value.go:40.60,42.2 1 0
github.com/muety/wakapi/services/misc.go:23.126,30.2 1 0
github.com/muety/wakapi/services/misc.go:42.50,44.48 1 0
github.com/muety/wakapi/services/misc.go:48.2,50.19 3 0
github.com/muety/wakapi/services/misc.go:44.48,46.3 1 0
github.com/muety/wakapi/services/misc.go:53.51,59.40 4 0
github.com/muety/wakapi/services/misc.go:63.2,66.56 2 0
github.com/muety/wakapi/services/misc.go:77.2,77.12 1 0
github.com/muety/wakapi/services/misc.go:59.40,61.3 1 0
github.com/muety/wakapi/services/misc.go:66.56,67.27 1 0
github.com/muety/wakapi/services/misc.go:67.27,72.4 1 0
github.com/muety/wakapi/services/misc.go:73.8,75.3 1 0
github.com/muety/wakapi/services/misc.go:80.116,81.24 1 0
github.com/muety/wakapi/services/misc.go:81.24,82.151 1 0
github.com/muety/wakapi/services/misc.go:91.3,91.48 1 0
github.com/muety/wakapi/services/misc.go:82.151,84.4 1 0
github.com/muety/wakapi/services/misc.go:84.9,90.4 2 0
github.com/muety/wakapi/services/misc.go:91.48,94.4 2 0
github.com/muety/wakapi/services/misc.go:98.86,101.30 3 0
github.com/muety/wakapi/services/misc.go:106.2,109.17 1 0
github.com/muety/wakapi/services/misc.go:113.2,116.17 1 0
github.com/muety/wakapi/services/misc.go:101.30,104.3 2 0
github.com/muety/wakapi/services/misc.go:109.17,111.3 1 0
github.com/muety/wakapi/services/misc.go:116.17,118.3 1 0
github.com/muety/wakapi/services/heartbeat.go:17.141,23.2 1 0
github.com/muety/wakapi/services/heartbeat.go:25.72,27.2 1 0
github.com/muety/wakapi/services/heartbeat.go:29.80,34.32 3 0
github.com/muety/wakapi/services/heartbeat.go:41.2,41.55 1 0
github.com/muety/wakapi/services/heartbeat.go:34.32,35.36 1 0
github.com/muety/wakapi/services/heartbeat.go:35.36,38.4 2 0
github.com/muety/wakapi/services/heartbeat.go:44.53,46.2 1 0
github.com/muety/wakapi/services/heartbeat.go:48.76,50.2 1 0
github.com/muety/wakapi/services/heartbeat.go:52.96,54.2 1 0
github.com/muety/wakapi/services/heartbeat.go:56.111,58.16 2 0
github.com/muety/wakapi/services/heartbeat.go:61.2,61.43 1 0
github.com/muety/wakapi/services/heartbeat.go:58.16,60.3 1 0
github.com/muety/wakapi/services/heartbeat.go:64.92,66.2 1 0
github.com/muety/wakapi/services/heartbeat.go:68.116,70.2 1 0
github.com/muety/wakapi/services/heartbeat.go:72.78,74.2 1 0
github.com/muety/wakapi/services/heartbeat.go:76.62,78.2 1 0
github.com/muety/wakapi/services/heartbeat.go:80.116,82.16 2 0
github.com/muety/wakapi/services/heartbeat.go:86.2,86.28 1 0
github.com/muety/wakapi/services/heartbeat.go:90.2,90.24 1 0
github.com/muety/wakapi/services/heartbeat.go:82.16,84.3 1 0
github.com/muety/wakapi/services/heartbeat.go:86.28,88.3 1 0
github.com/muety/wakapi/services/language_mapping.go:18.118,24.2 1 0
github.com/muety/wakapi/services/language_mapping.go:26.86,28.2 1 0
github.com/muety/wakapi/services/language_mapping.go:30.96,31.53 1 0
github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0
github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0
github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0
github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0
github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0
github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0
github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0
github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0
github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0
github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0
github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0
github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0
github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0
github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0
github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0
github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0

1
go.mod
View File

@ -15,6 +15,7 @@ require (
github.com/gorilla/schema v1.1.0 github.com/gorilla/schema v1.1.0
github.com/gorilla/securecookie v1.1.1 github.com/gorilla/securecookie v1.1.1
github.com/jinzhu/configor v1.2.0 github.com/jinzhu/configor v1.2.0
github.com/leandro-lugaresi/hub v1.1.1 // indirect
github.com/mailru/easyjson v0.7.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect
github.com/mitchellh/hashstructure/v2 v2.0.1 github.com/mitchellh/hashstructure/v2 v2.0.1

2
go.sum
View File

@ -191,6 +191,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g=
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/leandro-lugaresi/hub v1.1.1 h1:zqp0HzFvj4HtqjMBXM2QF17o6PNmR8MJOChgeKl/aw8=
github.com/leandro-lugaresi/hub v1.1.1/go.mod h1:XEFWanhHv6Rt3XlteHMxuNDYi8dJcpJjodpqkU+BtIo=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=

View File

@ -60,8 +60,9 @@ type CredentialsReset struct {
} }
type UserDataUpdate struct { type UserDataUpdate struct {
Email string `schema:"email"` Email string `schema:"email"`
Location string `schema:"location"` Location string `schema:"location"`
ReportsWeekly bool `schema:"reports_weekly"`
} }
type TimeByUser struct { type TimeByUser struct {

View File

@ -27,6 +27,7 @@ func DefaultTemplateFuncs() template.FuncMap {
return template.FuncMap{ return template.FuncMap{
"json": utils.Json, "json": utils.Json,
"date": utils.FormatDateHuman, "date": utils.FormatDateHuman,
"datetime": utils.FormatDateTimeHuman,
"simpledate": utils.FormatDate, "simpledate": utils.FormatDate,
"simpledatetime": utils.FormatDateTime, "simpledatetime": utils.FormatDateTime,
"duration": utils.FmtWakatimeDuration, "duration": utils.FmtWakatimeDuration,

View File

@ -167,6 +167,7 @@ func (h *SettingsHandler) actionUpdateUser(w http.ResponseWriter, r *http.Reques
user.Email = payload.Email user.Email = payload.Email
user.Location = payload.Location user.Location = payload.Location
user.ReportsWeekly = payload.ReportsWeekly
if _, err := h.userSrvc.Update(user); err != nil { if _, err := h.userSrvc.Update(user); err != nil {
return http.StatusInternalServerError, "", conf.ErrInternalServerError return http.StatusInternalServerError, "", conf.ErrInternalServerError

View File

@ -6,6 +6,7 @@ import (
"github.com/muety/wakapi/models" "github.com/muety/wakapi/models"
"github.com/muety/wakapi/routes" "github.com/muety/wakapi/routes"
"github.com/muety/wakapi/services" "github.com/muety/wakapi/services"
"github.com/muety/wakapi/utils"
"html/template" "html/template"
"io/ioutil" "io/ioutil"
"time" "time"
@ -18,9 +19,9 @@ const (
tplNamePasswordReset = "reset_password" tplNamePasswordReset = "reset_password"
tplNameImportNotification = "import_finished" tplNameImportNotification = "import_finished"
tplNameReport = "report" tplNameReport = "report"
subjectPasswordReset = "Wakapi Password Reset" subjectPasswordReset = "Wakapi - Password Reset"
subjectImportNotification = "Wakapi Data Import Finished" subjectImportNotification = "Wakapi - Data Import Finished"
subjectReport = "Wakapi Your Latest Report" subjectReport = "Wakapi - Report from %s"
) )
type SendingService interface { type SendingService interface {
@ -89,7 +90,7 @@ func (m *MailService) SendReport(recipient *models.User, report *models.Report)
mail := &models.Mail{ mail := &models.Mail{
From: models.MailAddress(m.config.Mail.Sender), From: models.MailAddress(m.config.Mail.Sender),
To: models.MailAddresses([]models.MailAddress{models.MailAddress(recipient.Email)}), To: models.MailAddresses([]models.MailAddress{models.MailAddress(recipient.Email)}),
Subject: subjectReport, Subject: fmt.Sprintf(subjectReport, utils.FormatDateHuman(time.Now().In(recipient.TZ()))),
} }
mail.WithHTML(tpl.String()) mail.WithHTML(tpl.String())
return m.sendingService.Send(mail) return m.sendingService.Send(mail)

View File

@ -3,6 +3,7 @@ package services
import ( import (
"github.com/emvi/logbuch" "github.com/emvi/logbuch"
"github.com/go-co-op/gocron" "github.com/go-co-op/gocron"
"github.com/leandro-lugaresi/hub"
"github.com/muety/wakapi/config" "github.com/muety/wakapi/config"
"github.com/muety/wakapi/models" "github.com/muety/wakapi/models"
"sync" "sync"
@ -13,6 +14,7 @@ var reportLock = sync.Mutex{}
type ReportService struct { type ReportService struct {
config *config.Config config *config.Config
eventBus *hub.Hub
summaryService ISummaryService summaryService ISummaryService
userService IUserService userService IUserService
mailService IMailService mailService IMailService
@ -20,13 +22,23 @@ type ReportService struct {
} }
func NewReportService(summaryService ISummaryService, userService IUserService, mailService IMailService) *ReportService { func NewReportService(summaryService ISummaryService, userService IUserService, mailService IMailService) *ReportService {
return &ReportService{ srv := &ReportService{
config: config.Get(), config: config.Get(),
eventBus: config.EventBus(),
summaryService: summaryService, summaryService: summaryService,
userService: userService, userService: userService,
mailService: mailService, mailService: mailService,
schedulersWeekly: map[string]*gocron.Scheduler{}, schedulersWeekly: map[string]*gocron.Scheduler{},
} }
sub := srv.eventBus.Subscribe(0, config.EventUserUpdate)
go func(sub *hub.Subscription) {
for m := range sub.Receiver {
srv.SyncSchedule(m.Fields[config.FieldPayload].(*models.User))
}
}(&sub)
return srv
} }
func (srv *ReportService) Schedule() { func (srv *ReportService) Schedule() {
@ -39,11 +51,13 @@ func (srv *ReportService) Schedule() {
logbuch.Info("scheduling reports for %d users", len(users)) logbuch.Info("scheduling reports for %d users", len(users))
for _, u := range users { for _, u := range users {
srv.UpdateUserSchedule(u) srv.SyncSchedule(u)
} }
} }
func (srv *ReportService) UpdateUserSchedule(u *models.User) { // SyncSchedule syncs the currently active schedulers with the user's wish about whether or not to receive reports.
// Returns whether a scheduler is active after this operation has run.
func (srv *ReportService) SyncSchedule(u *models.User) bool {
reportLock.Lock() reportLock.Lock()
defer reportLock.Unlock() defer reportLock.Unlock()
@ -52,7 +66,7 @@ func (srv *ReportService) UpdateUserSchedule(u *models.User) {
s.Stop() s.Stop()
s.Clear() s.Clear()
delete(srv.schedulersWeekly, u.ID) delete(srv.schedulersWeekly, u.ID)
return return false
} }
// schedule // schedule
@ -67,9 +81,20 @@ func (srv *ReportService) UpdateUserSchedule(u *models.User) {
s.StartAsync() s.StartAsync()
srv.schedulersWeekly[u.ID] = s srv.schedulersWeekly[u.ID] = s
} }
return u.ReportsWeekly
} }
func (srv *ReportService) Run(user *models.User, duration time.Duration) error { func (srv *ReportService) Run(user *models.User, duration time.Duration) error {
if user.Email == "" {
logbuch.Warn("not generating report for '%s' as no e-mail address is set")
}
if !srv.SyncSchedule(user) {
logbuch.Info("reports for user '%s' were turned off in the meanwhile since last report job ran")
return nil
}
end := time.Now().In(user.TZ()) end := time.Now().In(user.TZ())
start := time.Now().Add(-1 * duration) start := time.Now().Add(-1 * duration)

View File

@ -70,7 +70,7 @@ type ISummaryService interface {
type IReportService interface { type IReportService interface {
Schedule() Schedule()
UpdateUserSchedule(user *models.User) SyncSchedule(user *models.User) bool
Run(*models.User, time.Duration) error Run(*models.User, time.Duration) error
} }

View File

@ -1,6 +1,7 @@
package services package services
import ( import (
"github.com/leandro-lugaresi/hub"
"github.com/muety/wakapi/config" "github.com/muety/wakapi/config"
"github.com/muety/wakapi/models" "github.com/muety/wakapi/models"
"github.com/muety/wakapi/repositories" "github.com/muety/wakapi/repositories"
@ -11,16 +12,18 @@ import (
) )
type UserService struct { type UserService struct {
Config *config.Config config *config.Config
cache *cache.Cache cache *cache.Cache
eventBus *hub.Hub
repository repositories.IUserRepository repository repositories.IUserRepository
} }
func NewUserService(userRepo repositories.IUserRepository) *UserService { func NewUserService(userRepo repositories.IUserRepository) *UserService {
return &UserService{ return &UserService{
Config: config.Get(), config: config.Get(),
repository: userRepo, eventBus: config.EventBus(),
cache: cache.New(1*time.Hour, 2*time.Hour), cache: cache.New(1*time.Hour, 2*time.Hour),
repository: userRepo,
} }
} }
@ -69,7 +72,7 @@ func (srv *UserService) GetAllByReports(reportsEnabled bool) ([]*models.User, er
} }
func (srv *UserService) GetActive() ([]*models.User, error) { func (srv *UserService) GetActive() ([]*models.User, error) {
minDate := time.Now().Add(-24 * time.Hour * time.Duration(srv.Config.App.InactiveDays)) minDate := time.Now().Add(-24 * time.Hour * time.Duration(srv.config.App.InactiveDays))
return srv.repository.GetByLastActiveAfter(minDate) return srv.repository.GetByLastActiveAfter(minDate)
} }
@ -87,7 +90,7 @@ func (srv *UserService) CreateOrGet(signup *models.Signup, isAdmin bool) (*model
IsAdmin: isAdmin, IsAdmin: isAdmin,
} }
if hash, err := utils.HashBcrypt(u.Password, srv.Config.Security.PasswordSalt); err != nil { if hash, err := utils.HashBcrypt(u.Password, srv.config.Security.PasswordSalt); err != nil {
return nil, false, err return nil, false, err
} else { } else {
u.Password = hash u.Password = hash
@ -98,6 +101,7 @@ func (srv *UserService) CreateOrGet(signup *models.Signup, isAdmin bool) (*model
func (srv *UserService) Update(user *models.User) (*models.User, error) { func (srv *UserService) Update(user *models.User) (*models.User, error) {
srv.cache.Flush() srv.cache.Flush()
srv.notifyUpdate(user)
return srv.repository.Update(user) return srv.repository.Update(user)
} }
@ -115,7 +119,7 @@ func (srv *UserService) SetWakatimeApiKey(user *models.User, apiKey string) (*mo
func (srv *UserService) MigrateMd5Password(user *models.User, login *models.Login) (*models.User, error) { func (srv *UserService) MigrateMd5Password(user *models.User, login *models.Login) (*models.User, error) {
srv.cache.Flush() srv.cache.Flush()
user.Password = login.Password user.Password = login.Password
if hash, err := utils.HashBcrypt(user.Password, srv.Config.Security.PasswordSalt); err != nil { if hash, err := utils.HashBcrypt(user.Password, srv.config.Security.PasswordSalt); err != nil {
return nil, err return nil, err
} else { } else {
user.Password = hash user.Password = hash
@ -129,9 +133,20 @@ func (srv *UserService) GenerateResetToken(user *models.User) (*models.User, err
func (srv *UserService) Delete(user *models.User) error { func (srv *UserService) Delete(user *models.User) error {
srv.cache.Flush() srv.cache.Flush()
user.ReportsWeekly = false
srv.notifyUpdate(user)
return srv.repository.Delete(user) return srv.repository.Delete(user)
} }
func (srv *UserService) FlushCache() { func (srv *UserService) FlushCache() {
srv.cache.Flush() srv.cache.Flush()
} }
func (srv *UserService) notifyUpdate(user *models.User) {
srv.eventBus.Publish(hub.Message{
Name: config.EventUserUpdate,
Fields: map[string]interface{}{config.FieldPayload: user},
})
}

View File

@ -33,10 +33,14 @@ func FormatDateTime(date time.Time) string {
return date.Format(config.SimpleDateTimeFormat) return date.Format(config.SimpleDateTimeFormat)
} }
func FormatDateHuman(date time.Time) string { func FormatDateTimeHuman(date time.Time) string {
return date.Format("Mon, 02 Jan 2006 15:04") return date.Format("Mon, 02 Jan 2006 15:04")
} }
func FormatDateHuman(date time.Time) string {
return date.Format("Mon, 02 Jan 2006")
}
func Add(i, j int) int { func Add(i, j int) int {
return i + j return i + j
} }

View File

@ -110,8 +110,8 @@
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;">
<tr> <tr>
<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;"> <td style="font-family: sans-serif; font-size: 14px; vertical-align: top;">
<p style="font-family: sans-serif; font-size: 18px; font-weight: 500; margin: 0; Margin-bottom: 15px;">Your Stats from {{ .Report.From | simpledate }} to {{ .Report.To | simpledate }}</p> <p style="font-family: sans-serif; font-size: 18px; font-weight: 500; margin: 0; Margin-bottom: 15px;">Your Stats from {{ .Report.From | date }} to {{ .Report.To | date }}</p>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have coded a total of <strong>{{ .Report.Summary.TotalTime | duration }}</strong> between {{ .Report.From | simpledate }} and {{ .Report.To | simpledate }}.</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have coded a total of <strong>{{ .Report.Summary.TotalTime | duration }}</strong> between {{ .Report.From | date }} and {{ .Report.To | date }}.</p>
<p style="font-family: sans-serif; font-size: 16px; font-weight: 500; margin: 0; Margin-bottom: 15px; Margin-top: 30px;">Projects</p> <p style="font-family: sans-serif; font-size: 16px; font-weight: 500; margin: 0; Margin-bottom: 15px; Margin-top: 30px;">Projects</p>
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; box-sizing: border-box;"> <table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; box-sizing: border-box;">

View File

@ -46,19 +46,34 @@
<form class="mt-10" action="" method="post"> <form class="mt-10" action="" method="post">
<input type="hidden" name="action" value="update_user"> <input type="hidden" name="action" value="update_user">
<div class="mb-8 flex justify-between items-center space-x-4"> <div class="mb-8 flex justify-between items-center space-x-4">
<label class="inline-block text-sm text-gray-500" for="select-timezone">Time Zone</label> <label class="inline-block text-sm text-gray-500 w-1/3" for="select-timezone">Time Zone</label>
<select name="location" id="select-timezone" <select name="location" id="select-timezone"
class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded flex-grow py-1 px-3 cursor-pointer"> class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded flex-grow py-1 px-3 cursor-pointer">
</select> </select>
</div> </div>
<div class="mb-8 flex justify-between items-center space-x-4"> <div class="mb-8 flex justify-between items-center space-x-4">
<label class="inline-block text-sm text-gray-500" for="email">E-Mail Address</label> <label class="inline-block text-sm text-gray-500 w-1/3" for="email">E-Mail Address</label>
<input class="shadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded flex-grow py-1 px-3" <input class="shadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded flex-grow py-1 px-3"
type="email" id="email" type="email" id="email"
name="email" placeholder="Enter your e-mail address" name="email" placeholder="Enter your e-mail address"
value="{{ .User.Email }}"> value="{{ .User.Email }}">
</div> </div>
<div class="text-gray-300 text-sm">E-Mail address is optional, but required for some features
{{ if .User.Email }}
<div class="flex items-center w-full text-gray-500 text-sm my-2 w-1/3 space-x-4">
<span class="inline-block text-sm text-gray-500 w-1/3">Weekly E-Mail Reports</span>
<div class="justify-start">
<select autocomplete="off" name="reports_weekly"
class="cursor-pointer shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3">
<option value="false" class="cursor-pointer" {{ if not .User.ReportsWeekly }} selected{{ end }}>Disabled</option>
<option value="true" class="cursor-pointer" {{ if .User.ReportsWeekly }} selected {{ end }}>Enabled</option>
</select>
</div>
</div>
{{ end }}
<div class="text-gray-300 text-sm mt-8">E-Mail address is optional, but required for some features
that you cannot use else. Also, if you do not add an e-mail address, you will not be able to that you cannot use else. Also, if you do not add an e-mail address, you will not be able to
reset your password in case you forget it. reset your password in case you forget it.
</div> </div>

View File

@ -85,7 +85,7 @@
<span class="text-xl"><span class="iconify inline" data-icon="emojione-v1:alarm-clock"></span>&nbsp;</span> <span class="text-xl"><span class="iconify inline" data-icon="emojione-v1:alarm-clock"></span>&nbsp;</span>
Showing a total of <span id="total-span" title="Total Hours" class="text-white text-xl font-semibold border-b-2 border-green-700"></span> Showing a total of <span id="total-span" title="Total Hours" class="text-white text-xl font-semibold border-b-2 border-green-700"></span>
<span class="text-sm my-2"> <span class="text-sm my-2">
(from <span title="Start Time" class="border-b border-gray-700">{{ .FromTime.T | date }}</span> to <span title="End Time" class="border-b border-gray-700">{{ .ToTime.T | date }}</span>) (from <span title="Start Time" class="border-b border-gray-700">{{ .FromTime.T | datetime }}</span> to <span title="End Time" class="border-b border-gray-700">{{ .ToTime.T | datetime }}</span>)
</span> </span>
</span> </span>