dspot-trello-gantt 0.4.2 → 0.4.4

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/README.md CHANGED
@@ -78,12 +78,12 @@ How to get Trello credentials:
78
78
  5. Use that value as `TRELLO_API_TOKEN`.
79
79
  6. Use your board URL (or board ID) as `GANTT_BOARD_ID`.
80
80
 
81
- How to get `GANTT_MILESTONE_LISTS`:
81
+ How to set `GANTT_MILESTONE_LISTS`:
82
82
 
83
83
  1. Open your Trello board.
84
- 2. Identify the exact list names you want to treat as milestones (for example `Milestone 1`, `Milestone 2`).
85
- 3. Add them as a comma-separated value in `.env`, preserving the same spelling as in Trello.
86
- 4. Leave it empty if you prefer default milestone detection behavior.
84
+ 2. Use Trello **labels** in your cards to mark milestones (for example `Milestone 1`, `Milestone 2`).
85
+ 3. If you want to restrict milestones to a specific subset, set `GANTT_MILESTONE_LISTS` as a comma-separated allowlist (same spelling as label/list names in Trello).
86
+ 4. If `GANTT_MILESTONE_LISTS` is empty, milestone detection is automatic and includes all milestone labels by default.
87
87
 
88
88
  How to get `GANTT_LISTS`:
89
89
 
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAIxE,OAAO,EAAE,SAAS,EAAkB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAykBD,wBAAgB,UAAU,CACxB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,cAAc,EACxB,KAAK,GAAE,SAAS,EAAO,EACvB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAqjCR;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKjE"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAIxE,OAAO,EAAE,SAAS,EAAkB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAwkBD,wBAAgB,UAAU,CACxB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,cAAc,EACxB,KAAK,GAAE,SAAS,EAAO,EACvB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAg7CR;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKjE"}
package/dist/renderer.js CHANGED
@@ -27,13 +27,12 @@ function renderItems(items, cssClass) {
27
27
  .join('');
28
28
  }
