@diagrammo/dgmo 0.76.0 → 0.78.0
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 +17 -13
- package/dist/advanced.d.ts +150 -13
- package/dist/advanced.js +180 -131
- package/dist/block.css +1 -1
- package/dist/block.d.ts +2 -2
- package/dist/block.js +45 -41
- package/dist/{chart-meta-lP8Rl19E.d.ts → chart-meta-BKN2ORkc.d.ts} +2 -2
- package/dist/chart-meta.d.ts +3 -3
- package/dist/chart-meta.js +30 -29
- package/dist/charts-d3-KEQ7XVSM.js +31 -0
- package/dist/{chunk-7IATMZSA.js → chunk-26EVL454.js} +1 -25
- package/dist/{chunk-3H4PDNP4.js → chunk-2NLBIZEW.js} +2 -2
- package/dist/{chunk-GFXFRKUG.js → chunk-32VR65TL.js} +63 -36
- package/dist/{chunk-IHUOYDLN.js → chunk-36UQ77JV.js} +24 -24
- package/dist/chunk-3DPOIW3W.js +10 -0
- package/dist/{chunk-3SP6G4LN.js → chunk-3GLTQZKE.js} +2 -2
- package/dist/{chunk-DY7KDZUF.js → chunk-3OWIYK52.js} +2 -2
- package/dist/{chunk-UBW53CNS.js → chunk-3XFOE3DQ.js} +12 -7
- package/dist/{chunk-W7UBPARG.js → chunk-3ZLQM6XN.js} +2 -2
- package/dist/{chunk-5GM6BZO7.js → chunk-4AWLEWSD.js} +5 -2
- package/dist/{chunk-AYM472K3.js → chunk-4IGUEGD6.js} +80 -61
- package/dist/{chunk-QOVM5VRC.js → chunk-57GSSHBR.js} +2 -2
- package/dist/{chunk-5VMUVJO4.js → chunk-5G55TS3H.js} +2 -2
- package/dist/{chunk-QT5UMFPE.js → chunk-67I3HFSF.js} +9 -9
- package/dist/{chunk-WQXD3IIN.js → chunk-6B3M6LW6.js} +10 -8
- package/dist/{chunk-3EGIU5WY.js → chunk-6PHOZBW5.js} +4 -6
- package/dist/{chunk-5PFNUDXR.js → chunk-6VTLVU7D.js} +2 -2
- package/dist/{chunk-M5JT2AU7.js → chunk-6Z2NUJSX.js} +2 -2
- package/dist/{chunk-BWJLLNUX.js → chunk-7BNRHSSF.js} +2 -2
- package/dist/{chunk-JLODGGN2.js → chunk-7NNJXYXU.js} +2 -2
- package/dist/{chunk-FTTB64OJ.js → chunk-7SMVTA7I.js} +26 -26
- package/dist/{chunk-Z7KVOVE4.js → chunk-7WTFX6OA.js} +6 -3
- package/dist/{chunk-ZM27UI5O.js → chunk-A7Y32YD6.js} +2 -2
- package/dist/{chunk-FPRMP6YA.js → chunk-AHN2CVCH.js} +10 -7
- package/dist/{chunk-N6MZSBOL.js → chunk-AN7T6VP7.js} +2 -2
- package/dist/{chunk-F4X5NVKY.js → chunk-B6PVPAS5.js} +2 -2
- package/dist/{chunk-QI4Q5ZZH.js → chunk-BB2ORSTF.js} +19 -18
- package/dist/{chunk-HGFKDSKZ.js → chunk-BJB4YDJP.js} +21 -21
- package/dist/{chunk-BZQCAZZZ.js → chunk-BPM52K3Z.js} +41 -34
- package/dist/{chunk-HFCKU73Y.js → chunk-BSREARWG.js} +29 -28
- package/dist/{chunk-F4V67JXG.js → chunk-CTERZC4K.js} +2 -2
- package/dist/{chunk-FMZEU7MF.js → chunk-CYLSQO4L.js} +6 -6
- package/dist/{chunk-JLJ7SP4X.js → chunk-DCPD5SHV.js} +3 -3
- package/dist/{chunk-U7AO6FRL.js → chunk-ENDB5YSV.js} +363 -129
- package/dist/{chunk-RTTZIX34.js → chunk-EOB7XVYR.js} +2 -2
- package/dist/chunk-EPDBWATV.js +38 -0
- package/dist/{chunk-TPN7RJOM.js → chunk-FJADQOFQ.js} +3 -3
- package/dist/{chunk-MG3DE3VO.js → chunk-FLMXJMMY.js} +3 -3
- package/dist/{chunk-WGC42WJU.js → chunk-FWNJDD4U.js} +6 -2
- package/dist/{chunk-S5P5Z5Y5.js → chunk-GINNZHVN.js} +2 -2
- package/dist/{chunk-7EZ5AKBK.js → chunk-GJH7ZEPH.js} +45 -38
- package/dist/{chunk-E3BJVEMZ.js → chunk-GQEXY7XL.js} +68 -65
- package/dist/{chunk-COCMMQXW.js → chunk-HHHYVTVS.js} +16 -16
- package/dist/chunk-ICLB27PZ.js +11 -0
- package/dist/{chunk-QMFIZQTB.js → chunk-IDGQB6XD.js} +6 -4
- package/dist/{chunk-R3XI2VC7.js → chunk-IDJGV6VM.js} +2 -1
- package/dist/{chunk-4CRLM3IT.js → chunk-IE47TYZT.js} +177 -118
- package/dist/{chunk-FJ57274M.js → chunk-IIEI7VK5.js} +15 -1
- package/dist/{chunk-YDA46XHI.js → chunk-IMO46ROR.js} +38 -32
- package/dist/{chunk-4SXHMFFP.js → chunk-IZTU6WVR.js} +24 -13
- package/dist/{chunk-U74EGVOA.js → chunk-JOD2CK2M.js} +16 -14
- package/dist/{chunk-U5B3TUEW.js → chunk-JUNTVLOU.js} +16 -15
- package/dist/{chunk-RWFMOVHG.js → chunk-KAZQX2EY.js} +2 -2
- package/dist/{chunk-NHQ7HUAS.js → chunk-KGX5LIUG.js} +10 -8
- package/dist/{chunk-Q74GP3GK.js → chunk-KO6DGOOB.js} +3 -3
- package/dist/{chunk-UTTRJ6KN.js → chunk-L26M3X7K.js} +16 -13
- package/dist/{chunk-RU2HHHYA.js → chunk-LD2JSKU3.js} +12 -2
- package/dist/{chunk-32MOGTKT.js → chunk-LEBPWFVF.js} +50 -46
- package/dist/{chunk-MU3CJPJF.js → chunk-LGI735AJ.js} +2 -2
- package/dist/{chunk-OWVDD5EC.js → chunk-LMWXBFLA.js} +2 -2
- package/dist/{chunk-CLQJAGWL.js → chunk-M3LZCDB6.js} +40 -42
- package/dist/{chunk-YT5ICQ4R.js → chunk-MFK7LF66.js} +2 -2
- package/dist/{chunk-JL7BDLC6.js → chunk-MJYFPFZT.js} +110 -20
- package/dist/{chunk-2QRIMMIH.js → chunk-N56W4R66.js} +2 -2
- package/dist/{chunk-LXXVHLTH.js → chunk-NN5IDH2I.js} +2 -2
- package/dist/{chunk-46KVXDUJ.js → chunk-NS3KIRSW.js} +2 -2
- package/dist/{chunk-LM3HY3VG.js → chunk-P2DM7Q5U.js} +2 -2
- package/dist/{chunk-DJL5PO27.js → chunk-P4SQV3XD.js} +2 -2
- package/dist/{chunk-HOIAQ3P2.js → chunk-P54AX5XN.js} +9 -9
- package/dist/{chunk-JQ575OAK.js → chunk-P64NBPSK.js} +14 -14
- package/dist/{chunk-7G4XMHDB.js → chunk-PIWUZFG7.js} +33 -25
- package/dist/{chunk-SWEKCK34.js → chunk-QAPFXLAC.js} +2 -2
- package/dist/chunk-QFIXL3OK.js +68 -0
- package/dist/{chunk-KRTLS3G6.js → chunk-QVMV4KCA.js} +2 -2
- package/dist/{chunk-76LHNLGX.js → chunk-R4YGH7DJ.js} +5 -3
- package/dist/{chunk-PAW4RMH3.js → chunk-RC3FM3FE.js} +12 -13
- package/dist/{chunk-UJBP57UJ.js → chunk-RC6GGF6X.js} +2 -2
- package/dist/{chunk-S6OXNZBM.js → chunk-RHZZVIGA.js} +3 -3
- package/dist/{chunk-MS5574I7.js → chunk-RIXWLFB4.js} +2 -2
- package/dist/{chunk-BCB24FG7.js → chunk-RUNI4OXP.js} +18 -14
- package/dist/{chunk-ICVIJLBA.js → chunk-SFSJ6XWV.js} +2 -2
- package/dist/{chunk-EGXJWRO6.js → chunk-SNBEAO4Q.js} +8 -8
- package/dist/{chunk-XHROEQ23.js → chunk-SXD6VY7D.js} +16 -14
- package/dist/{chunk-GEURKGZS.js → chunk-TLM3I4XF.js} +16 -16
- package/dist/{chunk-IFC3JXCT.js → chunk-TO6TWNMF.js} +19 -15
- package/dist/{chunk-OUJG73YJ.js → chunk-U2JIFCJN.js} +18 -18
- package/dist/{chunk-CAPR5DET.js → chunk-U4ND3J6C.js} +18 -14
- package/dist/{chunk-YVDBBWEP.js → chunk-UCF6TKWV.js} +51 -48
- package/dist/{chunk-UWYZIGCB.js → chunk-UDYJVX6Y.js} +9 -9
- package/dist/{chunk-OBYZU23V.js → chunk-UQY2VLUK.js} +25 -23
- package/dist/{chunk-CQKD6GOC.js → chunk-VAA7QSZ7.js} +53 -32
- package/dist/{chunk-Q6BAFS7I.js → chunk-VQGQF7O7.js} +12 -10
- package/dist/{chunk-DEW62ON3.js → chunk-VSPNH7LC.js} +2 -2
- package/dist/{chunk-4YER7UCV.js → chunk-VUJQ6RU6.js} +2 -2
- package/dist/{chunk-C576CU77.js → chunk-VZD3ZV4Y.js} +26 -22
- package/dist/{chunk-NCT22MOD.js → chunk-WMIKC5XO.js} +2 -2
- package/dist/{chunk-C2WH3BMS.js → chunk-X326N4GN.js} +10 -7
- package/dist/chunk-XBJJP2HN.js +37 -0
- package/dist/{chunk-7NSNE52V.js → chunk-XCR3PDFF.js} +2 -2
- package/dist/{chunk-TF76LCZS.js → chunk-XDPJMLOH.js} +30 -27
- package/dist/{chunk-3LJNQ6LR.js → chunk-YKDZ3ZRI.js} +27 -25
- package/dist/{chunk-GLREDNBA.js → chunk-YVLTNNME.js} +12 -2
- package/dist/{chunk-76IBFEYW.js → chunk-ZGOBAMQ2.js} +15 -13
- package/dist/{chunk-AFR6GWXD.js → chunk-ZMCFUGKO.js} +49 -42
- package/dist/clock.js +11 -5
- package/dist/completion-registry.js +2 -2
- package/dist/countdown.js +26 -20
- package/dist/{d3--y67plmW.d.ts → d3-CQT5bwpb.d.ts} +1 -1
- package/dist/{dgmo-router-CY5j16Pl.d.ts → dgmo-router-C9CsswPZ.d.ts} +1 -1
- package/dist/{dgmo-router-A3LIHT6H.js → dgmo-router-XZNCLYTV.js} +30 -29
- package/dist/{dimensions-7NYBSZRJ.js → dimensions-SIZMZ4DC.js} +8 -8
- package/dist/{flowchart-renderer-QYGQ64BM.js → flowchart-renderer-FDJ4QQXE.js} +15 -14
- package/dist/index.d.ts +7 -7
- package/dist/index.js +58 -43
- package/dist/{layout-LAS67TK3.js → layout-5DZ2LI2R.js} +2 -2
- package/dist/{layout-ZAGUFT2G.js → layout-6I6LSBUR.js} +6 -5
- package/dist/{layout-2OJ25STS.js → layout-C2SCZV5M.js} +6 -5
- package/dist/{layout-6SKHNQYO.js → layout-CHWKNE3O.js} +3 -3
- package/dist/{layout-EM4DLMAX.js → layout-K4KML2DL.js} +3 -3
- package/dist/{layout-KQUSB45X.js → layout-S53FSD6R.js} +7 -6
- package/dist/{layout-ROORJQ4X.js → layout-TCFXB5XH.js} +7 -6
- package/dist/{layout-5ILNODTP.js → layout-XK6ZD7BU.js} +6 -5
- package/dist/{layout-B5GQVXXY.js → layout-YVY72CIG.js} +7 -6
- package/dist/{layout-VUZ3MLOI.js → layout-YY6VH5XH.js} +6 -5
- package/dist/{layout-RV2T2YTT.js → layout-ZDN252GR.js} +4 -3
- package/dist/{layout-search-UOKEMER5.js → layout-search-TSV4FURP.js} +7 -6
- package/dist/{legend-constants-PLN2YHGM.js → legend-constants-SB4PLHV5.js} +3 -3
- package/dist/{palettes-54YSI3IX.js → palettes-YIPSRYXP.js} +5 -3
- package/dist/{parser-GCVSRQPY.js → parser-2BX2EJUB.js} +3 -3
- package/dist/{parser-WVE6SKB7.js → parser-3UNIPVNY.js} +3 -3
- package/dist/{parser-5XFGK5C5.js → parser-4IHIVDJD.js} +5 -5
- package/dist/{parser-ZT3PU2HT.js → parser-62VNEQRT.js} +3 -3
- package/dist/{parser-PR3OR3LO.js → parser-6JNJHQAG.js} +3 -3
- package/dist/{parser-ZXQZZK6W.js → parser-6ZFQLLVE.js} +3 -2
- package/dist/{parser-WMJEPZDC.js → parser-BOPXE6RP.js} +3 -3
- package/dist/{parser-WWRRG2DV.js → parser-DFBQ2RID.js} +3 -3
- package/dist/{parser-2GMHFSTS.js → parser-EPKXJ2RL.js} +3 -3
- package/dist/{parser-ML3LVNDV.js → parser-G7E2BURB.js} +3 -3
- package/dist/{parser-QOIZGW7I.js → parser-GFGU5ZLQ.js} +3 -3
- package/dist/{parser-L7T7FY3H.js → parser-GKZWI5SZ.js} +3 -3
- package/dist/{parser-QYAIFXLP.js → parser-HSPODF4H.js} +3 -3
- package/dist/{parser-EQ4I3TSH.js → parser-IK3FXZ7D.js} +3 -3
- package/dist/{parser-LV7PQBUG.js → parser-LJWPKRDM.js} +3 -3
- package/dist/{parser-RDBXEVI4.js → parser-OYWUBQV4.js} +3 -3
- package/dist/{parser-6FUESG4N.js → parser-PD4TP6NM.js} +3 -3
- package/dist/{parser-E3OHNNTH.js → parser-R2JHC7LQ.js} +3 -3
- package/dist/{parser-CJNP7RKR.js → parser-RMZ6YI7H.js} +3 -3
- package/dist/{parser-TA5TYZNL.js → parser-RUJNN5PK.js} +3 -3
- package/dist/{parser-UTR5WE4O.js → parser-YWE7GHW6.js} +3 -3
- package/dist/{parser-3AOMUX5D.js → parser-Z5UK6ADF.js} +3 -3
- package/dist/{parser-YWQCC33R.js → parser-ZO5YT5SV.js} +3 -3
- package/dist/renderer-5TPUPMZ7.js +26 -0
- package/dist/{renderer-4EWGZLJ6.js → renderer-AIVALEQR.js} +7 -7
- package/dist/renderer-AMELXBNW.js +23 -0
- package/dist/renderer-BF7FYXG3.js +25 -0
- package/dist/renderer-CRRW7LTW.js +17 -0
- package/dist/renderer-CXU2MGSC.js +27 -0
- package/dist/renderer-DI66RLAG.js +30 -0
- package/dist/renderer-E2JTYQY5.js +39 -0
- package/dist/{renderer-ZAJ5353N.js → renderer-FA4BTAOL.js} +7 -7
- package/dist/{renderer-GF6S5ZX6.js → renderer-FFGFTIT4.js} +15 -14
- package/dist/renderer-IVAM7Z3Y.js +27 -0
- package/dist/renderer-J6HK2KOW.js +23 -0
- package/dist/renderer-J7J3OVLQ.js +39 -0
- package/dist/{renderer-QAMOXOZ2.js → renderer-JC7MK7SD.js} +6 -5
- package/dist/{renderer-CGOPX4HW.js → renderer-JHQC5RGJ.js} +14 -14
- package/dist/renderer-JRITSZY3.js +28 -0
- package/dist/{renderer-E6NHTVN6.js → renderer-KD5X4RIS.js} +14 -13
- package/dist/{renderer-OTHBTGBN.js → renderer-KWNNWCGD.js} +6 -5
- package/dist/{renderer-EP4GRCDX.js → renderer-LGMIAG6N.js} +7 -6
- package/dist/{renderer-IH45QV6Z.js → renderer-LQN3FXAP.js} +33 -32
- package/dist/renderer-LRL4SU43.js +29 -0
- package/dist/{renderer-D7N7PPB7.js → renderer-MBL64AJI.js} +6 -6
- package/dist/renderer-NA3DTAWF.js +39 -0
- package/dist/renderer-OR5QHR7X.js +31 -0
- package/dist/renderer-SBVWHQVW.js +30 -0
- package/dist/{renderer-KMOGGMM7.js → renderer-TLOSBJKW.js} +13 -13
- package/dist/{renderer-LE3ZKHNS.js → renderer-UDWJRRIC.js} +11 -11
- package/dist/renderer-VHK6UAW2.js +20 -0
- package/dist/{renderer-FUJNSC5X.js → renderer-W5UG2HWT.js} +5 -5
- package/dist/renderer-WOOKJOBQ.js +25 -0
- package/dist/renderer-WYNLGZRF.js +25 -0
- package/dist/{renderer-BUEFD2IF.js → renderer-Y74Y54C3.js} +8 -8
- package/dist/renderer-ZUAXGHFC.js +28 -0
- package/dist/renderer-radial-YVUDGR7C.js +21 -0
- package/dist/{state-parser-TPA67IXM.js → state-parser-CT5HQQ7E.js} +3 -3
- package/dist/state-renderer-7O3QGNJ5.js +41 -0
- package/dist/{tag-groups-DrHT2tEc.d.ts → tag-groups-BoJg3lFV.d.ts} +23 -1
- package/dist/{themes-GWhsabnx.d.ts → themes-CXYnNA4e.d.ts} +2 -2
- package/docs/architecture-report.md +3 -3
- package/docs/language-reference.md +122 -30
- package/docs/migration-sequence-color-to-tags.md +16 -8
- package/gallery/fixtures/sketch.dgmo +1 -1
- package/package.json +7 -6
- package/dist/charts-d3-SQEVMIAM.js +0 -29
- package/dist/chunk-LP7EC4MI.js +0 -16
- package/dist/chunk-UTCPNJND.js +0 -7
- package/dist/chunk-VV6HZQ5K.js +0 -40
- package/dist/renderer-3FB56573.js +0 -22
- package/dist/renderer-4PNVGHVA.js +0 -16
- package/dist/renderer-5W3HWIUL.js +0 -24
- package/dist/renderer-CO5O5VR5.js +0 -20
- package/dist/renderer-DKW273R7.js +0 -26
- package/dist/renderer-F24V3RD3.js +0 -26
- package/dist/renderer-F6WSR7UM.js +0 -39
- package/dist/renderer-FGGDZZFQ.js +0 -31
- package/dist/renderer-GJDVPXI3.js +0 -30
- package/dist/renderer-JMJ7Q5OC.js +0 -28
- package/dist/renderer-LBNVKVO3.js +0 -39
- package/dist/renderer-MUW4G2N6.js +0 -38
- package/dist/renderer-PIEPRK6M.js +0 -23
- package/dist/renderer-PKRKLOYR.js +0 -25
- package/dist/renderer-PR3KLNST.js +0 -28
- package/dist/renderer-RUHC6D3B.js +0 -25
- package/dist/renderer-UUP6OX6F.js +0 -27
- package/dist/renderer-UYZSP7MF.js +0 -25
- package/dist/renderer-XBL6CLN2.js +0 -30
- package/dist/renderer-radial-MZP3SVTZ.js +0 -21
- package/dist/state-renderer-UIE3AQM6.js +0 -40
|
@@ -5,26 +5,31 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
ScaleContext
|
|
7
7
|
} from "./chunk-24YPR5EH.js";
|
|
8
|
+
import {
|
|
9
|
+
EDGE_DASH,
|
|
10
|
+
GRID_DASH,
|
|
11
|
+
HAIRLINE_DASH
|
|
12
|
+
} from "./chunk-IIEI7VK5.js";
|
|
8
13
|
import {
|
|
9
14
|
INLINE_HEADER_PAD,
|
|
10
15
|
layoutInlineHeader
|
|
11
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-FLMXJMMY.js";
|
|
12
17
|
import {
|
|
13
18
|
TITLE_FONT_SIZE,
|
|
14
19
|
TITLE_FONT_WEIGHT,
|
|
15
20
|
TITLE_Y
|
|
16
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-VSPNH7LC.js";
|
|
17
22
|
import {
|
|
18
23
|
renderIntegratedLegend
|
|
19
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-67I3HFSF.js";
|
|
20
25
|
import {
|
|
21
26
|
controlsGroupCapsuleWidth,
|
|
22
27
|
getLegendExtent,
|
|
23
28
|
getMaxLegendReservedHeight
|
|
24
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-IZTU6WVR.js";
|
|
25
30
|
import {
|
|
26
31
|
FONT_FAMILY
|
|
27
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-ICLB27PZ.js";
|
|
28
33
|
import {
|
|
29
34
|
LEGEND_CAPSULE_PAD,
|
|
30
35
|
LEGEND_DOT_R,
|
|
@@ -39,7 +44,7 @@ import {
|
|
|
39
44
|
LEGEND_PILL_PAD,
|
|
40
45
|
measureLegendText,
|
|
41
46
|
truncateLegendText
|
|
42
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-MFK7LF66.js";
|
|
43
48
|
import {
|
|
44
49
|
CHAR_WIDTH_RATIO,
|
|
45
50
|
measureText,
|
|
@@ -49,16 +54,18 @@ import {
|
|
|
49
54
|
normalizeName
|
|
50
55
|
} from "./chunk-NOTA6TEI.js";
|
|
51
56
|
import {
|
|
57
|
+
UNTAGGED_TAG_COLOR,
|
|
52
58
|
resolveActiveTagGroup,
|
|
53
59
|
resolveTagColor,
|
|
54
60
|
tagAttrKey
|
|
55
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-R4YGH7DJ.js";
|
|
56
62
|
import {
|
|
57
63
|
contrastText,
|
|
64
|
+
getEraColors,
|
|
58
65
|
getSeriesColors,
|
|
59
66
|
mix,
|
|
60
67
|
shapeFill
|
|
61
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-YVLTNNME.js";
|
|
62
69
|
|
|
63
70
|
// src/gantt/renderer.ts
|
|
64
71
|
import * as d3Scale from "d3-scale";
|
|
@@ -391,10 +398,10 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
391
398
|
if (todayDate) {
|
|
392
399
|
todayX = xScale(dateToFractionalYear(todayDate));
|
|
393
400
|
if (todayX >= 0 && todayX <= innerWidth) {
|
|
394
|
-
const todayLine = g.append("line").attr("class", "gantt-today").attr("x1", todayX).attr("y1", 0).attr("x2", todayX).attr("y2", sInnerHeight + 10).attr("stroke", todayColor).attr("stroke-width", 2).attr("stroke-dasharray",
|
|
401
|
+
const todayLine = g.append("line").attr("class", "gantt-today").attr("x1", todayX).attr("y1", 0).attr("x2", todayX).attr("y2", sInnerHeight + 10).attr("stroke", todayColor).attr("stroke-width", 2).attr("stroke-dasharray", EDGE_DASH).attr("opacity", 0.7).attr("pointer-events", "none");
|
|
395
402
|
if (todayMarkerLineNum)
|
|
396
403
|
todayLine.attr("data-line-number", String(todayMarkerLineNum));
|
|
397
|
-
const todayLabel = g.append("text").attr("class", "gantt-today").attr("x", todayX).attr("y", sTodayLabelY).attr("text-anchor", "middle").attr("font-size",
|
|
404
|
+
const todayLabel = g.append("text").attr("class", "gantt-today").attr("x", todayX).attr("y", sTodayLabelY).attr("text-anchor", "middle").attr("font-size", sFont10).attr("fill", todayColor).attr("opacity", 0.7).attr("pointer-events", "none").text("Today");
|
|
398
405
|
if (todayMarkerLineNum)
|
|
399
406
|
todayLabel.attr("data-line-number", String(todayMarkerLineNum));
|
|
400
407
|
}
|
|
@@ -424,7 +431,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
424
431
|
let yOffset = sContentTopPad;
|
|
425
432
|
for (const row of rows) {
|
|
426
433
|
if (row.type === "lane-header") {
|
|
427
|
-
const laneColor = row.laneColor ===
|
|
434
|
+
const laneColor = row.laneColor === UNTAGGED_TAG_COLOR ? palette.textMuted : row.laneColor;
|
|
428
435
|
const toggleIcon = row.isCollapsed ? "\u25B6" : "\u25BC";
|
|
429
436
|
const labelX = 10;
|
|
430
437
|
let lx1 = 0;
|
|
@@ -472,7 +479,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
472
479
|
restoreHighlight();
|
|
473
480
|
hideGanttDateIndicators(g);
|
|
474
481
|
});
|
|
475
|
-
labelG.append("text").attr("x", labelX).attr("y", sMarginTop + yOffset + sBarH / 2).attr("dy", "0.35em").attr("text-anchor", "start").attr("font-size",
|
|
482
|
+
labelG.append("text").attr("x", labelX).attr("y", sMarginTop + yOffset + sBarH / 2).attr("dy", "0.35em").attr("text-anchor", "start").attr("font-size", sFont11).attr("font-weight", "bold").attr("fill", laneColor).text(
|
|
476
483
|
toggleIcon + " " + row.laneName + (row.aggregateProgress !== null ? ` ${Math.round(row.aggregateProgress)}%` : "")
|
|
477
484
|
);
|
|
478
485
|
if (laneBarWidth > 0) {
|
|
@@ -514,7 +521,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
514
521
|
currentActiveGroup,
|
|
515
522
|
true
|
|
516
523
|
);
|
|
517
|
-
const groupColor = tagColor && tagColor !==
|
|
524
|
+
const groupColor = tagColor && tagColor !== UNTAGGED_TAG_COLOR ? tagColor : group.color || palette.textMuted;
|
|
518
525
|
renderLabelBand(
|
|
519
526
|
svg,
|
|
520
527
|
sMarginTop + yOffset + sBarH / 2,
|
|
@@ -547,7 +554,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
547
554
|
});
|
|
548
555
|
const groupIndent = group.depth <= 2 ? group.depth * 14 : 2 * 14 + (group.depth - 2) * 8;
|
|
549
556
|
const labelX = 10 + groupIndent;
|
|
550
|
-
labelG.append("text").attr("x", labelX).attr("y", sMarginTop + yOffset + sBarH / 2).attr("dy", "0.35em").attr("text-anchor", "start").attr("font-size",
|
|
557
|
+
labelG.append("text").attr("x", labelX).attr("y", sMarginTop + yOffset + sBarH / 2).attr("dy", "0.35em").attr("text-anchor", "start").attr("font-size", sFont11).attr("font-weight", "bold").attr("fill", palette.text).text(
|
|
551
558
|
toggleIcon + " " + group.name + (group.progress !== null ? ` ${Math.round(group.progress)}%` : "")
|
|
552
559
|
);
|
|
553
560
|
const gStart = dateToFractionalYear(group.startDate);
|
|
@@ -597,7 +604,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
597
604
|
true
|
|
598
605
|
);
|
|
599
606
|
if (summaryPlacement) {
|
|
600
|
-
summaryG.append("text").attr("x", summaryPlacement.x).attr("y", yOffset + sBarH / 2).attr("dy", "0.35em").attr("font-size",
|
|
607
|
+
summaryG.append("text").attr("x", summaryPlacement.x).attr("y", yOffset + sBarH / 2).attr("dy", "0.35em").attr("font-size", sFont10).attr("font-weight", "bold").attr("text-anchor", summaryPlacement.anchor).attr("fill", summaryPlacement.fill).attr("pointer-events", "none").text(summaryPlacement.text);
|
|
601
608
|
}
|
|
602
609
|
groupPositions.set(group.name, {
|
|
603
610
|
x1: gx1,
|
|
@@ -646,7 +653,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
646
653
|
true
|
|
647
654
|
);
|
|
648
655
|
if (expandedPlacement) {
|
|
649
|
-
groupBarG.append("text").attr("x", expandedPlacement.x).attr("y", yOffset + sBarH / 2).attr("dy", "0.35em").attr("font-size",
|
|
656
|
+
groupBarG.append("text").attr("x", expandedPlacement.x).attr("y", yOffset + sBarH / 2).attr("dy", "0.35em").attr("font-size", sFont10).attr("font-weight", "bold").attr("text-anchor", expandedPlacement.anchor).attr("fill", expandedPlacement.fill).attr("pointer-events", "none").text(expandedPlacement.text);
|
|
650
657
|
}
|
|
651
658
|
}
|
|
652
659
|
}
|
|
@@ -665,7 +672,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
665
672
|
const indent = depth <= 2 ? depth * 14 : 2 * 14 + (depth - 2) * 8;
|
|
666
673
|
const taskLabelX = isTagMode ? 20 : 6 + indent;
|
|
667
674
|
const topGroup = rt.groupPath.length > 0 ? rt.groupPath[0] : null;
|
|
668
|
-
const taskLabel = svg.append("text").attr("class", "gantt-task-label").attr("x", taskLabelX).attr("y", sMarginTop + yOffset + sBarH / 2).attr("dy", "0.35em").attr("text-anchor", "start").attr("font-size",
|
|
675
|
+
const taskLabel = svg.append("text").attr("class", "gantt-task-label").attr("x", taskLabelX).attr("y", sMarginTop + yOffset + sBarH / 2).attr("dy", "0.35em").attr("text-anchor", "start").attr("font-size", sFont11).attr("fill", palette.text).attr("data-line-number", String(task.lineNumber)).attr("data-task-id", task.id).attr("data-group", topGroup).style("cursor", onClickItem ? "pointer" : "default").on("click", () => {
|
|
669
676
|
if (onClickItem) onClickItem(task.lineNumber);
|
|
670
677
|
}).on("mouseenter", () => {
|
|
671
678
|
if (rt.isMilestone) {
|
|
@@ -704,7 +711,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
704
711
|
sInnerHeight,
|
|
705
712
|
barColor
|
|
706
713
|
);
|
|
707
|
-
g.append("text").attr("class", "gantt-milestone-hover-label").attr("x", mx - sMilestoneSize - 4).attr("y", my).attr("dy", "0.35em").attr("text-anchor", "end").attr("font-size",
|
|
714
|
+
g.append("text").attr("class", "gantt-milestone-hover-label").attr("x", mx - sMilestoneSize - 4).attr("y", my).attr("dy", "0.35em").attr("text-anchor", "end").attr("font-size", sFont10).attr("fill", barColor).attr("font-weight", "bold").text(task.label);
|
|
708
715
|
}).on("mouseleave", () => {
|
|
709
716
|
restoreHighlight();
|
|
710
717
|
hideGanttDateIndicators(g);
|
|
@@ -799,7 +806,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
799
806
|
sLabelGap
|
|
800
807
|
);
|
|
801
808
|
if (labelPlacement) {
|
|
802
|
-
taskG.append("text").attr("x", labelPlacement.x).attr("y", yOffset + sBarH / 2).attr("dy", "0.35em").attr("font-size",
|
|
809
|
+
taskG.append("text").attr("x", labelPlacement.x).attr("y", yOffset + sBarH / 2).attr("dy", "0.35em").attr("font-size", sFont10).attr("text-anchor", labelPlacement.anchor).attr("fill", labelPlacement.fill).attr("pointer-events", "none").text(labelPlacement.text);
|
|
803
810
|
}
|
|
804
811
|
taskPositions.set(task.id, {
|
|
805
812
|
x1,
|
|
@@ -989,7 +996,7 @@ function drawHolidayBand(g, svg, xScale, start, end, height, palette, _isDark, l
|
|
|
989
996
|
const labelX = chartLeftMargin + x1 + bandW / 2;
|
|
990
997
|
const textLen = measureText(label, 10) + 8;
|
|
991
998
|
const labelBg = svg.append("rect").attr("class", "gantt-holiday-hover-bg").attr("data-line-number", String(lineNumber)).attr("x", labelX - textLen / 2).attr("y", headerY - 11).attr("width", textLen).attr("height", 14).attr("rx", 3).attr("fill", palette.bg).attr("opacity", 0).attr("pointer-events", "none");
|
|
992
|
-
const labelText = svg.append("text").attr("class", "gantt-holiday-hover-label").attr("data-line-number", String(lineNumber)).attr("x", labelX).attr("y", headerY).attr("text-anchor", "middle").attr("font-size",
|
|
999
|
+
const labelText = svg.append("text").attr("class", "gantt-holiday-hover-label").attr("data-line-number", String(lineNumber)).attr("x", labelX).attr("y", headerY).attr("text-anchor", "middle").attr("font-size", 10).attr("font-weight", "normal").attr("fill", palette.text).attr("opacity", 0).attr("pointer-events", "none").text(label);
|
|
993
1000
|
bandG.on("mouseenter", () => {
|
|
994
1001
|
bandRect.attr("opacity", hoverOpacity);
|
|
995
1002
|
labelBg.attr("opacity", 1);
|
|
@@ -1379,12 +1386,12 @@ function renderTagLegend(svg, chartG, tagGroups, activeGroupName, chartLeftMargi
|
|
|
1379
1386
|
applyCriticalPathHighlight(svg, chartG);
|
|
1380
1387
|
}
|
|
1381
1388
|
}
|
|
1382
|
-
var ERA_COLORS = ["#3b6ea5", "#5b9357", "#c9a227", "#cc7a33", "#7d5ba6"];
|
|
1383
1389
|
function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, eraLabelY, markerLabelY) {
|
|
1384
1390
|
for (let i = 0; i < resolved.eras.length; i++) {
|
|
1385
1391
|
const era = resolved.eras[i];
|
|
1386
1392
|
if (!era) continue;
|
|
1387
|
-
const
|
|
1393
|
+
const eraColors = getEraColors(palette);
|
|
1394
|
+
const color = era.color || eraColors[i % eraColors.length];
|
|
1388
1395
|
const sx = xScale(parseDateToFractionalYear(era.startDate));
|
|
1389
1396
|
const ex = xScale(parseDateToFractionalYear(era.endDate));
|
|
1390
1397
|
if (ex <= sx) continue;
|
|
@@ -1397,7 +1404,7 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
|
|
|
1397
1404
|
const eraLabelMaxW = Math.max(0, ex - sx - 8);
|
|
1398
1405
|
const eraDisplayLabel = truncateLegendText(era.label, 10, eraLabelMaxW);
|
|
1399
1406
|
const eraTruncated = eraDisplayLabel !== era.label;
|
|
1400
|
-
const eraLabel = eraG.append("text").attr("class", "gantt-era-label").attr("x", (sx + ex) / 2).attr("y", eraLabelY).attr("text-anchor", "middle").attr("font-size",
|
|
1407
|
+
const eraLabel = eraG.append("text").attr("class", "gantt-era-label").attr("x", (sx + ex) / 2).attr("y", eraLabelY).attr("text-anchor", "middle").attr("font-size", 10).attr("fill", color).attr("opacity", 0.7).style("cursor", "pointer").text(eraDisplayLabel);
|
|
1401
1408
|
eraG.on("mouseenter", () => {
|
|
1402
1409
|
g.selectAll(".gantt-task").attr(
|
|
1403
1410
|
"opacity",
|
|
@@ -1470,12 +1477,12 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
|
|
|
1470
1477
|
const markerTruncated = markerDisplayLabel !== marker.label;
|
|
1471
1478
|
const markerG = g.append("g").attr("class", "gantt-marker-group").attr("data-line-number", String(marker.lineNumber)).style("cursor", "pointer");
|
|
1472
1479
|
markerG.append("rect").attr("x", mx - 40).attr("y", labelY - 12).attr("width", 80).attr("height", innerHeight - labelY + 12).attr("fill", "transparent").attr("pointer-events", "all");
|
|
1473
|
-
const markerLabelEl = markerG.append("text").attr("class", "gantt-marker-label").attr("x", mx).attr("y", labelY).attr("text-anchor", "middle").attr("font-size",
|
|
1480
|
+
const markerLabelEl = markerG.append("text").attr("class", "gantt-marker-label").attr("x", mx).attr("y", labelY).attr("text-anchor", "middle").attr("font-size", 11).attr("font-weight", "bold").attr("fill", color).text(markerDisplayLabel);
|
|
1474
1481
|
markerG.append("path").attr(
|
|
1475
1482
|
"d",
|
|
1476
1483
|
`M${mx},${diamondY - diamondSize} l${diamondSize},${diamondSize} l-${diamondSize},${diamondSize} l-${diamondSize},-${diamondSize} Z`
|
|
1477
1484
|
).attr("fill", color).attr("opacity", 0.9);
|
|
1478
|
-
markerG.append("line").attr("class", "gantt-marker").attr("x1", mx).attr("y1", diamondY + diamondSize).attr("x2", mx).attr("y2", innerHeight).attr("stroke", color).attr("stroke-width", 1.5).attr("stroke-dasharray",
|
|
1485
|
+
markerG.append("line").attr("class", "gantt-marker").attr("x1", mx).attr("y1", diamondY + diamondSize).attr("x2", mx).attr("y2", innerHeight).attr("stroke", color).attr("stroke-width", 1.5).attr("stroke-dasharray", EDGE_DASH).attr("opacity", 0.5);
|
|
1479
1486
|
const markerLine = markerG.select(".gantt-marker");
|
|
1480
1487
|
const markerDiamond = markerG.select("path");
|
|
1481
1488
|
markerG.on("mouseenter", () => {
|
|
@@ -1552,9 +1559,9 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
|
|
|
1552
1559
|
if (sprint.number % 2 !== 0) {
|
|
1553
1560
|
sprintG.append("rect").attr("x", sx).attr("y", 0).attr("width", bandWidth).attr("height", innerHeight).attr("fill", "transparent");
|
|
1554
1561
|
}
|
|
1555
|
-
const sprintLabel = sprintG.append("text").attr("class", "gantt-sprint-label").attr("x", (sx + ex) / 2).attr("y", -22).attr("text-anchor", "middle").attr("font-size",
|
|
1562
|
+
const sprintLabel = sprintG.append("text").attr("class", "gantt-sprint-label").attr("x", (sx + ex) / 2).attr("y", -22).attr("text-anchor", "middle").attr("font-size", 10).attr("font-weight", "bold").attr("fill", bandColor).attr("opacity", 0.4).text(String(sprint.number));
|
|
1556
1563
|
if (i > 0 && rawSx >= chartMinX) {
|
|
1557
|
-
sprintG.append("line").attr("class", "gantt-sprint-boundary").attr("x1", sx).attr("y1", -6).attr("x2", sx).attr("y2", innerHeight).attr("stroke", bandColor).attr("stroke-width", 1).attr("stroke-dasharray",
|
|
1564
|
+
sprintG.append("line").attr("class", "gantt-sprint-boundary").attr("x1", sx).attr("y1", -6).attr("x2", sx).attr("y2", innerHeight).attr("stroke", bandColor).attr("stroke-width", 1).attr("stroke-dasharray", HAIRLINE_DASH).attr("opacity", SPRINT_BOUNDARY_OPACITY);
|
|
1558
1565
|
}
|
|
1559
1566
|
const sprintStartMs = sprint.startDate.getTime();
|
|
1560
1567
|
const sprintEndMs = sprint.endDate.getTime();
|
|
@@ -1654,17 +1661,17 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
|
|
|
1654
1661
|
);
|
|
1655
1662
|
}
|
|
1656
1663
|
const accentColor = palette.accent || palette.text || bandColor;
|
|
1657
|
-
sprintLabel.text(`Sprint ${sprint.number}`).attr("font-size",
|
|
1664
|
+
sprintLabel.text(`Sprint ${sprint.number}`).attr("font-size", 13).attr("font-weight", "bold").attr("fill", accentColor).attr("opacity", 1);
|
|
1658
1665
|
}).on("mouseleave", () => {
|
|
1659
1666
|
resetHighlight(g, svg);
|
|
1660
1667
|
sprintRect.attr("opacity", baseOpacity);
|
|
1661
|
-
sprintLabel.text(String(sprint.number)).attr("font-size",
|
|
1668
|
+
sprintLabel.text(String(sprint.number)).attr("font-size", 10).attr("font-weight", "bold").attr("fill", bandColor).attr("opacity", 0.4);
|
|
1662
1669
|
hideGanttDateIndicators(g);
|
|
1663
1670
|
});
|
|
1664
1671
|
}
|
|
1665
1672
|
const lastSprint = resolved.sprints[resolved.sprints.length - 1];
|
|
1666
1673
|
const lastEx = xScale(dateToFractionalYear(lastSprint.endDate));
|
|
1667
|
-
g.append("line").attr("class", "gantt-sprint-boundary").attr("x1", lastEx).attr("y1", -6).attr("x2", lastEx).attr("y2", innerHeight).attr("stroke", bandColor).attr("stroke-width", 1).attr("stroke-dasharray",
|
|
1674
|
+
g.append("line").attr("class", "gantt-sprint-boundary").attr("x1", lastEx).attr("y1", -6).attr("x2", lastEx).attr("y2", innerHeight).attr("stroke", bandColor).attr("stroke-width", 1).attr("stroke-dasharray", HAIRLINE_DASH).attr("opacity", SPRINT_BOUNDARY_OPACITY);
|
|
1668
1675
|
}
|
|
1669
1676
|
function parseDateStringToDate(s) {
|
|
1670
1677
|
const parts = s.split("-").map((p) => parseInt(p, 10));
|
|
@@ -2015,7 +2022,7 @@ function buildTagLaneRowList(resolved, swimlaneGroup, collapsedLanes) {
|
|
|
2015
2022
|
rows.push({
|
|
2016
2023
|
type: "lane-header",
|
|
2017
2024
|
laneName: noLaneName,
|
|
2018
|
-
laneColor:
|
|
2025
|
+
laneColor: UNTAGGED_TAG_COLOR,
|
|
2019
2026
|
aggregateProgress,
|
|
2020
2027
|
tagKey,
|
|
2021
2028
|
isCollapsed,
|
|
@@ -2070,10 +2077,10 @@ function showGanttDateIndicators(g, xScale, startDate, endDate, innerHeight, col
|
|
|
2070
2077
|
const startPos = xScale(dateToFractionalYear(startDate));
|
|
2071
2078
|
const startLabel = formatGanttDate(startDate);
|
|
2072
2079
|
if (!options?.skipStartLine) {
|
|
2073
|
-
hg.append("line").attr("class", "gantt-hover-date").attr("x1", startPos).attr("y1", -tickLen).attr("x2", startPos).attr("y2", innerHeight).attr("stroke", color).attr("stroke-width", 1.5).attr("stroke-dasharray",
|
|
2080
|
+
hg.append("line").attr("class", "gantt-hover-date").attr("x1", startPos).attr("y1", -tickLen).attr("x2", startPos).attr("y2", innerHeight).attr("stroke", color).attr("stroke-width", 1.5).attr("stroke-dasharray", GRID_DASH).attr("opacity", 0.6);
|
|
2074
2081
|
}
|
|
2075
|
-
hg.append("text").attr("class", "gantt-hover-date").attr("x", startPos).attr("y", -tickLen - 4).attr("text-anchor", "middle").attr("fill", color).attr("font-size",
|
|
2076
|
-
hg.append("text").attr("class", "gantt-hover-date").attr("x", startPos).attr("y", innerHeight + tickLen + 12).attr("text-anchor", "middle").attr("fill", color).attr("font-size",
|
|
2082
|
+
hg.append("text").attr("class", "gantt-hover-date").attr("x", startPos).attr("y", -tickLen - 4).attr("text-anchor", "middle").attr("fill", color).attr("font-size", 10).attr("font-weight", "bold").text(startLabel);
|
|
2083
|
+
hg.append("text").attr("class", "gantt-hover-date").attr("x", startPos).attr("y", innerHeight + tickLen + 12).attr("text-anchor", "middle").attr("fill", color).attr("font-size", 10).attr("font-weight", "bold").text(startLabel);
|
|
2077
2084
|
if (endDate && endDate.getTime() !== startDate.getTime()) {
|
|
2078
2085
|
const endPos = xScale(dateToFractionalYear(endDate));
|
|
2079
2086
|
const endLabel = formatGanttDate(endDate);
|
|
@@ -2090,7 +2097,7 @@ function showGanttDateIndicators(g, xScale, startDate, endDate, innerHeight, col
|
|
|
2090
2097
|
startAnchor = "middle";
|
|
2091
2098
|
endAnchor = "middle";
|
|
2092
2099
|
}
|
|
2093
|
-
hg.append("line").attr("class", "gantt-hover-date").attr("x1", endPos).attr("y1", -tickLen).attr("x2", endPos).attr("y2", innerHeight).attr("stroke", color).attr("stroke-width", 1.5).attr("stroke-dasharray",
|
|
2100
|
+
hg.append("line").attr("class", "gantt-hover-date").attr("x1", endPos).attr("y1", -tickLen).attr("x2", endPos).attr("y2", innerHeight).attr("stroke", color).attr("stroke-width", 1.5).attr("stroke-dasharray", GRID_DASH).attr("opacity", 0.6);
|
|
2094
2101
|
hg.selectAll("text.gantt-hover-date").each(
|
|
2095
2102
|
function() {
|
|
2096
2103
|
const el = d3Selection.select(this);
|
|
@@ -2099,8 +2106,8 @@ function showGanttDateIndicators(g, xScale, startDate, endDate, innerHeight, col
|
|
|
2099
2106
|
}
|
|
2100
2107
|
}
|
|
2101
2108
|
);
|
|
2102
|
-
hg.append("text").attr("class", "gantt-hover-date").attr("x", endLabelX).attr("y", -tickLen - 4).attr("text-anchor", endAnchor).attr("fill", color).attr("font-size",
|
|
2103
|
-
hg.append("text").attr("class", "gantt-hover-date").attr("x", endLabelX).attr("y", innerHeight + tickLen + 12).attr("text-anchor", endAnchor).attr("fill", color).attr("font-size",
|
|
2109
|
+
hg.append("text").attr("class", "gantt-hover-date").attr("x", endLabelX).attr("y", -tickLen - 4).attr("text-anchor", endAnchor).attr("fill", color).attr("font-size", 10).attr("font-weight", "bold").text(endLabel);
|
|
2110
|
+
hg.append("text").attr("class", "gantt-hover-date").attr("x", endLabelX).attr("y", innerHeight + tickLen + 12).attr("text-anchor", endAnchor).attr("fill", color).attr("font-size", 10).attr("font-weight", "bold").text(endLabel);
|
|
2104
2111
|
}
|
|
2105
2112
|
}
|
|
2106
2113
|
function hideGanttDateIndicators(g) {
|
|
@@ -2118,7 +2125,7 @@ function resolveTaskColor(rt, activeTagGroup, resolved, seriesColors, palette) {
|
|
|
2118
2125
|
resolved.tagGroups,
|
|
2119
2126
|
activeTagGroup
|
|
2120
2127
|
);
|
|
2121
|
-
if (tagColor && tagColor !==
|
|
2128
|
+
if (tagColor && tagColor !== UNTAGGED_TAG_COLOR) return tagColor;
|
|
2122
2129
|
if (rt.groupPath.length > 0) {
|
|
2123
2130
|
const topGroup = rt.groupPath[0];
|
|
2124
2131
|
const groupIdx = resolved.groups.findIndex((g) => g.name === topGroup);
|
|
@@ -2140,11 +2147,11 @@ function renderTimeScaleHorizontal(g, scale, _innerWidth, innerHeight, textColor
|
|
|
2140
2147
|
const opacity = 0.4;
|
|
2141
2148
|
const guideOpacity = 0.15;
|
|
2142
2149
|
for (const tick of ticks) {
|
|
2143
|
-
g.append("line").attr("class", "gantt-scale-tick").attr("x1", tick.pos).attr("y1", 0).attr("x2", tick.pos).attr("y2", innerHeight).attr("stroke", textColor).attr("stroke-width", 1).attr("stroke-dasharray",
|
|
2150
|
+
g.append("line").attr("class", "gantt-scale-tick").attr("x1", tick.pos).attr("y1", 0).attr("x2", tick.pos).attr("y2", innerHeight).attr("stroke", textColor).attr("stroke-width", 1).attr("stroke-dasharray", GRID_DASH).attr("opacity", guideOpacity);
|
|
2144
2151
|
g.append("line").attr("class", "gantt-scale-tick").attr("x1", tick.pos).attr("y1", 0).attr("x2", tick.pos).attr("y2", -tickLen).attr("stroke", textColor).attr("stroke-width", 1).attr("opacity", opacity);
|
|
2145
|
-
g.append("text").attr("class", "gantt-scale-tick").attr("x", tick.pos).attr("y", -tickLen - 4).attr("text-anchor", "middle").attr("dominant-baseline", "auto").attr("font-size",
|
|
2152
|
+
g.append("text").attr("class", "gantt-scale-tick").attr("x", tick.pos).attr("y", -tickLen - 4).attr("text-anchor", "middle").attr("dominant-baseline", "auto").attr("font-size", 10).attr("fill", textColor).attr("opacity", opacity).text(tick.label);
|
|
2146
2153
|
g.append("line").attr("class", "gantt-scale-tick").attr("x1", tick.pos).attr("y1", innerHeight).attr("x2", tick.pos).attr("y2", innerHeight + tickLen).attr("stroke", textColor).attr("stroke-width", 1).attr("opacity", opacity);
|
|
2147
|
-
g.append("text").attr("class", "gantt-scale-tick").attr("x", tick.pos).attr("y", innerHeight + tickLen + 12).attr("text-anchor", "middle").attr("font-size",
|
|
2154
|
+
g.append("text").attr("class", "gantt-scale-tick").attr("x", tick.pos).attr("y", innerHeight + tickLen + 12).attr("text-anchor", "middle").attr("font-size", 10).attr("fill", textColor).attr("opacity", opacity).text(tick.label);
|
|
2148
2155
|
}
|
|
2149
2156
|
}
|
|
2150
2157
|
|
|
@@ -2152,4 +2159,4 @@ export {
|
|
|
2152
2159
|
renderGantt,
|
|
2153
2160
|
buildTagLaneRowList
|
|
2154
2161
|
};
|
|
2155
|
-
//# sourceMappingURL=chunk-
|
|
2162
|
+
//# sourceMappingURL=chunk-ZMCFUGKO.js.map
|
package/dist/clock.js
CHANGED
|
@@ -220,6 +220,12 @@ function mix(a, b, pct) {
|
|
|
220
220
|
return out;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
+
// src/utils/now.ts
|
|
224
|
+
var pinnedMs = null;
|
|
225
|
+
function now() {
|
|
226
|
+
return pinnedMs ?? Date.now();
|
|
227
|
+
}
|
|
228
|
+
|
|
223
229
|
// src/clock/ticker.ts
|
|
224
230
|
function readWork(node) {
|
|
225
231
|
const start = node.getAttribute("data-dgmo-clock-work-start");
|
|
@@ -260,16 +266,16 @@ function setDigits(group, main) {
|
|
|
260
266
|
if (s) s.setAttribute("x", stackX);
|
|
261
267
|
}
|
|
262
268
|
}
|
|
263
|
-
function updateRow(group,
|
|
269
|
+
function updateRow(group, now2) {
|
|
264
270
|
const zone = group.getAttribute("data-dgmo-clock-zone");
|
|
265
271
|
if (!zone) return;
|
|
266
272
|
const fixedAttr = group.getAttribute("data-dgmo-clock-fixed-offset");
|
|
267
|
-
const parts = fixedAttr !== null ? fixedParts(Number(fixedAttr),
|
|
273
|
+
const parts = fixedAttr !== null ? fixedParts(Number(fixedAttr), now2) : zoneParts(zone, now2);
|
|
268
274
|
const latAttr = group.getAttribute("data-dgmo-clock-lat");
|
|
269
275
|
const lonAttr = group.getAttribute("data-dgmo-clock-lon");
|
|
270
276
|
const sunOn = group.getAttribute("data-dgmo-clock-sun") === "1";
|
|
271
277
|
const hasCoords = latAttr !== null && lonAttr !== null;
|
|
272
|
-
const sun = sunOn && hasCoords ? sunLine(
|
|
278
|
+
const sun = sunOn && hasCoords ? sunLine(now2, Number(latAttr), Number(lonAttr)) : null;
|
|
273
279
|
const up = sun ? sun.up : parts.h >= 6 && parts.h < 18;
|
|
274
280
|
const c = (name) => group.getAttribute(`data-dgmo-clock-c-${name}`) ?? "";
|
|
275
281
|
const stColor = up ? c("day") : c("night");
|
|
@@ -338,8 +344,8 @@ function updateRow(group, now) {
|
|
|
338
344
|
}
|
|
339
345
|
function tickClocks(root = document) {
|
|
340
346
|
if (typeof document === "undefined") return;
|
|
341
|
-
const
|
|
342
|
-
root.querySelectorAll("[data-dgmo-clock]").forEach((group) => updateRow(group,
|
|
347
|
+
const now2 = now();
|
|
348
|
+
root.querySelectorAll("[data-dgmo-clock]").forEach((group) => updateRow(group, now2));
|
|
343
349
|
}
|
|
344
350
|
var intervalStarted = false;
|
|
345
351
|
function startClocks(root = document) {
|
package/dist/countdown.js
CHANGED
|
@@ -138,11 +138,11 @@ function nthWeekdayOfMonth(year, month, weekday, nth, hour, minute, tz) {
|
|
|
138
138
|
if (day > new Date(year, month + 1, 0).getDate()) return null;
|
|
139
139
|
return wallToMs(year, month, day, hour, minute, tz);
|
|
140
140
|
}
|
|
141
|
-
function resolveNext(rule,
|
|
141
|
+
function resolveNext(rule, now2) {
|
|
142
142
|
const tz = rule.tz ?? null;
|
|
143
|
-
const nowF = zoneFields(
|
|
143
|
+
const nowF = zoneFields(now2, tz);
|
|
144
144
|
const { hour, minute } = rule;
|
|
145
|
-
const passes = rule.allDay ? (t) => dayStart(t, tz) >= dayStart(
|
|
145
|
+
const passes = rule.allDay ? (t) => dayStart(t, tz) >= dayStart(now2, tz) : (t) => t > now2;
|
|
146
146
|
const dayExists = (y, m, d) => new Date(y, m, d).getMonth() === m;
|
|
147
147
|
switch (rule.kind) {
|
|
148
148
|
case "month-day": {
|
|
@@ -169,7 +169,7 @@ function resolveNext(rule, now) {
|
|
|
169
169
|
y++;
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
-
return
|
|
172
|
+
return now2 + WEEK_MS;
|
|
173
173
|
}
|
|
174
174
|
case "weekly": {
|
|
175
175
|
const weekday = rule.weekday;
|
|
@@ -186,11 +186,11 @@ function resolveNext(rule, now) {
|
|
|
186
186
|
);
|
|
187
187
|
if (passes(t)) return t;
|
|
188
188
|
}
|
|
189
|
-
return
|
|
189
|
+
return now2 + WEEK_MS;
|
|
190
190
|
}
|
|
191
191
|
case "interval": {
|
|
192
192
|
const n = rule.intervalN ?? 1;
|
|
193
|
-
const anchor = rule.anchorMs ??
|
|
193
|
+
const anchor = rule.anchorMs ?? now2;
|
|
194
194
|
if (rule.intervalUnit === "month") {
|
|
195
195
|
const a = zoneFields(anchor, tz);
|
|
196
196
|
const day = a.day;
|
|
@@ -207,7 +207,7 @@ function resolveNext(rule, now) {
|
|
|
207
207
|
const step = (rule.intervalUnit === "week" ? WEEK_MS : DAY_MS) * n;
|
|
208
208
|
let t = anchor;
|
|
209
209
|
if (!passes(t)) {
|
|
210
|
-
const k = Math.max(0, Math.floor((
|
|
210
|
+
const k = Math.max(0, Math.floor((now2 - anchor) / step));
|
|
211
211
|
t = anchor + k * step;
|
|
212
212
|
while (!passes(t)) t += step;
|
|
213
213
|
}
|
|
@@ -386,6 +386,12 @@ function formatFooter(resolvedMs, hasTime, tz = null) {
|
|
|
386
386
|
return parts.join(" \xB7 ");
|
|
387
387
|
}
|
|
388
388
|
|
|
389
|
+
// src/utils/now.ts
|
|
390
|
+
var pinnedMs = null;
|
|
391
|
+
function now() {
|
|
392
|
+
return pinnedMs ?? Date.now();
|
|
393
|
+
}
|
|
394
|
+
|
|
389
395
|
// src/countdown/ticker.ts
|
|
390
396
|
function pad22(n) {
|
|
391
397
|
return n < 10 ? "0" + n : String(n);
|
|
@@ -408,7 +414,7 @@ function setClockText(el, str) {
|
|
|
408
414
|
const fill = el.getAttribute("data-dgmo-cd-sec-fill");
|
|
409
415
|
if (size) secT.setAttribute("font-size", size);
|
|
410
416
|
if (fill) secT.setAttribute("fill", fill);
|
|
411
|
-
secT.setAttribute("font-weight", "
|
|
417
|
+
secT.setAttribute("font-weight", "bold");
|
|
412
418
|
el.appendChild(leadT);
|
|
413
419
|
el.appendChild(secT);
|
|
414
420
|
}
|
|
@@ -491,7 +497,7 @@ function readFields(node) {
|
|
|
491
497
|
if (!raw) return ["d", "h", "m", "s"];
|
|
492
498
|
return raw.split(",").filter((f) => ["d", "h", "m", "s"].includes(f));
|
|
493
499
|
}
|
|
494
|
-
function updateNode(node,
|
|
500
|
+
function updateNode(node, now2) {
|
|
495
501
|
const rule = readRule(node);
|
|
496
502
|
const units = node.getAttribute("data-dgmo-countdown-units") || "days";
|
|
497
503
|
const round = node.getAttribute("data-dgmo-countdown-round") || "up";
|
|
@@ -502,18 +508,18 @@ function updateNode(node, now) {
|
|
|
502
508
|
let resolvedMs;
|
|
503
509
|
let expiredNow = false;
|
|
504
510
|
if (rule) {
|
|
505
|
-
resolvedMs = resolveNext(rule,
|
|
511
|
+
resolvedMs = resolveNext(rule, now2);
|
|
506
512
|
} else {
|
|
507
513
|
const target = node.getAttribute("data-dgmo-countdown");
|
|
508
514
|
resolvedMs = target ? targetToMs2(target, tz) : null;
|
|
509
|
-
if (resolvedMs !== null && resolvedMs -
|
|
515
|
+
if (resolvedMs !== null && resolvedMs - now2 <= 0) expiredNow = true;
|
|
510
516
|
}
|
|
511
517
|
if (resolvedMs === null) return;
|
|
512
|
-
const remaining = resolvedMs -
|
|
518
|
+
const remaining = resolvedMs - now2;
|
|
513
519
|
const custom = node.getAttribute("data-dgmo-countdown-expired");
|
|
514
520
|
const hasTime = node.getAttribute("data-dgmo-countdown-hastime") === "1";
|
|
515
521
|
const frozen = expiredNow && custom !== null;
|
|
516
|
-
const clockFinale = hasTime && !frozen && dayDelta(
|
|
522
|
+
const clockFinale = hasTime && !frozen && dayDelta(now2, resolvedMs, tz) <= 0;
|
|
517
523
|
let text;
|
|
518
524
|
if (frozen) {
|
|
519
525
|
text = custom;
|
|
@@ -526,18 +532,18 @@ function updateNode(node, now) {
|
|
|
526
532
|
text = remaining < 0 ? `${clock} ago` : clock;
|
|
527
533
|
} else if (expiredNow) {
|
|
528
534
|
if (units === "compound" || units === "human") {
|
|
529
|
-
const [a, b] = hasTime ? [resolvedMs,
|
|
535
|
+
const [a, b] = hasTime ? [resolvedMs, now2] : [dayStart(resolvedMs, tz), dayStart(now2, tz)];
|
|
530
536
|
text = `${formatCompound(a, b, 2, tz)} ago`;
|
|
531
537
|
} else {
|
|
532
538
|
const elapsed = -remaining;
|
|
533
539
|
text = elapsed <= 0 ? "Now!" : `${formatCount(elapsed, { units, round, fields })} ago`;
|
|
534
540
|
}
|
|
535
|
-
} else if (rule && sameDay(resolvedMs,
|
|
541
|
+
} else if (rule && sameDay(resolvedMs, now2, tz)) {
|
|
536
542
|
text = onDay ?? "Today!";
|
|
537
543
|
} else if (units === "human") {
|
|
538
|
-
text = hasTime ? formatHuman(
|
|
544
|
+
text = hasTime ? formatHuman(now2, resolvedMs, tz).big : formatHuman(dayStart(now2, tz), dayStart(resolvedMs, tz), tz).big;
|
|
539
545
|
} else if (units === "compound") {
|
|
540
|
-
text = formatCompound(
|
|
546
|
+
text = formatCompound(now2, resolvedMs, 2, tz);
|
|
541
547
|
} else {
|
|
542
548
|
text = formatCount(Math.max(0, remaining), { units, round, fields });
|
|
543
549
|
}
|
|
@@ -568,7 +574,7 @@ function updateNode(node, now) {
|
|
|
568
574
|
} else if (units === "human" && remaining > 0) {
|
|
569
575
|
setClockText(
|
|
570
576
|
detail,
|
|
571
|
-
hasTime ? formatCount(remaining, { units: "clock", round, fields }) : formatHuman(dayStart(
|
|
577
|
+
hasTime ? formatCount(remaining, { units: "clock", round, fields }) : formatHuman(dayStart(now2, tz), dayStart(resolvedMs, tz), tz).sub
|
|
572
578
|
);
|
|
573
579
|
}
|
|
574
580
|
}
|
|
@@ -578,8 +584,8 @@ function updateNode(node, now) {
|
|
|
578
584
|
}
|
|
579
585
|
function tickCountdowns(root = document) {
|
|
580
586
|
if (typeof document === "undefined") return;
|
|
581
|
-
const
|
|
582
|
-
root.querySelectorAll("[data-dgmo-countdown]").forEach((node) => updateNode(node,
|
|
587
|
+
const now2 = now();
|
|
588
|
+
root.querySelectorAll("[data-dgmo-countdown]").forEach((node) => updateNode(node, now2));
|
|
583
589
|
}
|
|
584
590
|
var intervalStarted = false;
|
|
585
591
|
function startCountdowns(root = document) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as TagGroup, D as DgmoError, a as PaletteColors, C as CompactViewState } from './tag-groups-
|
|
1
|
+
import { T as TagGroup, D as DgmoError, a as PaletteColors, C as CompactViewState } from './tag-groups-BoJg3lFV.js';
|
|
2
2
|
|
|
3
3
|
/** A POI / route-stop position: gazetteer name (+ optional ISO scope) or coords. */
|
|
4
4
|
type PoiPos = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as PaletteConfig, D as DgmoError } from './tag-groups-
|
|
1
|
+
import { P as PaletteConfig, D as DgmoError } from './tag-groups-BoJg3lFV.js';
|
|
2
2
|
|
|
3
3
|
/** Validate that a hex string is well-formed (#RGB or #RRGGBB). */
|
|
4
4
|
declare function isValidHex(value: string): boolean;
|
|
@@ -9,68 +9,69 @@ import {
|
|
|
9
9
|
looksLikeGantt,
|
|
10
10
|
parseDgmo,
|
|
11
11
|
parseDgmoChartType
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7SMVTA7I.js";
|
|
13
13
|
import "./chunk-SH4PPRU7.js";
|
|
14
14
|
import "./chunk-A2RUBBVT.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-6VTLVU7D.js";
|
|
16
16
|
import "./chunk-TN754B3R.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-7NNJXYXU.js";
|
|
18
18
|
import "./chunk-M526IKKH.js";
|
|
19
19
|
import "./chunk-2CW5ZTNH.js";
|
|
20
20
|
import "./chunk-BDXC7MDK.js";
|
|
21
21
|
import "./chunk-CRLVJZWX.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-N56W4R66.js";
|
|
23
23
|
import "./chunk-LKS56RDT.js";
|
|
24
24
|
import "./chunk-OKXWPKUC.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-VUJQ6RU6.js";
|
|
26
|
+
import "./chunk-2NLBIZEW.js";
|
|
27
27
|
import "./chunk-XSVWUOUZ.js";
|
|
28
28
|
import "./chunk-KWSBNLSC.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-7WTFX6OA.js";
|
|
30
30
|
import "./chunk-WFA6IULY.js";
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-3DPOIW3W.js";
|
|
32
|
+
import "./chunk-7BNRHSSF.js";
|
|
33
|
+
import "./chunk-QVMV4KCA.js";
|
|
34
|
+
import "./chunk-B6PVPAS5.js";
|
|
34
35
|
import "./chunk-EGY3TS62.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
36
|
+
import "./chunk-3ZLQM6XN.js";
|
|
37
|
+
import "./chunk-GINNZHVN.js";
|
|
37
38
|
import "./chunk-QQJUTGQH.js";
|
|
38
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-57GSSHBR.js";
|
|
39
40
|
import "./chunk-VBJCGGNF.js";
|
|
40
|
-
import "./chunk-
|
|
41
|
+
import "./chunk-KAZQX2EY.js";
|
|
41
42
|
import "./chunk-3TYUXC7D.js";
|
|
42
43
|
import "./chunk-Y2CYNRL7.js";
|
|
43
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-RC6GGF6X.js";
|
|
44
45
|
import "./chunk-UCZBRGJN.js";
|
|
45
46
|
import "./chunk-7BMX2M3F.js";
|
|
46
|
-
import "./chunk-
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./chunk-
|
|
49
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-3GLTQZKE.js";
|
|
48
|
+
import "./chunk-A7Y32YD6.js";
|
|
49
|
+
import "./chunk-NS3KIRSW.js";
|
|
50
|
+
import "./chunk-FJADQOFQ.js";
|
|
50
51
|
import "./chunk-EQW6HOP4.js";
|
|
51
52
|
import "./chunk-DAOFNU6J.js";
|
|
52
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-XCR3PDFF.js";
|
|
53
54
|
import "./chunk-C3Z4DX3V.js";
|
|
54
55
|
import "./chunk-NWNSXHA5.js";
|
|
55
56
|
import "./chunk-7TF3QOOD.js";
|
|
56
|
-
import "./chunk-
|
|
57
|
+
import "./chunk-6Z2NUJSX.js";
|
|
57
58
|
import "./chunk-NXMESY4J.js";
|
|
58
59
|
import "./chunk-LTTZX6RD.js";
|
|
59
|
-
import "./chunk-
|
|
60
|
+
import "./chunk-SFSJ6XWV.js";
|
|
60
61
|
import "./chunk-76NHL5UG.js";
|
|
61
62
|
import "./chunk-E6PNTYRK.js";
|
|
62
63
|
import "./chunk-IHOFUR74.js";
|
|
63
|
-
import "./chunk-
|
|
64
|
-
import "./chunk-
|
|
64
|
+
import "./chunk-QAPFXLAC.js";
|
|
65
|
+
import "./chunk-NN5IDH2I.js";
|
|
65
66
|
import "./chunk-IYULMRBE.js";
|
|
66
67
|
import "./chunk-NOTA6TEI.js";
|
|
67
68
|
import "./chunk-MSVQ2YCY.js";
|
|
68
|
-
import "./chunk-
|
|
69
|
-
import "./chunk-
|
|
69
|
+
import "./chunk-3OWIYK52.js";
|
|
70
|
+
import "./chunk-R4YGH7DJ.js";
|
|
70
71
|
import "./chunk-M5OOAP65.js";
|
|
71
72
|
import "./chunk-23RWHHI5.js";
|
|
72
|
-
import "./chunk-
|
|
73
|
-
import "./chunk-
|
|
73
|
+
import "./chunk-IDJGV6VM.js";
|
|
74
|
+
import "./chunk-YVLTNNME.js";
|
|
74
75
|
import "./chunk-XOGQY4EC.js";
|
|
75
76
|
import "./chunk-5SI6T5A5.js";
|
|
76
77
|
import "./chunk-5WRI5ZAA.js";
|
|
@@ -86,4 +87,4 @@ export {
|
|
|
86
87
|
parseDgmo,
|
|
87
88
|
parseDgmoChartType
|
|
88
89
|
};
|
|
89
|
-
//# sourceMappingURL=dgmo-router-
|
|
90
|
+
//# sourceMappingURL=dgmo-router-XZNCLYTV.js.map
|