2
0

TimeColsSeg.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { DateMarker, Seg, EventSegUiInteractionState } from '@fullcalendar/core'
  2. // JUST A DATA STRUCTURE, not a component
  3. export interface TimeColsSeg extends Seg {
  4. col: number
  5. start: DateMarker
  6. end: DateMarker
  7. }
  8. export function splitSegsByCol(segs: TimeColsSeg[] | null, colCnt: number) { // can be given null/undefined!
  9. let segsByCol: TimeColsSeg[][] = []
  10. let i
  11. for (i = 0; i < colCnt; i++) {
  12. segsByCol.push([])
  13. }
  14. if (segs) {
  15. for (i = 0; i < segs.length; i++) {
  16. segsByCol[segs[i].col].push(segs[i])
  17. }
  18. }
  19. return segsByCol
  20. }
  21. export function splitInteractionByCol(ui: EventSegUiInteractionState | null, colCnt: number) {
  22. let byRow: EventSegUiInteractionState[] = []
  23. if (!ui) {
  24. for (let i = 0; i < colCnt; i++) {
  25. byRow[i] = null
  26. }
  27. } else {
  28. for (let i = 0; i < colCnt; i++) {
  29. byRow[i] = {
  30. affectedInstances: ui.affectedInstances,
  31. isEvent: ui.isEvent,
  32. segs: []
  33. }
  34. }
  35. for (let seg of ui.segs) {
  36. byRow[seg.col].segs.push(seg)
  37. }
  38. }
  39. return byRow
  40. }