From 8239a096c899173a74f839358de52d5de83bc076 Mon Sep 17 00:00:00 2001 From: Ryan Pandya Date: Wed, 10 May 2023 01:14:29 -0700 Subject: [PATCH] Mostly have live scrolling working. --- lifetracker-vue/package-lock.json | 14 ++++ lifetracker-vue/package.json | 1 + lifetracker-vue/src/assets/colors.css | 8 ++ lifetracker-vue/src/services/appwrite.js | 18 +++- lifetracker-vue/src/views/TableView.vue | 102 ++++++++++++++++++++--- 5 files changed, 129 insertions(+), 14 deletions(-) diff --git a/lifetracker-vue/package-lock.json b/lifetracker-vue/package-lock.json index f64fb54..73051a6 100644 --- a/lifetracker-vue/package-lock.json +++ b/lifetracker-vue/package-lock.json @@ -12,6 +12,7 @@ "appwrite": "^11.0.0", "axios": "^1.4.0", "handsontable": "^12.3.3", + "luxon": "^3.3.0", "moment": "^2.29.4", "node": "^20.0.0", "pinia": "^2.0.35", @@ -1295,6 +1296,14 @@ "node": ">=10" } }, + "node_modules/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "engines": { + "node": ">=12" + } + }, "node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -3196,6 +3205,11 @@ "yallist": "^4.0.0" } }, + "luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==" + }, "magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", diff --git a/lifetracker-vue/package.json b/lifetracker-vue/package.json index 55389a2..ea14841 100644 --- a/lifetracker-vue/package.json +++ b/lifetracker-vue/package.json @@ -14,6 +14,7 @@ "appwrite": "^11.0.0", "axios": "^1.4.0", "handsontable": "^12.3.3", + "luxon": "^3.3.0", "moment": "^2.29.4", "node": "^20.0.0", "pinia": "^2.0.35", diff --git a/lifetracker-vue/src/assets/colors.css b/lifetracker-vue/src/assets/colors.css index b056e68..4d53de5 100644 --- a/lifetracker-vue/src/assets/colors.css +++ b/lifetracker-vue/src/assets/colors.css @@ -21,6 +21,14 @@ filter: contrast(85%); } +.invert { + filter: invert(); +} + +.day-of-week{ + text-transform: uppercase; +} + .handsontable * { border: 0px !important; text-align: center !important; diff --git a/lifetracker-vue/src/services/appwrite.js b/lifetracker-vue/src/services/appwrite.js index 0cdd326..64d6af6 100644 --- a/lifetracker-vue/src/services/appwrite.js +++ b/lifetracker-vue/src/services/appwrite.js @@ -1,4 +1,5 @@ import { Client, Databases, Account, Query } from "appwrite"; +import { DateTime } from "luxon"; class AppwriteService { databaseId = 'lifetracker-db'; @@ -40,12 +41,25 @@ class AppwriteService { return await this.getUser(); } - getEntries = async () => { + getEntries = async (date=null, numEntries=25) => { + if(date == null){date = DateTime.now()} + + date = DateTime.fromISO(date); + + var firstEntry = (await this.database.listDocuments( + this.databaseId, this.collectionId, + [Query.orderAsc("date"),Query.limit(1)]) + ).documents[0]; + var referenceDate = DateTime.fromISO(firstEntry.date).toUTC(); + + var offset = Math.floor(date.diff(referenceDate).as("days")) - 1; + return (await this.database.listDocuments( this.databaseId, this.collectionId, [ Query.orderAsc("date"), - //Query.limit(365) + Query.offset(offset), + Query.limit(numEntries) ] ) ).documents; diff --git a/lifetracker-vue/src/views/TableView.vue b/lifetracker-vue/src/views/TableView.vue index 49cdb9d..6006e9d 100644 --- a/lifetracker-vue/src/views/TableView.vue +++ b/lifetracker-vue/src/views/TableView.vue @@ -2,11 +2,11 @@ import { useDatabaseStore } from "@/stores/database" import Api from "@/services/Api" import appwrite from '@/services/appwrite'; -import moment from 'moment'; +import { DateTime } from "luxon";