Started work on Schedule Management
This commit is contained in:
@@ -12,12 +12,13 @@ import type {
|
||||
Reservation,
|
||||
TimeBlockTemplate,
|
||||
Timeblock,
|
||||
TimeTuple,
|
||||
} from '../schedule.types';
|
||||
|
||||
export const templateA: TimeBlockTemplate = {
|
||||
id: '1',
|
||||
name: 'WeekdayBlocks',
|
||||
blocks: [
|
||||
timeTuple: [
|
||||
['08:00', '12:00'],
|
||||
['12:00', '16:00'],
|
||||
['17:00', '21:00'],
|
||||
@@ -27,7 +28,7 @@ export const templateA: TimeBlockTemplate = {
|
||||
export const templateB: TimeBlockTemplate = {
|
||||
id: '2',
|
||||
name: 'WeekendBlocks',
|
||||
blocks: [
|
||||
timeTuple: [
|
||||
['07:00', '10:00'],
|
||||
['10:00', '13:00'],
|
||||
['13:00', '16:00'],
|
||||
@@ -46,7 +47,7 @@ export function getSampleTimeBlocks(): Timeblock[] {
|
||||
result.push(
|
||||
...boats.value
|
||||
.map((b): Timeblock[] => {
|
||||
return template.blocks.map((t): Timeblock => {
|
||||
return template.blocks.map((t: TimeTuple): Timeblock => {
|
||||
return {
|
||||
$id: 'id' + Math.random().toString(32).slice(2),
|
||||
boatId: b.$id,
|
||||
|
||||
@@ -8,13 +8,19 @@ import {
|
||||
compareDate,
|
||||
} from '@quasar/quasar-ui-qcalendar';
|
||||
|
||||
import { Reservation, Timeblock } from './schedule.types';
|
||||
import {
|
||||
Reservation,
|
||||
TimeBlockTemplate,
|
||||
TimeTuple,
|
||||
Timeblock,
|
||||
} from './schedule.types';
|
||||
import { AppwriteIds, databases } from 'src/boot/appwrite';
|
||||
|
||||
export const useScheduleStore = defineStore('schedule', () => {
|
||||
// TODO: Implement functions to dynamically pull this data.
|
||||
const reservations = ref<Reservation[]>([]);
|
||||
const timeblocks = ref<Timeblock[]>([]);
|
||||
const timeblockTemplates = ref<TimeBlockTemplate[]>([]);
|
||||
|
||||
const getTimeblocksForDate = (date: string): Timeblock[] => {
|
||||
// TODO: This needs to actually make sure we have the dates we need, stay in sync, etc.
|
||||
@@ -55,6 +61,25 @@ export const useScheduleStore = defineStore('schedule', () => {
|
||||
console.error('Failed to fetch timeblocks', error);
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchTimeBlockTemplates() {
|
||||
try {
|
||||
const response = await databases.listDocuments(
|
||||
AppwriteIds.databaseId,
|
||||
AppwriteIds.collection.timeBlockTemplate
|
||||
);
|
||||
const res = response.documents.map((d) => {
|
||||
const timeTuples: TimeTuple[] = [];
|
||||
for (let i = 0; i < d.timeTuple.length; i += 2) {
|
||||
timeTuples.push([d.timeTuple[i], d.timeTuple[i + 1]]);
|
||||
}
|
||||
return { ...d, timeTuple: timeTuples };
|
||||
}) as TimeBlockTemplate[];
|
||||
timeblockTemplates.value = res;
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch timeblock templates', error);
|
||||
}
|
||||
}
|
||||
// const getConflicts = (timeblock: Timeblock, boat: Boat) => {
|
||||
// const start = date.buildDate({
|
||||
// hour: timeblock.start.hour,
|
||||
@@ -117,10 +142,12 @@ export const useScheduleStore = defineStore('schedule', () => {
|
||||
return {
|
||||
reservations,
|
||||
timeblocks,
|
||||
timeblockTemplates,
|
||||
getBoatReservations,
|
||||
getConflictingReservations,
|
||||
getTimeblocksForDate,
|
||||
fetchTimeBlocks,
|
||||
fetchTimeBlockTemplates,
|
||||
getNewId,
|
||||
addOrCreateReservation,
|
||||
isReservationOverlapped,
|
||||
|
||||
@@ -17,7 +17,7 @@ export interface Reservation {
|
||||
e.g.: Should there be any qcalendar stuff in this store? Or should we have just JS Date
|
||||
objects in here? */
|
||||
|
||||
export type timeTuple = [start: string, end: string];
|
||||
export type TimeTuple = [start: string, end: string];
|
||||
export type Timeblock = Partial<Models.Document> & {
|
||||
boatId: string;
|
||||
start: string;
|
||||
@@ -25,8 +25,7 @@ export type Timeblock = Partial<Models.Document> & {
|
||||
selected?: false;
|
||||
};
|
||||
|
||||
export interface TimeBlockTemplate {
|
||||
id: string;
|
||||
export type TimeBlockTemplate = Partial<Models.Document> & {
|
||||
name: string;
|
||||
blocks: timeTuple[];
|
||||
}
|
||||
timeTuple: TimeTuple[];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user