react-weekly-planning 1.0.37 → 1.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +219 -98
  2. package/package.json +49 -1
  3. package/dist/components/AddTask/index.js +0 -17
  4. package/dist/components/CalendarForWeek.js +0 -49
  5. package/dist/components/CalendarForday.js +0 -33
  6. package/dist/components/DayContainer/index.js +0 -15
  7. package/dist/components/GroupContainer/index.js +0 -15
  8. package/dist/components/GroupsHeadContainer/index.js +0 -9
  9. package/dist/components/SumHoursContainer/index.js +0 -16
  10. package/dist/components/SumHoursHead/index.js +0 -9
  11. package/dist/components/TaskContainer/index.js +0 -35
  12. package/dist/components/TaskList/index.js +0 -4
  13. package/dist/components/index.js +0 -69
  14. package/dist/components/style.css +0 -123
  15. package/dist/contexts/CalendarContext.js +0 -12
  16. package/dist/definitions/index.js +0 -1
  17. package/dist/hooks/useCalendarDateState.js +0 -19
  18. package/dist/index.js +0 -7
  19. package/dist/lib/slyles.js +0 -21
  20. package/dist/lib/utils.js +0 -650
  21. package/dist/types/components/AddTask/index.d.ts +0 -3
  22. package/dist/types/components/CalendarForWeek.d.ts +0 -4
  23. package/dist/types/components/CalendarForday.d.ts +0 -5
  24. package/dist/types/components/DayContainer/index.d.ts +0 -3
  25. package/dist/types/components/GroupContainer/index.d.ts +0 -3
  26. package/dist/types/components/GroupsHeadContainer/index.d.ts +0 -3
  27. package/dist/types/components/SumHoursContainer/index.d.ts +0 -3
  28. package/dist/types/components/SumHoursHead/index.d.ts +0 -3
  29. package/dist/types/components/TaskContainer/index.d.ts +0 -3
  30. package/dist/types/components/TaskList/index.d.ts +0 -5
  31. package/dist/types/components/index.d.ts +0 -65
  32. package/dist/types/contexts/CalendarContext.d.ts +0 -15
  33. package/dist/types/definitions/index.d.ts +0 -395
  34. package/dist/types/hooks/useCalendarDateState.d.ts +0 -6
  35. package/dist/types/index.d.ts +0 -3
  36. package/dist/types/lib/slyles.d.ts +0 -4
  37. package/dist/types/lib/utils.d.ts +0 -86
