diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e0ed0d..b2d9bac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.1.6] - 2023-09-20 + +### Added +- Added Vital view for individual person +- Add measurement modal for Vital view autopopulates vital +- Person can pan vital graph + +### Changed + +### Fixed + + ## [0.1.5] - 2023-09-19 ### Added diff --git a/package-lock.json b/package-lock.json index 58ae0c2..5021679 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,20 @@ { "name": "healthrecord", - "version": "0.1.3", + "version": "0.1.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "healthrecord", - "version": "0.1.3", + "version": "0.1.5", "dependencies": { "@headlessui/vue": "^1.7.16", "@heroicons/vue": "^2.0.18", "@tailwindcss/forms": "^0.5.6", "chart.js": "^4.4.0", + "chartjs-adapter-dayjs-4": "^1.0.4", "chartjs-plugin-annotation": "^3.0.1", + "chartjs-plugin-zoom": "^2.0.1", "dayjs": "^1.11.9", "file-saver": "^2.0.5", "pluralize": "^8.0.0", @@ -3877,6 +3879,18 @@ "pnpm": ">=7" } }, + "node_modules/chartjs-adapter-dayjs-4": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz", + "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "chart.js": ">=4.0.1", + "dayjs": "^1.9.7" + } + }, "node_modules/chartjs-plugin-annotation": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-3.0.1.tgz", @@ -3885,6 +3899,17 @@ "chart.js": ">=4.0.0" } }, + "node_modules/chartjs-plugin-zoom": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.0.1.tgz", + "integrity": "sha512-ogOmLu6e+Q7E1XWOCOz9YwybMslz9qNfGV2a+qjfmqJYpsw5ZMoRHZBUyW+NGhkpQ5PwwPA/+rikHpBZb7PZuA==", + "dependencies": { + "hammerjs": "^2.0.8" + }, + "peerDependencies": { + "chart.js": ">=3.2.0" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -5976,6 +6001,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -14757,12 +14790,26 @@ "@kurkle/color": "^0.3.0" } }, + "chartjs-adapter-dayjs-4": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz", + "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==", + "requires": {} + }, "chartjs-plugin-annotation": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-3.0.1.tgz", "integrity": "sha512-hlIrXXKqSDgb+ZjVYHefmlZUXK8KbkCPiynSVrTb/HjTMkT62cOInaT1NTQCKtxKKOm9oHp958DY3RTAFKtkHg==", "requires": {} }, + "chartjs-plugin-zoom": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.0.1.tgz", + "integrity": "sha512-ogOmLu6e+Q7E1XWOCOz9YwybMslz9qNfGV2a+qjfmqJYpsw5ZMoRHZBUyW+NGhkpQ5PwwPA/+rikHpBZb7PZuA==", + "requires": { + "hammerjs": "^2.0.8" + } + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -16363,6 +16410,11 @@ "duplexer": "^0.1.2" } }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", diff --git a/package.json b/package.json index 10cd63c..e43499c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "healthrecord", "private": true, - "version": "0.1.5", + "version": "0.1.6", "type": "module", "scripts": { "dev": "vite", @@ -13,7 +13,9 @@ "@heroicons/vue": "^2.0.18", "@tailwindcss/forms": "^0.5.6", "chart.js": "^4.4.0", + "chartjs-adapter-dayjs-4": "^1.0.4", "chartjs-plugin-annotation": "^3.0.1", + "chartjs-plugin-zoom": "^2.0.1", "dayjs": "^1.11.9", "file-saver": "^2.0.5", "pluralize": "^8.0.0", diff --git a/src/components/Dashboard/Measurements/Form.vue b/src/components/Dashboard/Measurements/Form.vue index ed69b3d..df91960 100644 --- a/src/components/Dashboard/Measurements/Form.vue +++ b/src/components/Dashboard/Measurements/Form.vue @@ -13,7 +13,7 @@ const emit = defineEmits(['submit']); const value = ref(props.value || ''); const date = ref(dayjs(props.date).format('YYYY-MM-DD') || ''); const personId = ref(props.personId || route.params.personId || ''); -const vitalId = ref(props.vitalId || ''); +const vitalId = ref(props.vitalId || route.params.vitalId || ''); const isFormComplete = computed(() => { return value.value.length > 0 diff --git a/src/components/Dashboard/Measurements/MeasurementListItem.vue b/src/components/Dashboard/Measurements/MeasurementListItem.vue index c773bd3..a4bf196 100644 --- a/src/components/Dashboard/Measurements/MeasurementListItem.vue +++ b/src/components/Dashboard/Measurements/MeasurementListItem.vue @@ -5,9 +5,12 @@ import { EllipsisHorizontalIcon, PencilIcon, TrashIcon, CalendarIcon, UserIcon, import { vitals } from '../../../store/vitals'; import { people } from '../../../store/people'; import { computed } from 'vue'; +import { useRoute } from 'vue-router'; const props = defineProps(['measurement']); +const route = useRoute(); + const vital = computed(() => { return vitals.value.find(vital => vital.id === props.measurement.vitalId); }); @@ -16,9 +19,31 @@ const person = computed(() => { return people.value.find(person => person.id === props.measurement.personId); }); -const isHigh = computed(() => { +const editRoute = () => { + if (route.params.personId && route.params.vitalId) { + return { + name: 'PersonVitalMeasurementEdit', + params: { + measurementId: props.measurement.id + } + } + } else if (route.params.personId) { + return { + name: 'PersonMeasurementEdit', + params: { + measurementId: props.measurement.id + } + } + } else { + return { + name: 'MeasurementEdit', + params: { + measurementId: props.measurement.id + } + } + } +} -});