|
@@ -3,8 +3,24 @@ SET ":date" = COALESCE(:date, $date, CURRENT_TIMESTAMP);
|
|
|
SET ":start_of_day" = (SELECT datetime(datetime(:date, 'localtime'), 'start of day'));
|
|
|
SET ":end_of_day" = (SELECT datetime(:start_of_day, '+1 days'));
|
|
|
|
|
|
+SET ":total_time" = (WITH delta AS (SELECT julianday(COALESCE((
|
|
|
+ SELECT min(lag.ts, datetime(:end_of_day, 'utc'))
|
|
|
+ FROM activities lag
|
|
|
+ WHERE lag.ts > a.ts AND lag.activity <> a.activity
|
|
|
+ ORDER BY lag.ts ASC
|
|
|
+ LIMIT 1
|
|
|
+), min(CURRENT_TIMESTAMP, datetime(:end_of_day, 'utc')))) - julianday(a.ts) AS delta
|
|
|
+, activity
|
|
|
+FROM activities a
|
|
|
+WHERE user = :user
|
|
|
+AND datetime(datetime(ts, 'localtime'), 'start of day') = :start_of_day)
|
|
|
+SELECT printf("%.0f", sum(delta)*60*24) AS minutes
|
|
|
+FROM delta
|
|
|
+WHERE activity = 'Eating'
|
|
|
+GROUP BY delta.activity);
|
|
|
+
|
|
|
SELECT 'chart' AS component
|
|
|
-, '' AS title
|
|
|
+, :total_time || ' min.' AS title
|
|
|
, TRUE AS time
|
|
|
, 'area' AS type
|
|
|
, 1 AS ymax
|