react-weekly-planning 1.0.18 → 1.0.19

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.
package/definition.txt CHANGED
@@ -316,3 +316,4 @@ export type SumHoursContainerPropsType = {
316
316
  style?: React.CSSProperties | undefined;
317
317
  className?: string;
318
318
  };
319
+ https://www.linkedin.com/in/patrick-aime?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app
@@ -310,6 +310,8 @@ export type TaskType = {
310
310
  dayIndex: number;
311
311
  /** Unique identifier for the task. */
312
312
  taskId: string;
313
+ /** This is a prop to save the date in local storage until a date of your choice */
314
+ taskExpiryDate?:Date
313
315
  };
314
316
 
315
317
  /**
package/index.js CHANGED
@@ -1,6 +1,17 @@
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
+ };
1
12
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
13
  import "./style.css";
3
- import { getWeekDays, getDayHourly, calculerEcartSemaine, getSessionStorageRecordForDragAndDrop, sumHoursByGroups, millisecondsToDate, compareWeekOffset, } from "./lib/utils";
14
+ import { getWeekDays, getDayHourly, calculerEcartSemaine, getSessionStorageRecordForDragAndDrop, sumHoursByGroups, millisecondsToDate, compareWeekOffset, saveTasksToLocalStorage, } from "./lib/utils";
4
15
  const theadTrStyle = {
5
16
  color: "#0f5173",
6
17
  fontWeight: "300",
@@ -74,6 +85,7 @@ const Calendar = ({ style, className, groups, weekOffset, date, groupRender, day
74
85
  const handleDragOver = (event) => {
75
86
  event.preventDefault();
76
87
  };
88
+ saveTasksToLocalStorage(tasks);
77
89
  return (_jsxs("table", { className: `planningCalendar ${className}`, style: Object.assign({}, style), children: [_jsx("thead", { children: _jsxs("tr", { className: `${rowsClassName}`, style: Object.assign(Object.assign({}, theadTrStyle), rowsStyle), children: [_jsx("th", { className: "dayTh", children: _jsx(GroupsHeadContainer, { className: `${groupHeadContainerClassName}`, style: groupHeadContainerStyle, groupsHeadRender: groupsHeadRender }) }), weekDays.map((day, i) => (_jsx("th", { className: `${daysColsClassName}`, style: Object.assign({}, daysColsStyle), children: _jsx(DayContainer, { style: dayStyle, className: dayClassName, dayIndex: i, dayRender: dayRender, day: day.day, dayOfTheMonth: day.dayOfTheMonth, dayMonth: day.dayMonth, dayYear: day.dayYear }) }, i))), _jsx("th", { className: "totalTh", children: _jsx(SumHoursHead, { className: sumHoursHeadClassName, style: sumHoursHeadStyle, sumHoursHeadRender: sumHoursHeadRender }) })] }, "") }), _jsx("tbody", { children: groups === null || groups === void 0 ? void 0 : groups.map((group, i) => (_jsxs("tr", { className: `${rowsClassName}`, style: Object.assign({}, rowsStyle), children: [_jsx("td", { className: `${groupsColsClassName}`, style: Object.assign(Object.assign({}, groupTdStyle), groupsColsStyle), children: _jsx(GroupContainer, { style: groupStyle, className: groupClassName, groupRender: groupRender, currentGroup: group, handleClickGroup: handleClickGroup }) }, i), dailyHours.map((_, positionDay) => (_jsx("td", { onDragOver: handleDragOver, onDrop: (event) => {
78
90
  if (!handleDropTask || !tasks)
79
91
  return;
@@ -205,4 +217,39 @@ export const checkDuplicates = (tasks, taskStart, taskEnd, groupId) => {
205
217
  taskStart <= task.taskEnd)).filter((task) => task.groupId === groupId);
206
218
  return findDuplicates.length > 0;
207
219
  };
220
+ export const getTasksSaved = () => {
221
+ const taskSavedString = window.localStorage.getItem("CalendarTaskSaved");
222
+ if (!taskSavedString) {
223
+ return [];
224
+ }
225
+ const tasksTable = JSON.parse(taskSavedString);
226
+ const validTasks = tasksTable
227
+ .filter((task) => {
228
+ if (task === null || task === void 0 ? void 0 : task.taskExpiryDate) {
229
+ const taskDate = new Date(task === null || task === void 0 ? void 0 : task.taskExpiryDate);
230
+ return taskDate.getTime() >= Date.now();
231
+ }
232
+ })
233
+ .map((task) => {
234
+ const { taskDate, taskExpiryDate } = task, rest = __rest(task, ["taskDate", "taskExpiryDate"]);
235
+ if (taskExpiryDate) {
236
+ return Object.assign({ taskDate: new Date(taskDate), taskExpiryDate: new Date(taskExpiryDate) }, rest);
237
+ }
238
+ });
239
+ return validTasks;
240
+ };
241
+ export const deleteTaskSaved = (taskId) => {
242
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
243
+ if (!tasksSavedString)
244
+ return;
245
+ const tasksSavedTable = JSON.parse(tasksSavedString);
246
+ const taskIndex = tasksSavedTable.findIndex((task) => task.taskId === taskId);
247
+ if (taskIndex) {
248
+ tasksSavedTable.splice(taskIndex, 1);
249
+ window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(tasksSavedTable));
250
+ }
251
+ };
252
+ export const deleteTasksSaved = () => {
253
+ window.localStorage.removeItem("CalendarTaskSaved");
254
+ };
208
255
  export default Calendar;
package/index.tsx CHANGED
@@ -19,9 +19,9 @@ import {
19
19
  sumHoursByGroups,
20
20
  millisecondsToDate,
21
21
  compareWeekOffset,
22
+ saveTasksToLocalStorage,
22
23
  } from "./lib/utils";
23
24
 
24
-
25
25
  const theadTrStyle: StyleType = {
26
26
  color: "#0f5173",
27
27
  fontWeight: "300",
@@ -139,6 +139,8 @@ const Calendar = ({
139
139
  const handleDragOver = (event: React.DragEvent<HTMLTableDataCellElement>) => {
140
140
  event.preventDefault();
141
141
  };
142
+
143
+ saveTasksToLocalStorage(tasks);
142
144
  return (
143
145
  <table className={`planningCalendar ${className}`} style={{ ...style }}>
144
146
  <thead>
@@ -158,7 +160,7 @@ const Calendar = ({
158
160
  <th
159
161
  key={i}
160
162
  className={`${daysColsClassName}`}
161
- style={{...daysColsStyle }}
163
+ style={{ ...daysColsStyle }}
162
164
  >
163
165
  <DayContainer
164
166
  style={dayStyle}
@@ -191,7 +193,7 @@ const Calendar = ({
191
193
  <td
192
194
  className={`${groupsColsClassName}`}
193
195
  key={i}
194
- style={{ ...groupTdStyle,...groupsColsStyle }}
196
+ style={{ ...groupTdStyle, ...groupsColsStyle }}
195
197
  >
196
198
  <GroupContainer
197
199
  style={groupStyle}
@@ -579,4 +581,49 @@ export const checkDuplicates = (
579
581
  .filter((task) => task.groupId === groupId);
580
582
  return findDuplicates.length > 0;
581
583
  };
584
+
585
+ export const getTasksSaved = () => {
586
+ const taskSavedString = window.localStorage.getItem("CalendarTaskSaved");
587
+ if (!taskSavedString) {
588
+ return [];
589
+ }
590
+ const tasksTable: TasksType = JSON.parse(taskSavedString);
591
+ const validTasks = tasksTable
592
+ .filter((task) => {
593
+ if (task?.taskExpiryDate) {
594
+ const taskDate = new Date(task?.taskExpiryDate);
595
+ return taskDate.getTime() >= Date.now();
596
+ }
597
+ })
598
+ .map((task) => {
599
+ const { taskDate, taskExpiryDate, ...rest } = task;
600
+ if (taskExpiryDate) {
601
+ return {
602
+ taskDate: new Date(taskDate),
603
+ taskExpiryDate: new Date(taskExpiryDate),
604
+ ...rest,
605
+ };
606
+ }
607
+ });
608
+ return validTasks;
609
+ };
610
+
611
+ export const deleteTaskSaved = (taskId: string) => {
612
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
613
+ if (!tasksSavedString) return;
614
+ const tasksSavedTable: TasksType = JSON.parse(tasksSavedString);
615
+ const taskIndex = tasksSavedTable.findIndex((task) => task.taskId === taskId);
616
+ if (taskIndex) {
617
+ tasksSavedTable.splice(taskIndex, 1);
618
+ window.localStorage.setItem(
619
+ "CalendarTaskSaved",
620
+ JSON.stringify(tasksSavedTable)
621
+ );
622
+ }
623
+ };
624
+
625
+ export const deleteTasksSaved = () => {
626
+ window.localStorage.removeItem("CalendarTaskSaved");
627
+ };
628
+
582
629
  export default Calendar;
package/lib/utils.js CHANGED
@@ -26,6 +26,10 @@ endDate.setHours(23, 59, 59, 999);
26
26
  const endDateMilliseconds = endDate.getTime();
27
27
  function getDayHourly(weekOffset) {
28
28
  const dailyHours = [];
29
+ let dayOffset = weekOffset;
30
+ if (currentDate.getDay() === 0) {
31
+ dayOffset = dayOffset - 7;
32
+ }
29
33
  // Boucle pour calculer les heures de début et de fin de chaque jour de la semaine
30
34
  for (let i = 0; i < 7; i++) {
31
35
  const dayDate = new Date(startDate);
@@ -36,9 +40,9 @@ function getDayHourly(weekOffset) {
36
40
  dayEnd.setHours(23, 59, 59, 59);
37
41
  dailyHours.push({
38
42
  positionDay: i,
39
- day: new Date(dayStart.getTime() + weekOffset * 86400000),
40
- start: dayStart.getTime() + weekOffset * 86400000,
41
- end: dayEnd.getTime() + weekOffset * 86400000,
43
+ day: new Date(dayStart.getTime() + dayOffset * 86400000),
44
+ start: dayStart.getTime() + dayOffset * 86400000,
45
+ end: dayEnd.getTime() + dayOffset * 86400000,
42
46
  });
43
47
  }
44
48
  return dailyHours;
@@ -125,7 +129,12 @@ function getWeekDays(jump) {
125
129
  for (let i = 0; i < 7; i++) {
126
130
  const day = new Date();
127
131
  const diff = i - currentDayOfWeek;
128
- day.setDate(currentDate.getDate() + diff + jump);
132
+ if (currentDayOfWeek === 0) {
133
+ day.setDate(currentDate.getDate() + diff + jump - 7);
134
+ }
135
+ else {
136
+ day.setDate(currentDate.getDate() + diff + jump);
137
+ }
129
138
  const formattedDay = `${days[day.getDay()]}. ${day.getDate()}, ${month[day.getMonth()]} ${day.getFullYear()}`;
130
139
  weekDays.push({
131
140
  day: days[day.getDay()],
@@ -400,6 +409,7 @@ function calculerEcartSemaine(dateSelectionnee) {
400
409
  function semainesDepuisOrigine(annee, numeroSemaine) {
401
410
  const dateActuelle = new Date();
402
411
  const dateOrigine = new Date(dateActuelle.getFullYear() - 2, 0, 1);
412
+ console.log(dateOrigine);
403
413
  const anneeOrigine = dateOrigine.getFullYear();
404
414
  const numeroSemaineOrigine = getWeekNumber(dateOrigine);
405
415
  let nombreSemaines = 0;
@@ -456,4 +466,14 @@ const sumHoursByGroups = (groupId, tasks, weekOffset, calendarDate) => {
456
466
  });
457
467
  return sum;
458
468
  };
459
- export { getWeeksListUpdate, clickedDate, getCalandarDays, startDateMilliseconds, endDateMilliseconds, getDayHourly, millisecondsToDate, getWeekDays, formatDateToCustomFormat, displayDayOnModalLeft, millisecondsToInt, getWeekMonthAndYear, getWeeksList, getDoubleWeeksList, calculerEcartSemaine, calculateTimeOfDayRange, getSessionStorageRecordForDragAndDrop, compareWeekOffset, sumHoursByGroups, };
469
+ function saveTasksToLocalStorage(tasks) {
470
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
471
+ const tasksString = JSON.stringify(tasks);
472
+ if (tasksSavedString === tasksString)
473
+ return;
474
+ if (tasksString === "[]")
475
+ return;
476
+ const backup = [...tasks.filter((task) => task.taskExpiryDate)];
477
+ window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(backup));
478
+ }
479
+ export { getWeeksListUpdate, saveTasksToLocalStorage, clickedDate, getCalandarDays, startDateMilliseconds, endDateMilliseconds, getDayHourly, millisecondsToDate, getWeekDays, formatDateToCustomFormat, displayDayOnModalLeft, millisecondsToInt, getWeekMonthAndYear, getWeeksList, getDoubleWeeksList, calculerEcartSemaine, calculateTimeOfDayRange, getSessionStorageRecordForDragAndDrop, compareWeekOffset, sumHoursByGroups, };
package/lib/utils.ts CHANGED
@@ -1,10 +1,5 @@
1
1
  import moment from "moment";
2
- import {
3
- TasksType,
4
- TaskType,
5
- TaskFeildsType,
6
- GroupFeildsType,
7
- } from "../definitions";
2
+ import { TasksType, TaskType, TaskFeildsType } from "../definitions";
8
3
  // Obtenir la date actuelle
9
4
  const currentDate = new Date();
10
5
  // Obtenir le jour de la semaine (dimanche = 0, lundi = 1, ..., samedi = 6)
@@ -28,7 +23,10 @@ function getDayHourly(weekOffset: number) {
28
23
  start: number;
29
24
  end: number;
30
25
  }[] = [];
31
-
26
+ let dayOffset = weekOffset;
27
+ if (currentDate.getDay() === 0) {
28
+ dayOffset = dayOffset - 7;
29
+ }
32
30
  // Boucle pour calculer les heures de début et de fin de chaque jour de la semaine
33
31
  for (let i = 0; i < 7; i++) {
34
32
  const dayDate = new Date(startDate);
@@ -40,9 +38,9 @@ function getDayHourly(weekOffset: number) {
40
38
 
41
39
  dailyHours.push({
42
40
  positionDay: i,
43
- day: new Date(dayStart.getTime() + weekOffset * 86400000),
44
- start: dayStart.getTime() + weekOffset * 86400000,
45
- end: dayEnd.getTime() + weekOffset * 86400000,
41
+ day: new Date(dayStart.getTime() + dayOffset * 86400000),
42
+ start: dayStart.getTime() + dayOffset * 86400000,
43
+ end: dayEnd.getTime() + dayOffset * 86400000,
46
44
  });
47
45
  }
48
46
  return dailyHours;
@@ -144,8 +142,11 @@ function getWeekDays(jump: number) {
144
142
  for (let i = 0; i < 7; i++) {
145
143
  const day = new Date();
146
144
  const diff = i - currentDayOfWeek;
147
-
148
- day.setDate(currentDate.getDate() + diff + jump);
145
+ if (currentDayOfWeek === 0) {
146
+ day.setDate(currentDate.getDate() + diff + jump - 7);
147
+ } else {
148
+ day.setDate(currentDate.getDate() + diff + jump);
149
+ }
149
150
 
150
151
  const formattedDay = `${days[day.getDay()]}. ${day.getDate()}, ${
151
152
  month[day.getMonth()]
@@ -597,8 +598,19 @@ const sumHoursByGroups = (
597
598
  });
598
599
  return sum;
599
600
  };
601
+
602
+ function saveTasksToLocalStorage(tasks: TasksType) {
603
+ const tasksSavedString = window.localStorage.getItem("CalendarTaskSaved");
604
+ const tasksString = JSON.stringify(tasks);
605
+ if (tasksSavedString === tasksString) return;
606
+ if (tasksString === "[]") return;
607
+ const backup = [...tasks.filter((task) => task.taskExpiryDate)];
608
+ window.localStorage.setItem("CalendarTaskSaved", JSON.stringify(backup));
609
+ }
610
+
600
611
  export {
601
612
  getWeeksListUpdate,
613
+ saveTasksToLocalStorage,
602
614
  clickedDate,
603
615
  getCalandarDays,
604
616
  startDateMilliseconds,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-weekly-planning",
3
- "version": "1.0.18",
3
+ "version": "1.0.19",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
package/style.css CHANGED
@@ -53,7 +53,7 @@
53
53
  width: 100%;
54
54
  height: 150px;
55
55
  border-radius: 0.5rem;
56
- z-index: 10
56
+ z-index: 10;
57
57
  }
58
58
  .planningCalendar .dayTh{
59
59
  color: #0f5173;