From d8f80f3d02c5c788016c934253fc8f5ee005db99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Thu, 23 Jun 2022 12:26:48 +0200 Subject: [PATCH] wip on app2 --- .../Resources/public/types.ts | 48 ++--- .../Resources/public/vuejs/Calendar/api.d.ts | 5 - .../public/vuejs/Calendar/{api.js => api.ts} | 18 +- .../vuejs/Calendar/{const.js => const.ts} | 0 .../public/vuejs/Calendar/store/utils.d.ts | 2 - .../Calendar/store/{utils.js => utils.ts} | 33 ++-- .../public/vuejs/MyCalendarRange/App.vue | 70 ++++---- .../public/vuejs/MyCalendarRange/App2.vue | 59 +++++++ .../MyCalendarRange/{i18n.js => i18n.ts} | 0 .../public/vuejs/MyCalendarRange/index.js | 20 ++- .../public/vuejs/MyCalendarRange/index2.ts | 18 ++ .../vuejs/MyCalendarRange/store/index.d.ts | 11 -- .../vuejs/MyCalendarRange/store/index.ts | 94 +++++----- .../store/modules/calendarRanges.ts | 109 +++++++----- .../store/modules/fullcalendar.ts | 25 ++- .../vuejs/MyCalendarRange/store/modules/me.ts | 2 +- .../chill.webpack.config.js | 2 +- .../Resources/public/api/pickTemplate.js | 2 +- .../Resources/public/chill/index.js | 2 +- .../public/chill/js/{date.js => date.ts} | 27 +-- ...apiMethods.d.ts => apiMethods.d.ts.backup} | 1 + .../Resources/public/lib/api/apiMethods.js | 110 ------------ .../Resources/public/lib/api/apiMethods.ts | 164 ++++++++++++++++++ .../ChillMainBundle/Resources/public/types.ts | 36 ++++ .../vuejs/Address/components/DatePane.vue | 2 +- .../EntityWorkflowVueSubscriber.vue | 2 +- .../Notification/NotificationReadToggle.vue | 2 +- .../public/vuejs/_js/{i18n.js => i18n.ts} | 3 +- ...{datetimeFormats.js => datetimeFormats.ts} | 0 .../Resources/public/lib/household.js | 2 +- .../mod/AccompanyingPeriod/setReferrer.js | 2 +- .../public/vuejs/AccompanyingCourse/api.js | 2 +- .../components/StartDate.vue | 2 +- .../vuejs/AccompanyingCourse/store/index.js | 4 +- .../AccompanyingCourseWorkCreate/App.vue | 2 +- .../AccompanyingCourseWorkCreate/store.js | 2 +- .../vuejs/AccompanyingCourseWorkEdit/App.vue | 2 +- .../components/FormEvaluation.vue | 2 +- .../vuejs/AccompanyingCourseWorkEdit/store.js | 4 +- .../HouseholdMembersEditor/store/index.js | 4 +- .../Resources/public/vuejs/VisGraph/api.js | 2 +- .../AccompanyingPeriod/SetReferrer.vue | 2 +- .../public/vuejs/_components/AddPersons.vue | 2 +- .../_components/Entity/PersonRenderBox.vue | 2 +- 44 files changed, 545 insertions(+), 358 deletions(-) delete mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts rename src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/{api.js => api.ts} (63%) rename src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/{const.js => const.ts} (100%) delete mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.d.ts rename src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/{utils.js => utils.ts} (67%) create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue rename src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/{i18n.js => i18n.ts} (100%) create mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/index2.ts delete mode 100644 src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/index.d.ts rename src/Bundle/ChillMainBundle/Resources/public/chill/js/{date.js => date.ts} (84%) rename src/Bundle/ChillMainBundle/Resources/public/lib/api/{apiMethods.d.ts => apiMethods.d.ts.backup} (99%) delete mode 100644 src/Bundle/ChillMainBundle/Resources/public/lib/api/apiMethods.js create mode 100644 src/Bundle/ChillMainBundle/Resources/public/lib/api/apiMethods.ts create mode 100644 src/Bundle/ChillMainBundle/Resources/public/types.ts rename src/Bundle/ChillMainBundle/Resources/public/vuejs/_js/{i18n.js => i18n.ts} (97%) rename src/Bundle/ChillMainBundle/Resources/public/vuejs/i18n/{datetimeFormats.js => datetimeFormats.ts} (100%) diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/types.ts b/src/Bundle/ChillCalendarBundle/Resources/public/types.ts index 4291f2dd9..ce2c920c3 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/types.ts +++ b/src/Bundle/ChillCalendarBundle/Resources/public/types.ts @@ -1,46 +1,10 @@ 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.. -} +import {DateTime, User} from 'ChillMainAssets/types'; export interface CalendarRange { id: number; endDate: DateTime; - startdate: DateTime; + startDate: DateTime; user: User; createdAt: DateTime; createdBy: User; @@ -52,3 +16,11 @@ export interface Calendar { id: number; } +export interface CalendarRemote { + id: number; + endDate: DateTime; + startDate: DateTime; + title: string +} + +export {}; diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts deleted file mode 100644 index 4c0ea2626..000000000 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -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/api.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.ts similarity index 63% rename from src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.js rename to src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.ts index d1a4c8426..3abd9a90a 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.js +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/api.ts @@ -1,7 +1,9 @@ import {fetchResults} from 'ChillMainAssets/lib/api/apiMethods'; import {datetimeToISO} from 'ChillMainAssets/chill/js/date'; +import {User} from 'ChillMainAssets/types'; +import {CalendarRange, CalendarRemote} from 'ChillCalendarAssets/types'; -const whoami = () => { +export const whoami = (): Promise => { const url = `/api/1.0/main/whoami.json`; return fetch(url) .then(response => { @@ -25,24 +27,18 @@ const whoami = () => { * @param Date end * @return Promise */ -const fetchCalendarRangeForUser = (user, start, end) => { +export const fetchCalendarRangeForUser = (user: User, start: Date, end: Date): Promise => { const uri = `/api/1.0/calendar/calendar-range-available/${user.id}.json`; const dateFrom = datetimeToISO(start); const dateTo = datetimeToISO(end); - return fetchResults(uri, {dateFrom, dateTo}); + return fetchResults(uri, {dateFrom, dateTo}); } -const fetchCalendarRemoteForUser = (user, start, end) => { +export const fetchCalendarRemoteForUser = (user: User, start: Date, end: Date): Promise => { const uri = `/api/1.0/calendar/proxy/calendar/by-user/${user.id}/events`; const dateFrom = datetimeToISO(start); const dateTo = datetimeToISO(end); - return fetchResults(uri, {dateFrom, dateTo}); + return fetchResults(uri, {dateFrom, dateTo}); } - -export { - whoami, - fetchCalendarRangeForUser, - fetchCalendarRemoteForUser, -}; diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/const.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/const.ts similarity index 100% rename from src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/const.js rename to src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/const.ts 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 deleted file mode 100644 index e60b2167d..000000000 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.d.ts +++ /dev/null @@ -1,2 +0,0 @@ - -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.ts similarity index 67% rename from src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.js rename to src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.ts index af194f206..95d9d1609 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.js +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.ts @@ -1,14 +1,26 @@ import {COLORS} from '../const'; import {ISOToDatetime} from 'ChillMainAssets/chill/js/date'; +import {DateTime, User} from 'ChillMainAssets/types'; +import {CalendarRange, CalendarRemote} from 'ChillCalendarAssets/types'; +import {EventInput} from '@fullcalendar/vue3'; -const addIdToValue = (string, id) => { +export interface UserData { + user: User, + calendarRanges: CalendarRange[], + calendarRangesLoaded: {}[], + remotes: CalendarRemote[], + remotesLoaded: {}[], + mainColor: string, +} + +export const addIdToValue = (string: string, id: number): string => { let array = string ? string.split(',') : []; array.push(id.toString()); let str = array.join(); return str; }; -const removeIdFromValue = (string, id) => { +export const removeIdFromValue = (string: string, id: number) => { let array = string.split(','); array = array.filter(el => el !== id.toString()); let str = array.join(); @@ -18,7 +30,7 @@ const removeIdFromValue = (string, id) => { /* * Assign missing keys for the ConcernedGroups component */ -const mapEntity = (entity) => { +export const mapEntity = (entity: EventInput): EventInput => { let calendar = { ...entity}; Object.assign(calendar, {thirdParties: entity.professionals}); @@ -37,7 +49,7 @@ const mapEntity = (entity) => { return calendar; }; -const createUserData = (user, colorIndex) => { +export const createUserData = (user: User, colorIndex: number): UserData => { const colorId = colorIndex % COLORS.length; console.log('colorId', colorId); return { @@ -51,7 +63,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) => { +export const calendarRangeToFullCalendarEvent = (entity: CalendarRange): EventInput & {id: string} => { return { id: `range_${entity.id}`, title: "(" + entity.user.text + ")", @@ -64,7 +76,7 @@ const calendarRangeToFullCalendarEvent = (entity) => { }; } -const remoteToFullCalendarEvent = (entity) => { +export const remoteToFullCalendarEvent = (entity: CalendarRemote): EventInput & {id: string} => { console.log(entity); return { id: `range_${entity.id}`, @@ -75,12 +87,3 @@ const remoteToFullCalendarEvent = (entity) => { is: 'remote', }; } - -export { - addIdToValue, - calendarRangeToFullCalendarEvent, - removeIdFromValue, - remoteToFullCalendarEvent, - mapEntity, - createUserData, -}; diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue index 111c85adb..35d9d2ca2 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 @@ -
Il y a {{ this.eventSource[0].events.length }} events
+
Il y a {{ this.calendarOptions.eventSources[0].events.length }} events