package/dist/lib/utils.js DELETED
@@ -1,650 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import dayjs from "dayjs";
13
- import { v4 as uuidv4 } from "uuid";
14
- export const DAY_IN_MILLISECONDS = 86400000;
15
- export const WEEK_IN_MILLISECONDS = DAY_IN_MILLISECONDS * 7;
16
- // Get the current date
17
- const currentDate = new Date();
18
- // Get the day of the week (Sunday = 0, Monday = 1, ..., Saturday = 6)
19
- const currentDayOfWeek = currentDate.getDay();
20
- // Calculate the start date of the week in milliseconds
21
- const startDate = new Date(currentDate);
22
- startDate.setDate(startDate.getDate() - currentDayOfWeek);
23
- startDate.setHours(0, 0, 0, 0);
24
- export const startDateMilliseconds = startDate.getTime();
25
- // Calculate the end date of the week in milliseconds
26
- const endDate = new Date(currentDate);
27
- endDate.setDate(endDate.getDate() + (6 - currentDayOfWeek));
28
- endDate.setHours(23, 59, 59, 999);
29
- export const endDateMilliseconds = endDate.getTime();
30
- export function getDayHourly(weekOffset, timeZone) {
31
- const dailyHours = [];
32
- let dayOffset = weekOffset;
33
- const resolvedCurrentDate = getCalendarDate(timeZone);
34
- const currentDayOfWeek = resolvedCurrentDate.getDay();
35
- const resolvedStartDate = new Date(resolvedCurrentDate);
36
- resolvedStartDate.setDate(resolvedStartDate.getDate() - currentDayOfWeek);
37
- resolvedStartDate.setHours(0, 0, 0, 0);
38
- // Loop to calculate the start and end hours for each day of the week
39
- for (let i = 0; i < 7; i++) {
40
- const dayDate = new Date(resolvedStartDate);
41
- dayDate.setDate(resolvedStartDate.getDate() + i);
42
- const dayStart = new Date(dayDate);
43
- dayStart.setHours(1, 0, 0, 0);
44
- const dayEnd = new Date(dayDate);
45
- dayEnd.setHours(23, 59, 59, 59);
46
- dailyHours.push({
47
- positionDay: i,
48
- day: new Date(dayStart.getTime() + (dayOffset * DAY_IN_MILLISECONDS)),
49
- start: dayStart.getTime() + (dayOffset * DAY_IN_MILLISECONDS),
50
- end: dayEnd.getTime() + (dayOffset * DAY_IN_MILLISECONDS),
51
- });
52
- }
53
- return dailyHours;
54
- }
55
- // Convert milliseconds to a readable date format
56
- export function millisecondsToDate(milliseconds) {
57
- const date = new Date(milliseconds);
58
- const daysOfWeek = ["Mon", "Tues", "Wed", "Thur", "Frid", "Sat", "Sun"];
59
- const dayOfWeek = daysOfWeek[date.getDay()];
60
- let hours = date.getHours();
61
- const minutes = date.getMinutes();
62
- const formattedDate = `${hours.toString().padStart(2, "0")}h:${minutes
63
- .toString()
64
- .padStart(2, "0")}`;
65
- return { formattedDate, dayOfWeek };
66
- }
67
- // Convert milliseconds to integer representation
68
- export function millisecondsToInt(milliseconds) {
69
- const date = new Date(milliseconds);
70
- const daysOfWeek = [
71
- "Sunday",
72
- "Monday",
73
- "Tuesday",
74
- "Wednesday",
75
- "Thursday",
76
- "Friday",
77
- "Saturday",
78
- ];
79
- const months = [
80
- "January",
81
- "February",
82
- "March",
83
- "April",
84
- "May",
85
- "June",
86
- "July",
87
- "August",
88
- "September",
89
- "October",
90
- "November",
91
- "December",
92
- ];
93
- const dayOfWeek = daysOfWeek[date.getDay()];
94
- const dayOfMonth = date.getDate();
95
- const month = months[date.getMonth()];
96
- let hours = date.getHours();
97
- const amOrPm = hours >= 12 ? " pm" : " am";
98
- const minutes = date.getMinutes();
99
- const formattedDate = hours.toString().padStart(2, "0");
100
- return { formattedDate, dayOfWeek };
101
- }
102
- // Get days of the week with a jump offset
103
- export function getWeekDays(jump, timeZone) {
104
- const days = ["Sun", "Mon", "Tues", "Wed", "Thur", "Frid", "Sat"];
105
- const month = [
106
- "Jan",
107
- "Feb",
108
- "Mar",
109
- "Apr",
110
- "May",
111
- "Jun",
112
- "Jul",
113
- "Aug",
114
- "Sept",
115
- "Oct",
116
- "Nov",
117
- "Dec",
118
- ];
119
- const currentDate = getCalendarDate(timeZone);
120
- const currentDayOfWeek = currentDate.getDay();
121
- let weekDays = [];
122
- for (let i = 0; i < 7; i++) {
123
- const day = getCalendarDate(timeZone);
124
- const diff = i - currentDayOfWeek;
125
- if (currentDayOfWeek === 0) {
126
- day.setDate(currentDate.getDate() + diff + jump - 7);
127
- }
128
- else {
129
- day.setDate(currentDate.getDate() + diff + jump);
130
- }
131
- const formattedDay = `${days[day.getDay()]}. ${day.getDate()}, ${month[day.getMonth()]} ${day.getFullYear()}`;
132
- weekDays.push({
133
- day: days[day.getDay()],
134
- dayMonth: month[day.getMonth()],
135
- dayYear: day.getFullYear(),
136
- dayOfTheMonth: day.getDate(),
137
- });
138
- }
139
- return weekDays;
140
- }
141
- // The remaining functions follow the same structure. Ensure all comments are in English and make the functions exportable as required.
142
- /**
143
- * Get the ISO week number for a given date.
144
- * @param date - The date to get the week number for.
145
- * @returns The ISO week number.
146
- */
147
- function getWeekNumber(date) {
148
- const tempDate = new Date(date.getTime());
149
- tempDate.setHours(0, 0, 0, 0);
150
- // Thursday in current week decides the year
151
- tempDate.setDate(tempDate.getDate() + 4 - (tempDate.getDay() || 7));
152
- const yearStart = new Date(tempDate.getFullYear(), 0, 1);
153
- const weekNumber = Math.ceil(((tempDate.getTime() - yearStart.getTime()) / DAY_IN_MILLISECONDS + 1) / 7);
154
- return weekNumber;
155
- }
156
- /**
157
- * Update the selected date to avoid issues with weeks starting on Sunday.
158
- * @param dateSelectionnee - The selected date.
159
- * @returns The updated date.
160
- */
161
- function updateSelectedDateForEcartSemaine(dateSelectionnee) {
162
- const updatedDate = new Date(dateSelectionnee.getTime());
163
- if (updatedDate.getDay() === 0) {
164
- updatedDate.setDate(updatedDate.getDate() + 1);
165
- }
166
- return updatedDate;
167
- }
168
- /**
169
- * Calculate the week difference between the selected date and the current date.
170
- * @param dateSelectionnee - The selected date.
171
- * @returns The week difference in days.
172
- */
173
- export function calculerEcartSemaine(dateSelectionnee, timeZone) {
174
- const dateActuelle = getCalendarDate(timeZone);
175
- // 1. Retrieve only the year, month, and day, and force it to midnight UTC.
176
- // This eliminates any risk related to time zones and daylight saving time.
177
- const utcSelected = Date.UTC(dateSelectionnee.getFullYear(), dateSelectionnee.getMonth(), dateSelectionnee.getDate());
178
- const utcActuelle = Date.UTC(dateActuelle.getFullYear(), dateActuelle.getMonth(), dateActuelle.getDate());
179
- const MS_PAR_JOUR = 86400000;
180
- // 2. Resize each date to the Sunday of its corresponding week.
181
- // getDay() returns a number from 0 (Sunday) to 6 (Saturday).
182
- // By subtracting (day * ms_per_day), we arrive at Sunday at midnight.
183
- const dimancheSelected = utcSelected - (dateSelectionnee.getDay() * MS_PAR_JOUR);
184
- const dimancheActuelle = utcActuelle - (dateActuelle.getDay() * MS_PAR_JOUR);
185
- const ecartJours = Math.round((dimancheSelected - dimancheActuelle) / MS_PAR_JOUR);
186
- return ecartJours; // Retournera 0, 7, -7, 14, -14...
187
- }
188
- /**
189
- * Calculate the number of weeks since an arbitrary origin date (January 1, 2022).
190
- * @param annee - The year.
191
- * @param numeroSemaine - The week number.
192
- * @returns The number of weeks since the origin date.
193
- */
194
- export function getSessionStorageRecordForDragAndDrop(tasks, positionDay, dropGroupId) {
195
- const dragtaskId = window.sessionStorage.getItem("calendardragtaskId");
196
- const dragtaskStart = window.sessionStorage.getItem("calendardragtaskStart");
197
- const dragtaskEnd = window.sessionStorage.getItem("calendardragtaskEnd");
198
- const dragdayIndex = window.sessionStorage.getItem("calendardragdayIndex");
199
- let newTask;
200
- let newTasks = [];
201
- window.sessionStorage.clear();
202
- if (!dragdayIndex || !dragtaskStart || !dragtaskEnd || !dragtaskId || !tasks)
203
- return;
204
- const dragTask = tasks.find((task) => task.taskId === dragtaskId);
205
- const dayIndex = parseInt(dragdayIndex);
206
- let ecartDaysIndex = positionDay - dayIndex;
207
- const convertTaskDropStart = new Date(parseInt(dragtaskStart));
208
- convertTaskDropStart.setDate(convertTaskDropStart.getDate() + ecartDaysIndex);
209
- const taskDropStart = convertTaskDropStart.getTime();
210
- let convertTaskDropEnd = new Date(parseInt(dragtaskEnd));
211
- convertTaskDropEnd.setDate(convertTaskDropEnd.getDate() + ecartDaysIndex);
212
- const taskDropEnd = convertTaskDropEnd.getTime();
213
- const taskDropDate = new Date(taskDropStart);
214
- if (dragTask) {
215
- const { taskStart, taskEnd, taskDate, groupId, dayIndex } = dragTask, rest = __rest(dragTask, ["taskStart", "taskEnd", "taskDate", "groupId", "dayIndex"]);
216
- newTask = Object.assign({ taskStart: taskDropStart, taskEnd: taskDropEnd, taskDate: taskDropDate, groupId: dropGroupId, dayIndex: positionDay }, rest);
217
- const dragTaskIndex = tasks.findIndex((task) => task.taskId === dragtaskId);
218
- newTasks = [...tasks];
219
- newTasks.splice(dragTaskIndex, 1, newTask);
220
- }
221
- return { taskDropStart, taskDropEnd, taskDropDate, newTask, newTasks };
222
- }
223
- export function compareWeekOffset(calendarDate, weekOffset, taskDate, timeZone) {
224
- // if (taskDate.getDay() === 0 && calculerEcartSemaine(taskDate) === -7) {
225
- // return true;
226
- // }
227
- const currentDate = getCalendarDate(timeZone);
228
- const currentWeekOffset = calculerEcartSemaine(currentDate, timeZone);
229
- const localTaskDate = getArbitraryDateInTimeZone(taskDate, timeZone);
230
- // if (calendarDate)
231
- // return (calculerEcartSemaine(calendarDate) === calculerEcartSemaine(taskDate));
232
- const ecartTask = calculerEcartSemaine(taskDate, timeZone);
233
- return weekOffset === ecartTask;
234
- }
235
- export const sumHoursByGroups = (groupId, tasks, weekOffset, calendarDate, timeZone) => {
236
- let sum = 0;
237
- if (tasks)
238
- tasks.forEach((task) => {
239
- if (task.groupId === groupId &&
240
- compareWeekOffset(calendarDate, weekOffset, task.taskDate, timeZone) === true) {
241
- sum += task.taskEnd - task.taskStart;
242
- }
243
- });
244
- return sum;
245
- };
246
- export function saveTasksToLocalStorage(tasks) {
247
- if (typeof window !== "undefined") {
248
- window.localStorage.setItem("Calendar", "je marche");
249
- const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
250
- const tasksString = JSON.stringify(tasks);
251
- if (tasksSavedString === tasksString)
252
- return;
253
- if (tasksString === "[]")
254
- return;
255
- const backup = [
256
- ...tasks.filter((task) => {
257
- {
258
- if (task === null || task === void 0 ? void 0 : task.taskExpiryDate) {
259
- const taskDate = new Date(task === null || task === void 0 ? void 0 : task.taskExpiryDate);
260
- return taskDate.getTime() >= Date.now();
261
- }
262
- }
263
- }),
264
- ];
265
- window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(backup));
266
- }
267
- }
268
- export const updateCalendarDateWithOffset = (offset, calendarDate) => {
269
- const newDate = new Date(calendarDate);
270
- newDate.setDate(newDate.getDate() + offset);
271
- return newDate;
272
- };
273
- export const updateOffsetWithDateCalendar = (calendarDate, timeZone) => {
274
- return calculerEcartSemaine(calendarDate, timeZone);
275
- };
276
- export const millisecondsToHours = (milliseconds) => {
277
- return millisecondsToDate(milliseconds).formattedDate;
278
- };
279
- export const checkDuplicates = (tasks, taskStart, taskEnd, groupId) => {
280
- const findDuplicates = tasks === null || tasks === void 0 ? void 0 : tasks.filter((task) => (taskStart >= task.taskStart && taskStart < task.taskEnd) ||
281
- (taskEnd > task.taskStart && taskEnd < task.taskEnd) ||
282
- (taskStart <= task.taskStart &&
283
- taskEnd > task.taskStart &&
284
- taskEnd >= task.taskEnd &&
285
- taskStart <= task.taskEnd)).filter((task) => task.groupId === groupId);
286
- return findDuplicates.length > 0;
287
- };
288
- export const getSavedTasks = () => {
289
- const taskSavedString = window.localStorage.getItem("CalendarTaskSaved");
290
- if (!taskSavedString) {
291
- return [];
292
- }
293
- const tasksTable = JSON.parse(taskSavedString);
294
- const savedTasks = tasksTable.map((task) => {
295
- const { taskDate, taskExpiryDate } = task, rest = __rest(task, ["taskDate", "taskExpiryDate"]);
296
- if (taskExpiryDate) {
297
- return Object.assign({ taskDate: new Date(taskDate), taskExpiryDate: new Date(taskExpiryDate) }, rest);
298
- }
299
- });
300
- return savedTasks;
301
- };
302
- export const deleteTaskSaved = (taskId) => {
303
- const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
304
- if (!tasksSavedString)
305
- return;
306
- const tasksSavedTable = JSON.parse(tasksSavedString);
307
- const taskIndex = tasksSavedTable.findIndex((task) => task.taskId === taskId);
308
- if (taskIndex) {
309
- tasksSavedTable.splice(taskIndex, 1);
310
- window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(tasksSavedTable));
311
- }
312
- };
313
- export const deleteTasksSaved = () => {
314
- window.localStorage.removeItem("CalendarTaskSaved");
315
- };
316
- export function getWeeksInMonth(year, month) {
317
- // Create a new date object for the first day of the given month
318
- const firstDay = new Date(year, month, 1);
319
- // Create a new date object for the last day of the given month
320
- const lastDay = new Date(year, month + 1, 0);
321
- // Get the day of the week of the first day of the month
322
- const startDay = firstDay.getDay();
323
- // Get the number of days in the month
324
- const daysInMonth = lastDay.getDate();
325
- // Calculate the number of weeks
326
- const weeks = Math.ceil((daysInMonth + startDay) / 7);
327
- return weeks;
328
- }
329
- export function getMonthNumber(monthName) {
330
- // List of months in order
331
- const months = [
332
- "January",
333
- "February",
334
- "March",
335
- "April",
336
- "May",
337
- "June",
338
- "July",
339
- "August",
340
- "September",
341
- "October",
342
- "November",
343
- "December",
344
- ];
345
- // Convert the month name to the corresponding month index
346
- const monthIndex = months.indexOf(monthName);
347
- // If the month name is valid, return its index (0-based)
348
- if (monthIndex !== -1) {
349
- return monthIndex;
350
- }
351
- else {
352
- // Return -1 if the month name is invalid
353
- console.error("Invalid month name");
354
- return -1;
355
- }
356
- }
357
- export function getDateObjectInTimeZone(timeZone) {
358
- try {
359
- let date = new Date(new Date().toLocaleString("en-US", { timeZone: timeZone }));
360
- return date;
361
- }
362
- catch (error) {
363
- return new Date();
364
- }
365
- }
366
- /**
367
- * Returns the current date according to the selected timezone or the local time.
368
- * @param timeZone - The optional timezone.
369
- * @returns The current date.
370
- */
371
- export function getCalendarDate(timeZone) {
372
- return timeZone ? getDateObjectInTimeZone(timeZone) : new Date();
373
- }
374
- export function getArbitraryDateInTimeZone(date, timeZone) {
375
- if (!timeZone)
376
- return date;
377
- try {
378
- return new Date(date.toLocaleString("en-US", { timeZone: timeZone }));
379
- }
380
- catch (error) {
381
- return date;
382
- }
383
- }
384
- function recurring(ecartDay, task, timeZone) {
385
- const newTask = Object.assign({}, task);
386
- newTask.taskStart = newTask.taskStart + ecartDay;
387
- newTask.taskEnd = newTask.taskEnd + ecartDay;
388
- if (newTask.taskExpiryDate)
389
- newTask.taskExpiryDate = new Date(newTask.taskExpiryDate.getTime() + ecartDay);
390
- newTask.taskDate = new Date(newTask.taskStart);
391
- newTask.dayIndex = getArbitraryDateInTimeZone(newTask.taskDate, timeZone).getDay();
392
- newTask.taskId = getUnqueId();
393
- return newTask;
394
- }
395
- export function recurringTasks(allTasks, task, recurrenceType, occurrences, timeZone) {
396
- const tasks = [];
397
- function daily() {
398
- for (let i = 0; i < occurrences; i++) {
399
- // Create a copy of the task with updated taskDate for each day
400
- const newTask = recurring(i * DAY_IN_MILLISECONDS, task, timeZone);
401
- if (!checkDuplicates(allTasks, newTask.taskStart, newTask.taskEnd, task.groupId)) {
402
- tasks.push(newTask);
403
- }
404
- }
405
- }
406
- function weekly() {
407
- for (let i = 0; i < occurrences; i++) {
408
- // Create a copy of the task with updated taskDate for each week
409
- const newTask = recurring(i * WEEK_IN_MILLISECONDS, task, timeZone);
410
- if (!checkDuplicates(allTasks, newTask.taskStart, newTask.taskEnd, task.groupId)) {
411
- tasks.push(newTask);
412
- }
413
- }
414
- }
415
- function monthly() {
416
- for (let i = 0; i < occurrences; i++) {
417
- // Create a copy of the task with updated taskDate for each week
418
- const newTask = recurring(dayjs(task.taskDate).daysInMonth() * i * DAY_IN_MILLISECONDS, task, timeZone);
419
- if (!checkDuplicates(allTasks, newTask.taskStart, newTask.taskEnd, task.groupId)) {
420
- tasks.push(newTask);
421
- }
422
- }
423
- }
424
- // Execute the correct recurrence function based on the type
425
- if (recurrenceType === "daily") {
426
- daily();
427
- }
428
- else if (recurrenceType === "weekly") {
429
- weekly();
430
- }
431
- else if (recurrenceType === "monthly") {
432
- monthly();
433
- }
434
- // Return the list of generated tasks
435
- return tasks;
436
- }
437
- export function getHoursByday(tasks, dayIndex, weekOffset, timeZone) {
438
- const sum = tasks.reduce((currentSum, task) => {
439
- if (task.dayIndex === dayIndex &&
440
- weekOffset === updateOffsetWithDateCalendar(task.taskDate, timeZone))
441
- return (currentSum +
442
- Math.ceil((task.taskEnd - task.taskStart) / DAY_IN_MILLISECONDS));
443
- return currentSum;
444
- }, 0);
445
- return sum;
446
- }
447
- export function getHoursByGroup(tasks, groupId, weekOffset, timeZone) {
448
- const sum = tasks.reduce((currentSum, task) => {
449
- if (task.groupId === groupId &&
450
- weekOffset === updateOffsetWithDateCalendar(task.taskDate, timeZone))
451
- return (currentSum +
452
- Math.ceil((task.taskEnd - task.taskStart) / DAY_IN_MILLISECONDS));
453
- return currentSum;
454
- }, 0);
455
- return sum;
456
- }
457
- export function getTaskProgression(task, timeZone) {
458
- const now = getCalendarDate(timeZone);
459
- if (task.taskStart >= now.getTime())
460
- return 0;
461
- if (now.getTime() >= task.taskEnd)
462
- return 100;
463
- const progression = ((now.getTime() - task.taskStart) / (task.taskEnd - task.taskStart)) * 100;
464
- return progression.toFixed(0);
465
- }
466
- export function convertTasksToIcsFormat(tasks) {
467
- const ics = tasks.reduce((previousIcs, task) => {
468
- previousIcs += `
469
-
470
- BEGIN:VCALENDAR
471
- VERSION:1.0
472
- BEGIN:VEVENT
473
- DTSTART:${task.taskStart}
474
- DTEND:${task.taskEnd}
475
- LOCATION:
476
- DESCRIPTION:Purpose: Provide example of this file type Document file type: ICS Version: 1.0 Created by http://www.online-convert.com More example files: http://www.online-convert.com/file-type License: http://creativecommons.org/licenses Feel free to use & share the file according to the license above.
477
- SUMMARY:ICS test file
478
- PRIORITY:3
479
- END:VEVENT
480
- END:VCALENDAR
481
-
482
- `;
483
- return previousIcs;
484
- }, "");
485
- return ics;
486
- }
487
- export function addTask(tasks, task) {
488
- return [...tasks, task];
489
- }
490
- export function deleteTask(tasks, taskId) {
491
- const taskPos = tasks.findIndex((task) => task.taskId === taskId);
492
- const alltasks = [...tasks];
493
- alltasks.splice(taskPos, 1);
494
- return alltasks;
495
- }
496
- export function getTaskInfoById(tasks, groups, taskId) {
497
- const task = tasks.find((task) => task.taskId === taskId);
498
- if (!task)
499
- throw new Error("no such to task");
500
- const group = groups.find((group) => group.id === task.groupId);
501
- return {
502
- group,
503
- task,
504
- };
505
- }
506
- export function selectTask(task) {
507
- if (typeof window !== "undefined") {
508
- const copiedTasks = JSON.parse(window.sessionStorage.getItem("copiedTasks") || "[]");
509
- if (copiedTasks.length > 0) {
510
- window.sessionStorage.setItem("copiedTasks", JSON.stringify([...copiedTasks, task]));
511
- }
512
- else
513
- window.sessionStorage.setItem("copiedTasks", JSON.stringify([task]));
514
- }
515
- }
516
- export function deSelectTask(task) {
517
- if (typeof window !== "undefined") {
518
- const copiedTasks = JSON.parse(window.sessionStorage.getItem("copiedTasks") || "[]");
519
- if (copiedTasks.length > 0) {
520
- const newTasks = deleteTask(copiedTasks, task.taskId);
521
- window.sessionStorage.setItem("copiedTasks", JSON.stringify([...newTasks]));
522
- }
523
- else
524
- throw new Error("Sorry there are no tasks to select");
525
- }
526
- }
527
- export function copyTasks(task) {
528
- selectTask(task);
529
- }
530
- export function cutTasks(task, tasks) {
531
- copyTasks(task);
532
- const newTasks = deleteTask(tasks, task.taskId);
533
- return newTasks;
534
- }
535
- function updateTaskStartTimeAnEndTime(start, end, calendarOffset, dayIndex, taskPosition, timeZone) {
536
- const diffDay = dayIndex +
537
- calendarOffset -
538
- (taskPosition + updateOffsetWithDateCalendar(new Date(start), timeZone));
539
- const startTime = start + diffDay * DAY_IN_MILLISECONDS;
540
- const endTime = end + diffDay * DAY_IN_MILLISECONDS;
541
- return { startTime, endTime };
542
- }
543
- export function getUnqueId() {
544
- const uid = uuidv4();
545
- return uid;
546
- }
547
- export function pastTasks(dayInfo, groupId, tasks, taskExpiryDate, timeZone) {
548
- if (typeof window !== "undefined") {
549
- const copiedTasks = JSON.parse(window.sessionStorage.getItem("copiedTasks") || "[]");
550
- if (copiedTasks.length > 0) {
551
- const newTasks = copiedTasks.reduce((previousTasks, task) => {
552
- const { dayIndex: copiedTaskDayIndex, taskStart: copiedTasktaskStart, taskEnd: copiedTasktaskEnd, taskDate: copiedTasktaskDate, groupId: copiedTaskGroupId, taskId: copiedTaskId, taskExpiryDate: copiedTaskExpiryDate } = task, rest = __rest(task, ["dayIndex", "taskStart", "taskEnd", "taskDate", "groupId", "taskId", "taskExpiryDate"]);
553
- const newTaskStartAndEnd = updateTaskStartTimeAnEndTime(copiedTasktaskStart, copiedTasktaskEnd, updateOffsetWithDateCalendar(dayInfo.day, timeZone), dayInfo.positionDay, copiedTaskDayIndex, timeZone);
554
- if (!checkDuplicates(previousTasks, newTaskStartAndEnd.startTime, newTaskStartAndEnd.endTime, groupId)) {
555
- const newTaskDate = new Date(newTaskStartAndEnd.startTime);
556
- const newTaskId = `${getUnqueId()}`;
557
- const newTask = Object.assign({ taskStart: newTaskStartAndEnd.startTime, taskEnd: newTaskStartAndEnd.endTime, dayIndex: dayInfo.positionDay, taskId: newTaskId, taskDate: newTaskDate, groupId: groupId, taskExpiryDate: taskExpiryDate }, rest);
558
- return [...previousTasks, newTask];
559
- }
560
- else
561
- return previousTasks;
562
- }, []);
563
- window.sessionStorage.removeItem("copiedTasks");
564
- return [...tasks, ...newTasks];
565
- }
566
- else
567
- throw new Error("no past task(s)");
568
- }
569
- }
570
- export function updateTask(tasks, taskId, newtask) {
571
- return tasks.map((task) => {
572
- if (task.taskId === taskId) {
573
- return newtask;
574
- }
575
- return task;
576
- });
577
- }
578
- export function duplicateTasksForPeriod(periodStart, periodEnd, calendarOffset, allTasks) {
579
- if (periodStart > periodEnd)
580
- throw new Error("period Start is after period End");
581
- let tasks = [...allTasks];
582
- const currentWeekallTasks = allTasks.filter((planning) => planning.offset === calendarOffset);
583
- for (let dayInMilliseconds = periodStart.getTime(); dayInMilliseconds <= periodEnd.getTime(); dayInMilliseconds += DAY_IN_MILLISECONDS) {
584
- const dayIndex = new Date(dayInMilliseconds).getDay();
585
- const findPlanning = currentWeekallTasks.filter((planning) => planning.dayIndex === dayIndex);
586
- if (findPlanning.length > 0) {
587
- findPlanning.forEach((plan) => {
588
- const { taskStart, taskEnd, taskDate, offset, taskId } = plan, rest = __rest(plan, ["taskStart", "taskEnd", "taskDate", "offset", "taskId"]);
589
- const newOffset = updateOffsetWithDateCalendar(periodEnd);
590
- const ecartDay = Math.round((periodEnd.getTime() - periodStart.getTime()) / DAY_IN_MILLISECONDS);
591
- const newTaskStart = taskStart + ecartDay * DAY_IN_MILLISECONDS;
592
- const newTaskEnd = taskEnd + ecartDay * DAY_IN_MILLISECONDS;
593
- const newTaskDate = new Date(taskDate.getTime() + ecartDay * DAY_IN_MILLISECONDS);
594
- if (!checkDuplicates(allTasks, newTaskStart, newTaskEnd, rest.groupId)) {
595
- const newTask = Object.assign(Object.assign({}, rest), { taskDate: newTaskDate, taskStart: newTaskStart, taskEnd: newTaskEnd, taskId: getUnqueId() });
596
- tasks.push(Object.assign(Object.assign({}, newTask), { offset: newOffset }));
597
- }
598
- });
599
- }
600
- }
601
- return tasks;
602
- }
603
- export function duplicateTaskForPeriod(periodStart, periodEnd, task, ecartDay, groupId, taskExpiryDate) {
604
- if (periodStart >= periodEnd)
605
- throw new Error("period Start is after period End");
606
- let allTasks = [];
607
- for (let dayInMilliseconds = periodStart.getTime(); dayInMilliseconds <= periodEnd.getTime(); dayInMilliseconds += ecartDay
608
- ? DAY_IN_MILLISECONDS * ecartDay
609
- : DAY_IN_MILLISECONDS) {
610
- const { taskStart, taskEnd, taskDate, offset, taskId, groupId: currentTaskGroupId, taskExpiryDate: currentTaskExpiryDate } = task, rest = __rest(task, ["taskStart", "taskEnd", "taskDate", "offset", "taskId", "groupId", "taskExpiryDate"]);
611
- const newOffset = updateOffsetWithDateCalendar(periodEnd);
612
- const ecartDay = Math.round((dayInMilliseconds - taskDate.getTime()) / DAY_IN_MILLISECONDS);
613
- const newTaskStart = taskStart + ecartDay * DAY_IN_MILLISECONDS;
614
- const newTaskEnd = taskEnd + ecartDay * DAY_IN_MILLISECONDS;
615
- const newTaskDate = new Date(taskDate.getTime() + ecartDay * DAY_IN_MILLISECONDS);
616
- if (!checkDuplicates(allTasks, newTaskStart, newTaskEnd, rest.groupId)) {
617
- const newTask = Object.assign(Object.assign({}, rest), { taskDate: newTaskDate, taskStart: newTaskStart, taskEnd: newTaskEnd, taskId: getUnqueId(), groupId: groupId ? groupId : currentTaskGroupId, taskExpiryDate: taskExpiryDate });
618
- allTasks.push(Object.assign(Object.assign({}, newTask), { offset: newOffset }));
619
- }
620
- }
621
- return allTasks;
622
- }
623
- export const GetTimeRangeByDay = (start, end) => {
624
- const hourToMillisecond = 3600000;
625
- const range = [];
626
- for (let i = start; i < end; i += hourToMillisecond) {
627
- range.push(i);
628
- }
629
- return range;
630
- };
631
- export function totalLabel(milliseconds) {
632
- let label = "";
633
- const hourConv = milliseconds / 3600000;
634
- const truncHour = Math.trunc(hourConv);
635
- if (hourConv !== truncHour) {
636
- const deciHour = hourConv - truncHour;
637
- const minConv = deciHour * 60;
638
- const truncMin = Math.trunc(minConv);
639
- if (truncMin !== minConv) {
640
- const deciMin = minConv - truncMin;
641
- const secConv = deciMin * 60;
642
- label = `${truncHour}:${truncMin}:${Math.trunc(secConv)}`;
643
- }
644
- else
645
- label = `${truncHour}:${minConv}:0`;
646
- }
647
- else
648
- label = `${hourConv}:0:0`;
649
- return label;
650
- }
@@ -1,3 +0,0 @@
1
- import { AddTaskPropsType } from "../../definitions";
2
- declare const _default: import("react").MemoExoticComponent<({ currentGroup, handleAddTask, addTaskRender, dayInfo, addTaskStyle, addTaskClassName, }: AddTaskPropsType) => import("react/jsx-runtime").JSX.Element>;
3
- export default _default;
@@ -1,4 +0,0 @@
1
- import { CalendarTablePropsType } from "../definitions";
2
- declare function CalendarForWeek(props: CalendarTablePropsType): import("react/jsx-runtime").JSX.Element;
3
- declare const _default: import("react").MemoExoticComponent<typeof CalendarForWeek>;
4
- export default _default;
@@ -1,5 +0,0 @@
1
- import "./style.css";
2
- import { CalendarTablePropsType } from "../definitions";
3
- declare function CalendarForDay(props: CalendarTablePropsType): import("react/jsx-runtime").JSX.Element;
4
- declare const _default: import("react").MemoExoticComponent<typeof CalendarForDay>;
5
- export default _default;
@@ -1,3 +0,0 @@
1
- import { DayPropsType } from "../../definitions";
2
- declare const _default: import("react").MemoExoticComponent<({ dayIndex, dayOfTheMonth, day, dayMonth, dayYear, dayRender, className, style, }: DayPropsType) => import("react/jsx-runtime").JSX.Element>;
3
- export default _default;
@@ -1,3 +0,0 @@
1
- import { GroupPropsType } from "../../definitions";
2
- declare const _default: import("react").MemoExoticComponent<({ className, style, groupRender, currentGroup, handleClickGroup, }: GroupPropsType) => import("react/jsx-runtime").JSX.Element>;
3
- export default _default;
@@ -1,3 +0,0 @@
1
- import { GroupsHeadContainerPropsType } from "../../definitions";
2
- declare const _default: import("react").MemoExoticComponent<({ groupsHeadRender, style, className, }: GroupsHeadContainerPropsType) => import("react/jsx-runtime").JSX.Element>;
3
- export default _default;
@@ -1,3 +0,0 @@
1
- import { SumHoursContainerPropsType } from "../../definitions";
2
- declare const _default: import("react").MemoExoticComponent<({ groupId, tasks, weekOffset, calendarDate, sumHoursByGroups, sumHoursRender, className, style, }: SumHoursContainerPropsType) => import("react/jsx-runtime").JSX.Element>;
3
- export default _default;