diff --git a/src/modules/record/components/TaskRecord.vue b/src/modules/record/components/TaskRecord.vue
index 1ce667d..56bb955 100644
--- a/src/modules/record/components/TaskRecord.vue
+++ b/src/modules/record/components/TaskRecord.vue
@@ -1,14 +1,32 @@
-
+
+
{{ task }}
+
{{ record }}
+
diff --git a/src/modules/record/components/TaskRecordList.vue b/src/modules/record/components/TaskRecordList.vue
new file mode 100644
index 0000000..762a3d8
--- /dev/null
+++ b/src/modules/record/components/TaskRecordList.vue
@@ -0,0 +1,34 @@
+
+
+
+
+ No record yet
+ start a new record
+
+
+
diff --git a/src/modules/record/interfaces/recordable.ts b/src/modules/record/interfaces/recordable.ts
index 0822fd4..c630420 100644
--- a/src/modules/record/interfaces/recordable.ts
+++ b/src/modules/record/interfaces/recordable.ts
@@ -4,7 +4,15 @@ import type { StepRecordable } from './step-recordable'
export interface Recordable {
id: string
taskId: string
+ /**
+ * @deprecated
+ * TODO: Compute this data from step records
+ */
start: ISODate
+ /**
+ * @deprecated
+ * TODO: Compute this data from step records
+ */
end?: ISODate
stepRecords: Record
}
diff --git a/src/modules/record/stores/useTaskRecordStore.ts b/src/modules/record/stores/useTaskRecordStore.ts
index 5ee2fe5..e459dd1 100644
--- a/src/modules/record/stores/useTaskRecordStore.ts
+++ b/src/modules/record/stores/useTaskRecordStore.ts
@@ -7,6 +7,7 @@ import { TaskRecord } from '../models/task-record'
type RecordId = string
export interface TaskRecordStoreState {
+ currentStepId: string | null
records: { [recordId: string]: Recordable }
taskRecordMaps: { [taskId: string]: RecordId[] }
}
@@ -14,6 +15,7 @@ export interface TaskRecordStoreState {
export const useTaskRecordStore = defineStore('task-record-store', {
persist: true,
state: (): TaskRecordStoreState => ({
+ currentStepId: null,
records: {},
taskRecordMaps: {}
}),
@@ -41,10 +43,17 @@ export const useTaskRecordStore = defineStore('task-record-store', {
stepId: string
start: ISODate
}) {
+ const record = this.records[params.recordId]
+
+ if (Object.values(record.stepRecords).length === 0) {
+ record.start = params.start
+ }
+
this.records[params.recordId].stepRecords[params.stepId] = {
problems: [],
start: params.start
}
+ this.currentStepId = params.stepId
},
endStepRecord(params: { recordId: string; stepId: string; end: ISODate }) {
const stepRecord =
@@ -73,6 +82,9 @@ export const useTaskRecordStore = defineStore('task-record-store', {
start: params.tick
})
},
+ endRecord() {
+ this.currentStepId = null
+ },
addProblemToStepRecord(recordId: string, stepId: string, problem: string) {
const stepRecord = this.getStepRecord(recordId, stepId)
diff --git a/src/router/index.ts b/src/router/index.ts
index 459acf6..59a6038 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -24,6 +24,12 @@ export const router = createRouter({
name: 'task-view',
props: true,
component: () => import('../views/task/TaskView.vue')
+ },
+ {
+ path: '/task/:taskId/records/:recordId',
+ name: 'record-view',
+ props: true,
+ component: () => import('../views/record/RecordView.vue')
}
]
})
diff --git a/src/views/record/RecordView.vue b/src/views/record/RecordView.vue
new file mode 100644
index 0000000..98a537c
--- /dev/null
+++ b/src/views/record/RecordView.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/task/TaskView.vue b/src/views/task/TaskView.vue
index a60e768..9bb1a1c 100644
--- a/src/views/task/TaskView.vue
+++ b/src/views/task/TaskView.vue
@@ -1,4 +1,5 @@