29
29
  function renderMetadata(meta) {
30
- const boardId = escapeHtml(meta.boardId ?? 'N/A');
31
30
  const boardName = escapeHtml(meta.boardName ?? 'N/A');
32
31
  const listsUsed = meta.listsUsed ?? [];
33
32
  const listsText = listsUsed.length ? listsUsed.join(', ') : '(all open lists)';
34
33
  const generatedAt = meta.generatedAt ?? new Date().toISOString().replace(/\.\d{3}Z$/, '');
35
34
  return ('<div class="header-info">' +
36
- `<p><strong>Board:</strong> ${boardName} (<code>${boardId}</code>)</p>` +
35
+ `<p><strong>Board:</strong> ${boardName}</p>` +
37
36
  `<p><strong>Lists:</strong> ${escapeHtml(listsText)}</p>` +
38
37
  `<p><strong>Generated:</strong> ${escapeHtml(generatedAt)}</p>` +
39
38
  '</div>');
@@ -811,44 +810,213 @@ function renderHtml(mermaidSyntax, report, metadata, tasks = [], options = {}) {
811
810
  .gantt-inner { display: inline-block; vertical-align: top; box-sizing: border-box; padding: 16px; }
812
811
  .gantt-scroll-container .gantt-inner svg { max-width: none !important; }
813
812
  .html-timeline-inner { width: 100%; }
814
- .html-timeline-grid { display: grid; grid-template-columns: max-content 1fr; min-width: max-content; }
815
- .html-timeline-left {
816
- position: sticky; left: 0; z-index: 3; background: var(--bg-card); border-right: 1px solid var(--border-color);
817
- display: grid;
818
- grid-template-columns: minmax(220px, min(420px, 38vw)) minmax(64px, 88px);
819
- align-content: start;
813
+ .html-timeline-table {
814
+ border-collapse: separate;
815
+ border-spacing: 0;
816
+ table-layout: fixed;
820
817
  width: max-content;
818
+ --timeline-row-h: 42px;
819
+ --timeline-bar-top: 8px;
820
+ --timeline-bar-h: 26px;
821
+ }
822
+ .html-timeline-table th,
823
+ .html-timeline-table td {
824
+ box-sizing: border-box;
825
+ vertical-align: middle;
826
+ background: var(--bg-card);
821
827
  }
822
828
  .html-timeline-header-cell {
823
- position: sticky; top: 0; z-index: 4; height: 48px; display: flex; align-items: center; padding: 0 10px;
824
- border-bottom: 1px solid var(--border-color); background: var(--bg-alt); font-size: 0.8rem; font-weight: 700; color: var(--text-muted);
825
- text-transform: uppercase; letter-spacing: .04em;
829
+ position: sticky;
830
+ top: 0;
831
+ height: 48px;
832
+ padding: 0 10px;
833
+ border-bottom: 1px solid var(--border-color);
834
+ background: var(--bg-alt);
835
+ font-size: 0.8rem;
836
+ font-weight: 700;
837
+ color: var(--text-muted);
838
+ text-transform: uppercase;
839
+ letter-spacing: .04em;
840
+ text-align: left;
841
+ vertical-align: middle;
826
842
  }
827
- .html-timeline-header-cell:first-child {
828
- border-right: 1px solid var(--border-color);
843
+ .html-timeline-table thead .html-timeline-sticky-col1 {
844
+ z-index: 8;
845
+ }
846
+ .html-timeline-table thead .html-timeline-sticky-col2 {
847
+ z-index: 7;
848
+ }
849
+ .html-timeline-table thead .html-timeline-sticky-col1,
850
+ .html-timeline-table thead .html-timeline-sticky-col2 {
851
+ background: var(--bg-alt);
852
+ }
853
+ .html-timeline-header-cell.html-timeline-sticky-col1 {
854
+ width: var(--col1-w, 280px);
855
+ max-width: var(--col1-w, 280px);
829
856
  padding-right: 8px;
830
857
  }
831
- .html-timeline-header-cell:last-child {
832
- justify-content: center;
858
+ .html-timeline-header-cell.html-timeline-sticky-col2 {
859
+ width: var(--col2-w, 88px);
860
+ max-width: var(--col2-w, 88px);
833
861
  text-align: center;
834
862
  }
863
+ .html-timeline-header-axis-cell {
864
+ position: sticky;
865
+ top: 0;
866
+ z-index: 2;
867
+ height: 48px;
868
+ padding: 0;
869
+ vertical-align: top;
870
+ border-bottom: 1px solid var(--border-color);
871
+ background: var(--bg-alt);
872
+ width: var(--timeline-w, 800px);
873
+ }
874
+ .html-timeline-sticky-col1 {
875
+ position: sticky;
876
+ left: 0;
877
+ z-index: 6;
878
+ width: var(--col1-w, 280px);
879
+ max-width: var(--col1-w, 280px);
880
+ background: var(--bg-card);
881
+ background-clip: padding-box;
882
+ isolation: isolate;
883
+ box-shadow: 1px 0 0 0 var(--border-color);
884
+ }
885
+ .html-timeline-sticky-col2 {
886
+ position: sticky;
887
+ left: var(--col1-w, 280px);
888
+ z-index: 5;
889
+ width: var(--col2-w, 88px);
890
+ max-width: var(--col2-w, 88px);
891
+ background: var(--bg-card);
892
+ background-clip: padding-box;
893
+ isolation: isolate;
894
+ box-shadow: 1px 0 0 0 var(--border-color);
895
+ }
896
+ .html-timeline-table tbody .html-timeline-sticky-col2 {
897
+ box-shadow:
898
+ -1px 0 0 0 var(--bg-card),
899
+ 6px 0 0 0 var(--bg-card),
900
+ 1px 0 0 0 var(--border-color);
901
+ }
902
+ .html-timeline-table thead .html-timeline-sticky-col2 {
903
+ box-shadow:
904
+ -1px 0 0 0 var(--bg-alt),
905
+ 6px 0 0 0 var(--bg-alt),
906
+ 1px 0 0 0 var(--border-color);
907
+ }
908
+ .html-timeline-sticky-span {
909
+ position: sticky;
910
+ left: 0;
911
+ z-index: 6;
912
+ background: var(--bg-alt);
913
+ box-shadow: 6px 0 0 0 var(--bg-alt), 1px 0 0 0 var(--border-color);
914
+ padding: 0;
915
+ vertical-align: middle;
916
+ }
917
+ .html-timeline-table tbody tr {
918
+ background-color: var(--bg-card);
919
+ }
920
+ .html-timeline-table tbody td {
921
+ border-bottom: 1px solid var(--border-color);
922
+ }
923
+ .html-timeline-timeline-cell {
924
+ position: relative;
925
+ z-index: 1;
926
+ padding: 0;
927
+ width: var(--timeline-w, 800px);
928
+ min-width: var(--timeline-w, 800px);
929
+ max-width: var(--timeline-w, 800px);
930
+ vertical-align: middle;
931
+ overflow: hidden;
932
+ contain: paint;
933
+ }
934
+ .html-timeline-timeline-cell .html-row {
935
+ position: relative;
936
+ z-index: 0;
937
+ border-bottom: none;
938
+ overflow: hidden;
939
+ }
835
940
  .html-timeline-row-label {
836
- height: 38px; line-height: 38px; box-sizing: border-box; padding: 0 10px 0 10px; border-bottom: 1px solid var(--border-color);
837
- font-size: 0.85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
838
- border-right: 1px solid var(--border-color); min-width: 0;
941
+ height: var(--timeline-row-h);
942
+ line-height: var(--timeline-row-h);
943
+ box-sizing: border-box;
944
+ padding: 0 10px 0 10px;
945
+ font-size: 0.85rem;
946
+ white-space: nowrap;
947
+ overflow: hidden;
948
+ text-overflow: ellipsis;
949
+ min-width: 0;
950
+ width: var(--col1-w, 280px);
951
+ max-width: var(--col1-w, 280px);
952
+ background-clip: padding-box;
839
953
  }
840
954
  .html-timeline-row-assignee {
841
- height: 38px; display: flex; align-items: center; justify-content: center; padding: 0 8px;
842
- border-bottom: 1px solid var(--border-color); box-sizing: border-box;
843
- font-size: 0.78rem; font-weight: 600; color: var(--assignee-text);
844
- white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
955
+ height: var(--timeline-row-h);
956
+ line-height: var(--timeline-row-h);
957
+ text-align: center;
958
+ vertical-align: middle;
959
+ padding: 0 8px;
960
+ box-sizing: border-box;
961
+ font-size: 0.78rem;
962
+ font-weight: 600;
963
+ color: var(--assignee-text);
964
+ white-space: nowrap;
965
+ overflow: hidden;
966
+ text-overflow: ellipsis;
967
+ width: var(--col2-w, 88px);
968
+ max-width: var(--col2-w, 88px);
969
+ background-clip: padding-box;
845
970
  }
846
971
  .html-timeline-row-assignee.is-unassigned {
847
972
  color: var(--text-muted); font-weight: 500;
848
973
  }
849
- .html-timeline-right { position: relative; }
974
+ .html-milestone-header {
975
+ height: var(--timeline-row-h);
976
+ width: 100%;
977
+ margin: 0;
978
+ border: none;
979
+ font: inherit;
980
+ display: flex;
981
+ align-items: center;
982
+ gap: 8px;
983
+ padding: 0 10px;
984
+ background: var(--bg-alt);
985
+ font-weight: 700;
986
+ font-size: 0.88rem;
987
+ cursor: pointer;
988
+ user-select: none;
989
+ color: var(--text-main);
990
+ text-align: left;
991
+ box-sizing: border-box;
992
+ }
993
+ .html-milestone-header:hover { filter: brightness(0.97); }
994
+ .html-milestone-chevron {
995
+ display: inline-block;
996
+ width: 1em;
997
+ flex-shrink: 0;
998
+ color: var(--text-muted);
999
+ font-size: 0.65rem;
1000
+ line-height: 1;
1001
+ transition: transform 0.15s ease;
1002
+ }
1003
+ .html-milestone-header.is-collapsed .html-milestone-chevron {
1004
+ transform: rotate(-90deg);
1005
+ }
1006
+ .html-milestone-child-hidden {
1007
+ display: none !important;
1008
+ }
1009
+ .html-bar.html-milestone-summary-bar {
1010
+ top: var(--timeline-bar-top);
1011
+ height: var(--timeline-bar-h);
1012
+ padding: 0;
1013
+ opacity: 0.95;
1014
+ pointer-events: none;
1015
+ }
850
1016
  .html-axis {
851
- position: sticky; top: 0; z-index: 2; height: 48px; border-bottom: 1px solid var(--border-color); background: var(--bg-alt);
1017
+ position: relative;
1018
+ height: 48px;
1019
+ background: var(--bg-alt);
852
1020
  }
853
1021
  .html-axis-month-row, .html-axis-day-row {
854
1022
  position: relative;
@@ -865,12 +1033,18 @@ function renderHtml(mermaidSyntax, report, metadata, tasks = [], options = {}) {
865
1033
  font-size: 0.66rem; color: var(--text-muted); white-space: nowrap;
866
1034
  }
867
1035
  .html-row {
868
- position: relative; height: 38px; border-bottom: 1px solid var(--border-color);
1036
+ position: relative;
1037
+ height: var(--timeline-row-h);
1038
+ border-bottom: 1px solid var(--border-color);
869
1039
  background-image: linear-gradient(to right, rgba(148,163,184,.18) 1px, transparent 1px);
870
1040
  background-repeat: repeat-x;
871
1041
  }
872
1042
  .html-bar {
873
- position: absolute; top: 7px; height: 24px; border-radius: 6px; border: 1px solid transparent;
1043
+ position: absolute;
1044
+ top: var(--timeline-bar-top);
1045
+ height: var(--timeline-bar-h);
1046
+ border-radius: 6px;
1047
+ border: 1px solid transparent;
874
1048
  display: inline-flex; align-items: center; justify-content: center; padding: 0 8px;
875
1049
  font-size: 0.72rem; font-weight: 700; box-sizing: border-box; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
876
1050
  --bar-base: #e2e8f0;
@@ -1164,6 +1338,116 @@ function renderHtml(mermaidSyntax, report, metadata, tasks = [], options = {}) {
1164
1338
  .join('\\n');
1165
1339
  }
1166
1340
 
1341
+ const collapsedMilestoneSectionKeys = new Set();
1342
+
1343
+ function milestoneSectionSortKeyForGroups(name) {
1344
+ const SECTION_PRIORITY = {
1345
+ done: 0,
1346
+ doing: 1,
1347
+ 'in progress': 1,
1348
+ 'to do': 2,
1349
+ todo: 2,
1350
+ backlog: 3,
1351
+ };
1352
+ const normalized = String(name ?? '').trim().toLowerCase();
1353
+ const milestoneMatch = /^milestone[ ]+([0-9]+)$/.exec(normalized);
1354
+ if (milestoneMatch) return [-1, String(parseInt(milestoneMatch[1], 10)).padStart(4, '0')];
1355
+ if (normalized === 'no milestone') return [0, ''];
1356
+ return [SECTION_PRIORITY[normalized] ?? 99, normalized];
1357
+ }
1358
+
1359
+ function groupTasksByMilestone(tasks) {
1360
+ const grouped = new Map();
1361
+ for (const t of tasks) {
1362
+ const section = String(t.section ?? '').trim();
1363
+ if (!section) continue;
1364
+ if (!grouped.has(section)) grouped.set(section, []);
1365
+ grouped.get(section).push(t);
1366
+ }
1367
+ const sectionNames = [...grouped.keys()].sort((a, b) => {
1368
+ const [pa, sa] = milestoneSectionSortKeyForGroups(a);
1369
+ const [pb, sb] = milestoneSectionSortKeyForGroups(b);
1370
+ if (pa !== pb) return pa - pb;
1371
+ return String(sa).localeCompare(String(sb));
1372
+ });
1373
+ return sectionNames.map((section) => {
1374
+ const sectionTasks = (grouped.get(section) || []).slice().sort((a, b) => {
1375
+ if (a.end_date !== b.end_date) return a.end_date < b.end_date ? -1 : 1;
1376
+ if (a.start_date !== b.start_date) return a.start_date < b.start_date ? -1 : 1;
1377
+ return String(a.name ?? '').toLowerCase().localeCompare(String(b.name ?? '').toLowerCase());
1378
+ });
1379
+ const starts = sectionTasks.map((x) => x.start_date).filter(Boolean);
1380
+ const ends = sectionTasks.map((x) => x.end_date).filter(Boolean);
1381
+ const minStart = starts.length ? starts.reduce((a, b) => (a < b ? a : b)) : null;
1382
+ const maxEnd = ends.length ? ends.reduce((a, b) => (a > b ? a : b)) : null;
1383
+ return { section, tasks: sectionTasks, minStart, maxEnd };
1384
+ }).filter((g) => g.tasks.length > 0);
1385
+ }
1386
+
1387
+ function classifyListForMilestone(listName) {
1388
+ const n = String(listName || '').trim().toLowerCase();
1389
+ if (!n) return 'other';
1390
+ if (n.includes('block')) return 'blocked';
1391
+ if (/\bnot\s+done\b/.test(n) || /\bno\s+done\b/.test(n)) return 'todo';
1392
+ if (/\bdone\b/.test(n) || /\bfinito\b/.test(n)) return 'done';
1393
+ if (n.includes('doing') || n.includes('in progress') || n.includes('in-progress')) return 'doing';
1394
+ if (n.includes('backlog')) return 'backlog';
1395
+ if (n.includes('to do') || n.includes('to-do') || /\btodo\b/.test(n)) return 'todo';
1396
+ return 'other';
1397
+ }
1398
+
1399
+ function milestoneSummaryBarClass(tasks) {
1400
+ const cats = tasks.map((t) => classifyListForMilestone(t.source_list_name));
1401
+ const has = (c) => cats.some((x) => x === c);
1402
+ const all = (c) => cats.length > 0 && cats.every((x) => x === c);
1403
+
1404
+ if (all('backlog')) return 'default';
1405
+ if (all('done')) return 'done';
1406
+ if (all('todo')) return 'crit';
1407
+
1408
+ const hasTodo = has('todo');
1409
+ const hasDoing = has('doing');
1410
+ const hasDone = has('done');
1411
+ const hasBlocked = has('blocked');
1412
+
1413
+ if (hasBlocked && hasDone && !hasTodo && !hasDoing) return 'active-crit';
1414
+ if (hasDoing || hasDone) return 'active';
1415
+ if (hasBlocked) return 'active-crit';
1416
+ if (hasTodo) return 'crit';
1417
+ return 'default';
1418
+ }
1419
+
1420
+ if (htmlTimelineEl) {
1421
+ htmlTimelineEl.addEventListener('click', (e) => {
1422
+ const header = e.target.closest('.html-milestone-header');
1423
+ if (!header || !htmlTimelineEl.contains(header)) return;
1424
+ const key = header.getAttribute('data-milestone-key');
1425
+ if (key == null || key === '') return;
1426
+ let nowCollapsed;
1427
+ if (collapsedMilestoneSectionKeys.has(key)) {
1428
+ collapsedMilestoneSectionKeys.delete(key);
1429
+ nowCollapsed = false;
1430
+ } else {
1431
+ collapsedMilestoneSectionKeys.add(key);
1432
+ nowCollapsed = true;
1433
+ }
1434
+ header.classList.toggle('is-collapsed', nowCollapsed);
1435
+ header.setAttribute('aria-expanded', nowCollapsed ? 'false' : 'true');
1436
+ htmlTimelineEl.querySelectorAll('tr[data-milestone-tr-child]').forEach((tr) => {
1437
+ if (tr.getAttribute('data-milestone-tr-child') === key) {
1438
+ tr.classList.toggle('html-milestone-child-hidden', nowCollapsed);
1439
+ }
1440
+ });
1441
+ });
1442
+ htmlTimelineEl.addEventListener('keydown', (e) => {
1443
+ if (e.key !== 'Enter' && e.key !== ' ') return;
1444
+ const header = e.target.closest('.html-milestone-header');
1445
+ if (!header || !htmlTimelineEl.contains(header)) return;
1446
+ e.preventDefault();
1447
+ header.click();
1448
+ });
1449
+ }
1450
+
1167
1451
  function renderHtmlTimeline(tasks) {
1168
1452
  if (!htmlTimelineEl) return;
1169
1453
  const DAY_WIDTH = 34;
@@ -1176,23 +1460,41 @@ function renderHtml(mermaidSyntax, report, metadata, tasks = [], options = {}) {
1176
1460
  ) + 1;
1177
1461
  const totalDays = Math.max(MIN_TIMELINE_DAYS, spanDays);
1178
1462
  const width = totalDays * DAY_WIDTH;
1179
-
1180
- const grid = document.createElement('div');
1181
- grid.className = 'html-timeline-grid';
1182
- const left = document.createElement('div');
1183
- left.className = 'html-timeline-left';
1184
- const headerTask = document.createElement('div');
1185
- headerTask.className = 'html-timeline-header-cell';
1186
- headerTask.textContent = 'Tasks';
1187
- left.appendChild(headerTask);
1188
- const headerAssignee = document.createElement('div');
1189
- headerAssignee.className = 'html-timeline-header-cell';
1190
- headerAssignee.textContent = 'Assignee';
1191
- left.appendChild(headerAssignee);
1192
-
1193
- const right = document.createElement('div');
1194
- right.className = 'html-timeline-right';
1195
- right.style.width = width + 'px';
1463
+ const winW = typeof window !== 'undefined' && window.innerWidth ? window.innerWidth : 1400;
1464
+ const col1w = Math.min(420, Math.max(220, Math.round(winW * 0.38)));
1465
+ const col2w = 88;
1466
+
1467
+ const table = document.createElement('table');
1468
+ table.className = 'html-timeline-table';
1469
+ table.style.setProperty('--timeline-w', width + 'px');
1470
+ table.style.setProperty('--col1-w', col1w + 'px');
1471
+ table.style.setProperty('--col2-w', col2w + 'px');
1472
+
1473
+ const colgroup = document.createElement('colgroup');
1474
+ const colA = document.createElement('col');
1475
+ colA.style.width = col1w + 'px';
1476
+ const colB = document.createElement('col');
1477
+ colB.style.width = col2w + 'px';
1478
+ const colC = document.createElement('col');
1479
+ colC.style.width = width + 'px';
1480
+ colgroup.appendChild(colA);
1481
+ colgroup.appendChild(colB);
1482
+ colgroup.appendChild(colC);
1483
+ table.appendChild(colgroup);
1484
+
1485
+ const thead = document.createElement('thead');
1486
+ const trHead = document.createElement('tr');
1487
+ const thTask = document.createElement('th');
1488
+ thTask.scope = 'col';
1489
+ thTask.className = 'html-timeline-header-cell html-timeline-sticky-col1';
1490
+ thTask.textContent = 'Tasks';
1491
+ const thAsg = document.createElement('th');
1492
+ thAsg.scope = 'col';
1493
+ thAsg.className = 'html-timeline-header-cell html-timeline-sticky-col2';
1494
+ thAsg.textContent = 'Assignee';
1495
+ const thAxis = document.createElement('th');
1496
+ thAxis.scope = 'col';
1497
+ thAxis.className = 'html-timeline-header-axis-cell';
1196
1498
  const axis = document.createElement('div');
1197
1499
  axis.className = 'html-axis';
1198
1500
  const monthRow = document.createElement('div');
@@ -1228,58 +1530,147 @@ function renderHtml(mermaidSyntax, report, metadata, tasks = [], options = {}) {
1228
1530
  });
1229
1531
  axis.appendChild(monthRow);
1230
1532
  axis.appendChild(dayRow);
1231
- right.appendChild(axis);
1232
-
1233
- source.forEach((task) => {
1234
- const taskName = preserveVisibleSpaces(String(task.display_name || task.name || '').trim());
1235
- const fullTitle = preserveVisibleSpaces(String(task.name || task.display_name || '').trim());
1236
- const rowLabel = document.createElement('div');
1237
- rowLabel.className = 'html-timeline-row-label';
1238
- rowLabel.textContent = taskName;
1239
- bindCustomTooltip(rowLabel, fullTitle || taskName);
1240
- left.appendChild(rowLabel);
1241
-
1242
- const assigneeCell = document.createElement('div');
1243
- assigneeCell.className = 'html-timeline-row-assignee';
1244
- const assigneeRaw = task.assignee ? String(task.assignee).trim() : '';
1245
- if (assigneeRaw) {
1246
- assigneeCell.textContent = assigneeRaw;
1247
- const tip = assigneeTooltipLines(task);
1248
- if (tip) bindCustomTooltip(assigneeCell, tip);
1249
- } else {
1250
- assigneeCell.classList.add('is-unassigned');
1251
- assigneeCell.textContent = '';
1533
+ thAxis.appendChild(axis);
1534
+ trHead.appendChild(thTask);
1535
+ trHead.appendChild(thAsg);
1536
+ trHead.appendChild(thAxis);
1537
+ thead.appendChild(trHead);
1538
+ table.appendChild(thead);
1539
+
1540
+ const tbody = document.createElement('tbody');
1541
+ const groups = groupTasksByMilestone(source);
1542
+ groups.forEach((group) => {
1543
+ const sectionKey = encodeURIComponent(group.section);
1544
+ const isCollapsed = collapsedMilestoneSectionKeys.has(sectionKey);
1545
+
1546
+ const header = document.createElement('button');
1547
+ header.type = 'button';
1548
+ header.className = 'html-milestone-header';
1549
+ header.setAttribute('data-milestone-key', sectionKey);
1550
+ header.setAttribute('aria-expanded', isCollapsed ? 'false' : 'true');
1551
+ if (isCollapsed) header.classList.add('is-collapsed');
1552
+ const chev = document.createElement('span');
1553
+ chev.className = 'html-milestone-chevron';
1554
+ chev.setAttribute('aria-hidden', 'true');
1555
+ chev.textContent = '▼';
1556
+ header.appendChild(chev);
1557
+ const titleSpan = document.createElement('span');
1558
+ titleSpan.className = 'html-milestone-title';
1559
+ titleSpan.textContent = group.section;
1560
+ header.appendChild(titleSpan);
1561
+
1562
+ const trM = document.createElement('tr');
1563
+ trM.className = 'html-milestone-tr';
1564
+ const tdMh = document.createElement('td');
1565
+ tdMh.colSpan = 2;
1566
+ tdMh.className = 'html-milestone-td-span html-timeline-sticky-span';
1567
+ tdMh.appendChild(header);
1568
+ const tdMs = document.createElement('td');
1569
+ tdMs.className = 'html-timeline-timeline-cell html-milestone-summary-cell';
1570
+
1571
+ const summaryRow = document.createElement('div');
1572
+ summaryRow.className = 'html-row html-milestone-summary-row';
1573
+ summaryRow.style.width = width + 'px';
1574
+ summaryRow.style.backgroundSize = DAY_WIDTH + 'px 100%';
1575
+ if (group.minStart && group.maxEnd) {
1576
+ const sx =
1577
+ Math.round(
1578
+ (new Date(group.minStart + 'T00:00:00Z').getTime() - new Date(start + 'T00:00:00Z').getTime()) /
1579
+ 86400000,
1580
+ ) * DAY_WIDTH;
1581
+ const sw =
1582
+ (Math.round(
1583
+ (new Date(group.maxEnd + 'T00:00:00Z').getTime() -
1584
+ new Date(group.minStart + 'T00:00:00Z').getTime()) /
1585
+ 86400000,
1586
+ ) +
1587
+ 1) *
1588
+ DAY_WIDTH;
1589
+ const sumBar = document.createElement('div');
1590
+ sumBar.className =
1591
+ 'html-bar html-milestone-summary-bar ' + milestoneSummaryBarClass(group.tasks);
1592
+ sumBar.style.left = sx + 'px';
1593
+ sumBar.style.width = Math.max(24, sw) + 'px';
1594
+ summaryRow.appendChild(sumBar);
1252
1595
  }
1253
- left.appendChild(assigneeCell);
1596
+ tdMs.appendChild(summaryRow);
1597
+ trM.appendChild(tdMh);
1598
+ trM.appendChild(tdMs);
1599
+ tbody.appendChild(trM);
1600
+
1601
+ group.tasks.forEach((task) => {
1602
+ const taskName = preserveVisibleSpaces(String(task.display_name || task.name || '').trim());
1603
+ const fullTitle = preserveVisibleSpaces(String(task.name || task.display_name || '').trim());
1604
+ const tr = document.createElement('tr');
1605
+ tr.className = 'html-task-tr';
1606
+
1607
+ const rowLabel = document.createElement('td');
1608
+ rowLabel.className = 'html-timeline-row-label html-timeline-sticky-col1';
1609
+ rowLabel.textContent = taskName;
1610
+ bindCustomTooltip(rowLabel, fullTitle || taskName);
1611
+
1612
+ const assigneeCell = document.createElement('td');
1613
+ assigneeCell.className = 'html-timeline-row-assignee html-timeline-sticky-col2';
1614
+ const assigneeRaw = task.assignee ? String(task.assignee).trim() : '';
1615
+ if (assigneeRaw) {
1616
+ assigneeCell.textContent = assigneeRaw;
1617
+ const tip = assigneeTooltipLines(task);
1618
+ if (tip) bindCustomTooltip(assigneeCell, tip);
1619
+ } else {
1620
+ assigneeCell.classList.add('is-unassigned');
1621
+ assigneeCell.textContent = '—';
1622
+ }
1254
1623
 
1255
- const row = document.createElement('div');
1256
- row.className = 'html-row';
1257
- row.style.width = width + 'px';
1258
- row.style.backgroundSize = DAY_WIDTH + 'px 100%';
1259
- const bar = document.createElement('div');
1260
- bar.className = 'html-bar ' + normalizeHtmlStatus(task.status);
1261
- const x = Math.round((new Date(task.start_date + 'T00:00:00Z').getTime() - new Date(start + 'T00:00:00Z').getTime()) / 86400000) * DAY_WIDTH;
1262
- const w = (Math.round((new Date(task.end_date + 'T00:00:00Z').getTime() - new Date(task.start_date + 'T00:00:00Z').getTime()) / 86400000) + 1) * DAY_WIDTH;
1263
- const progress = Math.max(0, Math.min(100, Number(task.progress ?? 0)));
1264
- bar.style.left = x + 'px';
1265
- bar.style.width = Math.max(36, w) + 'px';
1266
- const progressFill = document.createElement('div');
1267
- progressFill.className = 'html-bar-progress';
1268
- progressFill.style.width = progress + '%';
1269
- const progressText = document.createElement('span');
1270
- progressText.className = 'html-bar-text';
1271
- progressText.textContent = String(progress) + '%';
1272
- bar.appendChild(progressFill);
1273
- bar.appendChild(progressText);
1274
- bindCustomTooltip(bar, fullTitle || taskName);
1275
- row.appendChild(bar);
1276
- right.appendChild(row);
1624
+ const tdR = document.createElement('td');
1625
+ tdR.className = 'html-timeline-timeline-cell';
1626
+ const row = document.createElement('div');
1627
+ row.className = 'html-row';
1628
+ row.style.width = width + 'px';
1629
+ row.style.backgroundSize = DAY_WIDTH + 'px 100%';
1630
+ const bar = document.createElement('div');
1631
+ bar.className = 'html-bar ' + normalizeHtmlStatus(task.status);
1632
+ const x =
1633
+ Math.round(
1634
+ (new Date(task.start_date + 'T00:00:00Z').getTime() - new Date(start + 'T00:00:00Z').getTime()) /
1635
+ 86400000,
1636
+ ) * DAY_WIDTH;
1637
+ const w =
1638
+ (Math.round(
1639
+ (new Date(task.end_date + 'T00:00:00Z').getTime() - new Date(task.start_date + 'T00:00:00Z').getTime()) /
1640
+ 86400000,
1641
+ ) +
1642
+ 1) *
1643
+ DAY_WIDTH;
1644
+ const progress = Math.max(0, Math.min(100, Number(task.progress ?? 0)));
1645
+ bar.style.left = x + 'px';
1646
+ bar.style.width = Math.max(36, w) + 'px';
1647
+ const progressFill = document.createElement('div');
1648
+ progressFill.className = 'html-bar-progress';
1649
+ progressFill.style.width = progress + '%';
1650
+ const progressText = document.createElement('span');
1651
+ progressText.className = 'html-bar-text';
1652
+ progressText.textContent = String(progress) + '%';
1653
+ bar.appendChild(progressFill);
1654
+ bar.appendChild(progressText);
1655
+ bindCustomTooltip(bar, fullTitle || taskName);
1656
+ row.appendChild(bar);
1657
+ tdR.appendChild(row);
1658
+
1659
+ tr.appendChild(rowLabel);
1660
+ tr.appendChild(assigneeCell);
1661
+ tr.appendChild(tdR);
1662
+ tr.setAttribute('data-milestone-tr-child', sectionKey);
1663
+ tbody.appendChild(tr);
1664
+
1665
+ if (isCollapsed) {
1666
+ tr.classList.add('html-milestone-child-hidden');
1667
+ }
1668
+ });
1277
1669
  });
1278
1670
 
1279
- grid.appendChild(left);
1280
- grid.appendChild(right);
1671
+ table.appendChild(tbody);
1281
1672
  htmlTimelineEl.innerHTML = '';
1282
- htmlTimelineEl.appendChild(grid);
1673
+ htmlTimelineEl.appendChild(table);
1283
1674
  }
1284
1675
 
1285
1676
  function buildMermaid(tasks) {
@@ -1476,20 +1867,7 @@ function renderHtml(mermaidSyntax, report, metadata, tasks = [], options = {}) {
1476
1867
  }
1477
1868
 
1478
1869
  function orderedTasksClient(tasks) {
1479
- const grouped = {};
1480
- tasks.forEach((t) => {
1481
- const section = t.section ?? '';
1482
- if (!grouped[section]) grouped[section] = [];
1483
- grouped[section].push(t);
1484
- });
1485
- const result = [];
1486
- for (const section of Object.keys(grouped)) {
1487
- const sectionTasks = grouped[section].slice().sort(
1488
- (a, b) => a.end_date.localeCompare(b.end_date) || a.start_date.localeCompare(b.start_date),
1489
- );
1490
- result.push(...sectionTasks);
1491
- }
1492
- return result;
1870
+ return orderedTasksServer(tasks);
1493
1871
  }
1494
1872
 
1495
1873
  function addTaskTitleTooltips(tasksForTooltip) {
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":";AAAA,wEAAwE;;;;;AA8lBxE,gCAs7CC;AAED,4BAKC;AAzhED,4CAAoB;AACpB,gDAAwB;AAExB,6CAAoD;AAmBpD,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB,EAAE,QAAgB;IAC5D,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,4CAA4C,CAAC;IACvE,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,OAAO,oBAAoB,QAAQ,KAAK,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC;IAChF,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,IAAoB;IAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC1F,OAAO,CACL,2BAA2B;QAC3B,8BAA8B,SAAS,MAAM;QAC7C,8BAA8B,UAAU,CAAC,SAAS,CAAC,MAAM;QACzD,kCAAkC,UAAU,CAAC,WAAW,CAAC,MAAM;QAC/D,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAqB,EAAE,QAAgB;IACpE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,KAAkB,EAAE,SAAmB;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,YAAY;SACtB,GAAG,CACF,CAAC,QAAQ,EAAE,EAAE;QACX,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;QAChD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/D,OAAO,CACL,2BAA2B;YAC3B,iDAAiD,IAAI,qBAAqB,MAAM,WAAW;YAC3F,wCAAwC,UAAU,CAAC,QAAQ,CAAC,SAAS;YACrE,QAAQ,CACT,CAAC;IACJ,CAAC,CACF;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,CACL,OAAO;QACP,sDAAsD;QACtD,2BAA2B,IAAI,QAAQ;QACvC,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA2B;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CACF,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,CAC1B,eAAe,UAAU,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,WAAW;QAC1D,WAAW,UAAU,CAAC,WAAW,CAAC,OAAO,CAC5C;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,CACL,8BAA8B;QAC9B,2CAA2C;QAC3C,+BAA+B,KAAK,OAAO;QAC3C,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC/C,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpB,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;IACtB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;SAC/B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;SACrC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;SACrC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;SACrC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;SACrC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7F,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;IACvB,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC7B,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB,EAAE,MAAc;IAC3D,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpG,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,MAAM,MAAM,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,eAAe,CAAC,IAAe;IACtC,IAAI,KAAK,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7H,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC;IAClD,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC;IAChC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAkB;IACtD,MAAM,OAAO,GAAG,KAAK;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACpE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAU,CAAC;IAC/D,CAAC,CAAC,CAAC;IACL,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAkB;IAC7C,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,YAAY,EAAE,CAAC,CAAC,WAAW;QAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,gBAAgB,EAAE,CAAC,CAAC,cAAc;QAClC,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAkB,EAAE,QAAwB;IAC7E,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;IACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAChE,OAAO,CACL,6BAA6B;QAC7B,4BAA4B;QAC5B,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;QAClD,GAAG,kBAAkB,EAAE;QACvB,QAAQ;QACR,8BAA8B;QAC9B,4DAA4D;QAC5D,6BAA6B;QAC7B,oCAAoC;QACpC,WAAW;QACX,yDAAyD;QACzD,+BAA+B;QAC/B,oCAAoC;QACpC,WAAW;QACX,QAAQ;QACR,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAwB,EAAE,QAAwB,EAAE,KAAkB;IAChG,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;IAE/E,OAAO;;;;;WAKE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwLR,SAAS;QACb,YAAY;;;;QAIZ,kBAAkB;;;;;oBAKN,MAAM,CAAC,MAAM,CAAC,MAAM;oCACJ,UAAU;8CACA,MAAM,CAAC,QAAQ,CAAC,MAAM;oCAChC,YAAY;;;0DAGU,SAAS;;;gCAGnC,eAAe;0BACrB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4JhC,CAAC;AACT,CAAC;AAED,SAAgB,UAAU,CACxB,aAAqB,EACrB,MAAwB,EACxB,QAAwB,EACxB,QAAqB,EAAE,EACvB,UAA6B,EAAE;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;IAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,uBAAuB,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CACvC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC;IACF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,IAAA,iCAAoB,EAAC,SAAS,CAAC,CAAC;IACtD,MAAM,oBAAoB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,QAAQ,KAAK,MAAM;QACxC,CAAC,CAAC,yGAAyG;QAC3G,CAAC,CAAC,8CAA8C,aAAa,6BAA6B,oBAAoB,cAAc,CAAC;IAE/H,OAAO;;;;;WAKE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+fN,SAAS;;;QAGf,YAAY;;;;QAIZ,kBAAkB;;UAEhB,cAAc;;;;;oBAKJ,MAAM,CAAC,MAAM,CAAC,MAAM;oCACJ,UAAU;sBACxB,MAAM,CAAC,QAAQ,CAAC,MAAM;oCACR,YAAY;;;;;0DAKU,SAAS;yDACV,aAAa;qEACD,uBAAuB;8DAC9B,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAoDzD,YAAY;8BACL,aAAa;0BACjB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA6FR,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuuBvC,CAAC;AACT,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAY,EAAE,UAAkB;IACvD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dspot-trello-gantt",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "description": "Generate Gantt chart HTML from Trello board data",
5
5
  "keywords": [
6
6
  "trello",