react-weekly-planning 1.0.5 → 1.0.7
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/docs/index.html +1 -11
- package/docs/index.ts.html +2 -2
- package/lib/utils.js +42 -21
- package/lib/utils.ts +51 -30
- package/package.json +1 -1
package/docs/index.html
CHANGED
|
@@ -330,18 +330,8 @@ taskId, taskStart taskEnd, task, taskDate, groupId, dayIndex
|
|
|
330
330
|
</tr>
|
|
331
331
|
<tr>
|
|
332
332
|
<td><code>addTaskRender</code></td>
|
|
333
|
-
<td>addTaskRender?: ({currentGroup,dayInfo}:{
|
|
334
|
-
<td></td>
|
|
335
|
-
</tr>
|
|
336
|
-
<tr>
|
|
337
|
-
<td>currentGroup: GroupFeildsType;dayInfo: dayInfoType;</td>
|
|
338
|
-
<td></td>
|
|
339
|
-
<td></td>
|
|
340
|
-
</tr>
|
|
341
|
-
<tr>
|
|
342
|
-
<td>}) => React.ReactNode;</td>
|
|
333
|
+
<td>addTaskRender?: ({currentGroup,dayInfo}:{currentGroup: GroupFeildsType;dayInfo: dayInfoType}) => React.ReactNode;</td>
|
|
343
334
|
<td>Custom render function for adding a task.</td>
|
|
344
|
-
<td></td>
|
|
345
335
|
</tr>
|
|
346
336
|
<tr>
|
|
347
337
|
<td><code>tasks</code></td>
|
package/docs/index.ts.html
CHANGED
|
@@ -124,7 +124,7 @@ type GroupRiquiredFieldsType = {
|
|
|
124
124
|
/**
|
|
125
125
|
* Additional fields for a group.
|
|
126
126
|
*/
|
|
127
|
-
type GroupAdditionalFieldsType = Record<any,
|
|
127
|
+
type GroupAdditionalFieldsType = Record<any,any>;
|
|
128
128
|
|
|
129
129
|
/**
|
|
130
130
|
* Fields for a group, including both required and additional fields.
|
|
@@ -467,7 +467,7 @@ export type SumHoursHeadContainerPropsType = {
|
|
|
467
467
|
/**
|
|
468
468
|
* Additional fields for a task.
|
|
469
469
|
*/
|
|
470
|
-
type TaskAdditionalFieldsType = Record<any,
|
|
470
|
+
type TaskAdditionalFieldsType = Record<any, any>;
|
|
471
471
|
|
|
472
472
|
/**
|
|
473
473
|
* Fields for a task, including both required and additional fields.
|
package/lib/utils.js
CHANGED
|
@@ -346,46 +346,64 @@ const calculateTimeOfDayRange = (start, end) => {
|
|
|
346
346
|
}
|
|
347
347
|
return range;
|
|
348
348
|
};
|
|
349
|
+
/**
|
|
350
|
+
* Get the ISO week number for a given date.
|
|
351
|
+
* @param date - The date to get the week number for.
|
|
352
|
+
* @returns The ISO week number.
|
|
353
|
+
*/
|
|
349
354
|
function getWeekNumber(date) {
|
|
350
|
-
date.
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
355
|
+
const tempDate = new Date(date.getTime());
|
|
356
|
+
tempDate.setHours(0, 0, 0, 0);
|
|
357
|
+
// Thursday in current week decides the year
|
|
358
|
+
tempDate.setDate(tempDate.getDate() + 4 - (tempDate.getDay() || 7));
|
|
359
|
+
const yearStart = new Date(tempDate.getFullYear(), 0, 1);
|
|
360
|
+
const weekNumber = Math.ceil((((tempDate.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);
|
|
354
361
|
return weekNumber;
|
|
355
362
|
}
|
|
363
|
+
/**
|
|
364
|
+
* Update the selected date to avoid issues with weeks starting on Sunday.
|
|
365
|
+
* @param dateSelectionnee - The selected date.
|
|
366
|
+
* @returns The updated date.
|
|
367
|
+
*/
|
|
356
368
|
function updateSelectedDateForEcartSemaine(dateSelectionnee) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
369
|
+
const updatedDate = new Date(dateSelectionnee.getTime());
|
|
370
|
+
if (updatedDate.getDay() === 0) {
|
|
371
|
+
updatedDate.setDate(updatedDate.getDate() + 1);
|
|
372
|
+
}
|
|
373
|
+
return updatedDate;
|
|
360
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Calculate the week difference between the selected date and the current date.
|
|
377
|
+
* @param dateSelectionnee - The selected date.
|
|
378
|
+
* @returns The week difference in days.
|
|
379
|
+
*/
|
|
361
380
|
function calculerEcartSemaine(dateSelectionnee) {
|
|
362
|
-
// Récupérer la date actuelle
|
|
363
381
|
if (!dateSelectionnee) {
|
|
364
|
-
return;
|
|
382
|
+
return 0;
|
|
365
383
|
}
|
|
366
384
|
const selectedDateUpdated = updateSelectedDateForEcartSemaine(dateSelectionnee);
|
|
367
385
|
const dateActuelle = new Date();
|
|
368
|
-
// Extraire l'année et le numéro de la semaine de la date actuelle
|
|
369
386
|
const anneeActuelle = dateActuelle.getFullYear();
|
|
370
387
|
const numeroSemaineActuelle = getWeekNumber(dateActuelle);
|
|
371
|
-
// Extraire l'année et le numéro de la semaine de la date sélectionnée
|
|
372
388
|
const anneeSelectionnee = selectedDateUpdated.getFullYear();
|
|
373
389
|
const numeroSemaineSelectionnee = getWeekNumber(selectedDateUpdated);
|
|
374
|
-
// Calculer le nombre de semaines depuis une date d'origine arbitraire
|
|
375
|
-
// Calculer l'écart entre les semaines en utilisant la formule
|
|
376
390
|
const ecartSemaine = semainesDepuisOrigine(anneeSelectionnee, numeroSemaineSelectionnee) -
|
|
377
391
|
semainesDepuisOrigine(anneeActuelle, numeroSemaineActuelle);
|
|
378
392
|
return ecartSemaine * 7;
|
|
379
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* Calculate the number of weeks since an arbitrary origin date (January 1, 2022).
|
|
396
|
+
* @param annee - The year.
|
|
397
|
+
* @param numeroSemaine - The week number.
|
|
398
|
+
* @returns The number of weeks since the origin date.
|
|
399
|
+
*/
|
|
380
400
|
function semainesDepuisOrigine(annee, numeroSemaine) {
|
|
381
|
-
// Choisir le 1er janvier 2022 comme date d'origine
|
|
382
401
|
const dateOrigine = new Date(2022, 0, 1);
|
|
383
402
|
const anneeOrigine = dateOrigine.getFullYear();
|
|
384
403
|
const numeroSemaineOrigine = getWeekNumber(dateOrigine);
|
|
385
|
-
// Calculer le nombre total de semaines écoulées depuis la date d'origine
|
|
386
404
|
let nombreSemaines = 0;
|
|
387
405
|
for (let i = anneeOrigine; i < annee; i++) {
|
|
388
|
-
nombreSemaines += moment().year(i).
|
|
406
|
+
nombreSemaines += moment().year(i).isoWeeksInYear();
|
|
389
407
|
}
|
|
390
408
|
nombreSemaines += numeroSemaine - numeroSemaineOrigine;
|
|
391
409
|
return nombreSemaines;
|
|
@@ -397,15 +415,18 @@ function getSessionStorageRecordForDragAndDrop(tasks, positionDay, dropGroupId)
|
|
|
397
415
|
const dragdayIndex = window.sessionStorage.getItem("calendardragdayIndex");
|
|
398
416
|
let newTask;
|
|
399
417
|
let newTasks = [];
|
|
400
|
-
|
|
418
|
+
window.sessionStorage.clear();
|
|
401
419
|
if (!dragdayIndex || !dragtaskStart || !dragtaskEnd || !dragtaskId || !tasks)
|
|
402
420
|
return;
|
|
403
421
|
const dragTask = tasks.find((task) => task.taskId === dragtaskId);
|
|
404
422
|
const dayIndex = parseInt(dragdayIndex);
|
|
405
|
-
|
|
406
|
-
const
|
|
407
|
-
|
|
408
|
-
const
|
|
423
|
+
let ecartDaysIndex = positionDay - dayIndex;
|
|
424
|
+
const convertTaskDropStart = new Date(parseInt(dragtaskStart));
|
|
425
|
+
convertTaskDropStart.setDate(convertTaskDropStart.getDate() + ecartDaysIndex);
|
|
426
|
+
const taskDropStart = convertTaskDropStart.getTime();
|
|
427
|
+
let convertTaskDropEnd = new Date(parseInt(dragtaskEnd));
|
|
428
|
+
convertTaskDropEnd.setDate(convertTaskDropEnd.getDate() + ecartDaysIndex);
|
|
429
|
+
const taskDropEnd = convertTaskDropEnd.getTime();
|
|
409
430
|
const taskDropDate = new Date(taskDropStart);
|
|
410
431
|
if (dragTask) {
|
|
411
432
|
const { taskStart, taskEnd, taskDate, groupId, dayIndex } = dragTask, rest = __rest(dragTask, ["taskStart", "taskEnd", "taskDate", "groupId", "dayIndex"]);
|
package/lib/utils.ts
CHANGED
|
@@ -444,64 +444,82 @@ const calculateTimeOfDayRange = (start: number, end: number) => {
|
|
|
444
444
|
return range;
|
|
445
445
|
};
|
|
446
446
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
447
|
+
/**
|
|
448
|
+
* Get the ISO week number for a given date.
|
|
449
|
+
* @param date - The date to get the week number for.
|
|
450
|
+
* @returns The ISO week number.
|
|
451
|
+
*/
|
|
452
|
+
function getWeekNumber(date: Date): number {
|
|
453
|
+
const tempDate = new Date(date.getTime());
|
|
454
|
+
tempDate.setHours(0, 0, 0, 0);
|
|
455
|
+
// Thursday in current week decides the year
|
|
456
|
+
tempDate.setDate(tempDate.getDate() + 4 - (tempDate.getDay() || 7));
|
|
457
|
+
const yearStart = new Date(tempDate.getFullYear(), 0, 1);
|
|
451
458
|
const weekNumber = Math.ceil(
|
|
452
|
-
((
|
|
459
|
+
(((tempDate.getTime() - yearStart.getTime()) / 86400000) + 1) / 7
|
|
453
460
|
);
|
|
454
461
|
return weekNumber;
|
|
455
462
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Update the selected date to avoid issues with weeks starting on Sunday.
|
|
466
|
+
* @param dateSelectionnee - The selected date.
|
|
467
|
+
* @returns The updated date.
|
|
468
|
+
*/
|
|
469
|
+
function updateSelectedDateForEcartSemaine(dateSelectionnee: Date): Date {
|
|
470
|
+
const updatedDate = new Date(dateSelectionnee.getTime());
|
|
471
|
+
if (updatedDate.getDay() === 0) {
|
|
472
|
+
updatedDate.setDate(updatedDate.getDate() + 1);
|
|
473
|
+
}
|
|
474
|
+
return updatedDate;
|
|
460
475
|
}
|
|
461
476
|
|
|
462
|
-
|
|
463
|
-
|
|
477
|
+
/**
|
|
478
|
+
* Calculate the week difference between the selected date and the current date.
|
|
479
|
+
* @param dateSelectionnee - The selected date.
|
|
480
|
+
* @returns The week difference in days.
|
|
481
|
+
*/
|
|
482
|
+
function calculerEcartSemaine(dateSelectionnee: Date): number {
|
|
464
483
|
if (!dateSelectionnee) {
|
|
465
|
-
return;
|
|
484
|
+
return 0;
|
|
466
485
|
}
|
|
467
|
-
const selectedDateUpdated=updateSelectedDateForEcartSemaine(dateSelectionnee)
|
|
486
|
+
const selectedDateUpdated = updateSelectedDateForEcartSemaine(dateSelectionnee);
|
|
468
487
|
|
|
469
488
|
const dateActuelle = new Date();
|
|
470
|
-
|
|
471
|
-
// Extraire l'année et le numéro de la semaine de la date actuelle
|
|
472
489
|
const anneeActuelle = dateActuelle.getFullYear();
|
|
473
490
|
const numeroSemaineActuelle = getWeekNumber(dateActuelle);
|
|
474
491
|
|
|
475
|
-
// Extraire l'année et le numéro de la semaine de la date sélectionnée
|
|
476
|
-
|
|
477
492
|
const anneeSelectionnee = selectedDateUpdated.getFullYear();
|
|
478
493
|
const numeroSemaineSelectionnee = getWeekNumber(selectedDateUpdated);
|
|
479
494
|
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
// Calculer l'écart entre les semaines en utilisant la formule
|
|
483
|
-
const ecartSemaine =
|
|
495
|
+
const ecartSemaine =
|
|
484
496
|
semainesDepuisOrigine(anneeSelectionnee, numeroSemaineSelectionnee) -
|
|
485
497
|
semainesDepuisOrigine(anneeActuelle, numeroSemaineActuelle);
|
|
486
498
|
|
|
487
499
|
return ecartSemaine * 7;
|
|
488
500
|
}
|
|
489
|
-
|
|
490
|
-
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Calculate the number of weeks since an arbitrary origin date (January 1, 2022).
|
|
504
|
+
* @param annee - The year.
|
|
505
|
+
* @param numeroSemaine - The week number.
|
|
506
|
+
* @returns The number of weeks since the origin date.
|
|
507
|
+
*/
|
|
508
|
+
function semainesDepuisOrigine(annee: number, numeroSemaine: number): number {
|
|
491
509
|
const dateOrigine = new Date(2022, 0, 1);
|
|
492
510
|
const anneeOrigine = dateOrigine.getFullYear();
|
|
493
511
|
const numeroSemaineOrigine = getWeekNumber(dateOrigine);
|
|
494
512
|
|
|
495
|
-
// Calculer le nombre total de semaines écoulées depuis la date d'origine
|
|
496
513
|
let nombreSemaines = 0;
|
|
497
514
|
for (let i = anneeOrigine; i < annee; i++) {
|
|
498
|
-
nombreSemaines += moment().year(i).
|
|
515
|
+
nombreSemaines += moment().year(i).isoWeeksInYear();
|
|
499
516
|
}
|
|
500
517
|
nombreSemaines += numeroSemaine - numeroSemaineOrigine;
|
|
501
518
|
|
|
502
519
|
return nombreSemaines;
|
|
503
520
|
}
|
|
504
521
|
|
|
522
|
+
|
|
505
523
|
function getSessionStorageRecordForDragAndDrop(
|
|
506
524
|
tasks: TasksType,
|
|
507
525
|
positionDay: number,
|
|
@@ -513,15 +531,18 @@ function getSessionStorageRecordForDragAndDrop(
|
|
|
513
531
|
const dragdayIndex = window.sessionStorage.getItem("calendardragdayIndex");
|
|
514
532
|
let newTask: TaskFeildsType | any;
|
|
515
533
|
let newTasks: TasksType = [];
|
|
516
|
-
|
|
534
|
+
window.sessionStorage.clear();
|
|
517
535
|
if (!dragdayIndex || !dragtaskStart || !dragtaskEnd || !dragtaskId || !tasks)
|
|
518
536
|
return;
|
|
519
537
|
const dragTask = tasks.find((task) => task.taskId === dragtaskId);
|
|
520
538
|
const dayIndex = parseInt(dragdayIndex);
|
|
521
|
-
|
|
522
|
-
const
|
|
523
|
-
|
|
524
|
-
const
|
|
539
|
+
let ecartDaysIndex = positionDay - dayIndex;
|
|
540
|
+
const convertTaskDropStart = new Date(parseInt(dragtaskStart));
|
|
541
|
+
convertTaskDropStart.setDate(convertTaskDropStart.getDate() + ecartDaysIndex);
|
|
542
|
+
const taskDropStart = convertTaskDropStart.getTime();
|
|
543
|
+
let convertTaskDropEnd = new Date(parseInt(dragtaskEnd));
|
|
544
|
+
convertTaskDropEnd.setDate(convertTaskDropEnd.getDate() + ecartDaysIndex);
|
|
545
|
+
const taskDropEnd = convertTaskDropEnd.getTime();
|
|
525
546
|
const taskDropDate = new Date(taskDropStart);
|
|
526
547
|
if (dragTask) {
|
|
527
548
|
const { taskStart, taskEnd, taskDate, groupId, dayIndex, ...rest } =
|