From 8c99fc00898027b44816fce197b153dcbd60052b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Mon, 20 Jun 2022 09:49:53 +0200 Subject: [PATCH] basic structure for using modules in stores and convert to TS --- .../Resources/public/types.ts | 54 +++++++++ .../Resources/public/vuejs/Calendar/api.d.ts | 5 + .../public/vuejs/Calendar/store/utils.d.ts | 2 + .../public/vuejs/Calendar/store/utils.js | 1 + .../public/vuejs/MyCalendarRange/App.vue | 83 ++++++++++---- .../store/{actions.js => actions.ts.backup} | 57 +++++---- .../store/{getters.js => getters.ts.backup} | 11 +- .../vuejs/MyCalendarRange/store/index.d.ts | 11 ++ .../vuejs/MyCalendarRange/store/index.js | 21 ---- .../vuejs/MyCalendarRange/store/index.ts | 63 ++++++++++ .../store/modules/calendarRanges.ts | 108 ++++++++++++++++++ .../store/modules/fullcalendar.ts | 38 ++++++ .../vuejs/MyCalendarRange/store/modules/me.ts | 29 +++++ .../vuejs/MyCalendarRange/store/mutations.js | 25 ---- .../MyCalendarRange/store/mutations.ts.backup | 39 +++++++ .../Resources/public/lib/api/apiMethods.d.ts | 3 + 16 files changed, 457 insertions(+), 93 deletions(-) create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/types.ts create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.d.ts rename src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/{actions.js => actions.ts.backup} (64%) rename src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/{getters.js => getters.ts.backup} (67%) create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/index.d.ts delete mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/index.js create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/index.ts create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/modules/calendarRanges.ts create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/modules/fullcalendar.ts create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/modules/me.ts delete mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/mutations.js create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/mutations.ts.backup create mode 100644 src/Bundle/ChillMainBundle/Resources/public/lib/api/apiMethods.d.ts diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/types.ts b/src/Bundle/ChillCalendarBundle/Resources/public/types.ts new file mode 100644 index 000000000..4291f2dd9 --- /dev/null +++ b/src/Bundle/ChillCalendarBundle/Resources/public/types.ts @@ -0,0 +1,54 @@ +import {EventInput} from '@fullcalendar/vue3'; + +export interface DateTime { + datetime: string; + datetime8601: string +} + +export interface Job { + id: number; + interface: "user_job"; + label: { + "fr": string; // could have other key. How to do that in ts ? + } +} + +export interface Center { + id: number; + interface: "center"; + name: string; +} + +export interface Scope { + id: number; + interface: "scope"; + name: { + "fr": string + } +} + +export interface User { + interface: "user"; + id: number; + username: string; + text: string; + email: string; + user_job: Job; + // todo: mainCenter; mainJob; etc.. +} + +export interface CalendarRange { + id: number; + endDate: DateTime; + startdate: DateTime; + user: User; + createdAt: DateTime; + createdBy: User; + updatedAt: DateTime; + updatedBy: User; +} + +export interface Calendar { + id: number; +} + diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts new file mode 100644 index 000000000..4c0ea2626 --- /dev/null +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts @@ -0,0 +1,5 @@ +export function whoami(): import('ChillCalendarAssets/types').User; + +export function fetchCalendarRangeForUser(user: import('ChillCalendarAssets/types').User, start: Date, end: Date): import('ChillCalendarAssets/types').CalendarRange[]; + +export function fetchCalendarRemoteForUser(user: import('ChillCalendarAssets/types').User, start: Date, end: Date): import('ChillCalendarAssets/types').Calendar[]; diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.d.ts b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.d.ts new file mode 100644 index 000000000..e60b2167d --- /dev/null +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.d.ts @@ -0,0 +1,2 @@ + +export function calendarRangeToFullCalendarEvent(entity: import('ChillCalendarAssets/types').CalendarRange): import('@fullcalendar/vue3').EventInput; diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.js index 176b84a6b..af194f206 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.js +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.js @@ -50,6 +50,7 @@ const createUserData = (user, colorIndex) => { } } +// TODO move this function to a more global namespace, as it is in use in MyCalendarRange app const calendarRangeToFullCalendarEvent = (entity) => { return { id: `range_${entity.id}`, diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue index a1ea74560..e67152b58 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue @@ -11,7 +11,7 @@ - +