-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
78 lines (74 loc) · 13.5 KB
/
index.html
File metadata and controls
78 lines (74 loc) · 13.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>plantt</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/codemirror.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/addon/lint/lint.min.css">
<link rel="stylesheet" href="https://edwardtufte.github.io/et-book/et-book.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.2/marked.min.js"></script>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<div id="chart-container"></div>
<div id="tooltip"></div>
<!-- Appearance menu (themes + view toggles). Local-only. The button lives in the editor bar. -->
<div id="theme-popover" hidden>
<div class="tp-title">Appearance</div>
<div class="tp-section">
<div class="tp-sec-label">View</div>
<button id="deps-btn" class="bar-btn" title="Cycle dependency display (d): all → red only → off"><svg viewBox="0 0 1200 1200" class="ic" fill="currentColor" aria-hidden="true"><path d="m418.26 208.45c-9.9375 0-18-8.0625-18-18s8.0625-18 18-18h3.3281c9.9375 0 18 8.0625 18 18s-8.0625 18-18 18zm484.22 783.1c9.9375 0 18 8.0625 18 18s-8.0625 18-18 18h-307.26c-9.9375 0-18-8.0625-18-18v-144c0-9.9375 8.0625-18 18-18h410.76v-122.21h-117.42v59.344c0 9.9375-8.0625 18-18 18h-377.11c-9.9375 0-18-8.0625-18-18s8.0625-18 18-18h359.11v-107.72h-507.61v107.72h75c9.9375 0 18 8.0625 18 18s-8.0625 18-18 18h-93c-9.9375 0-18-8.0625-18-18v-53.859h-132.89c-9.9375 0-18-8.0625-18-18v-360.37h-98.016c-9.9375 0-18-8.0625-18-18v-144.05c0-9.9375 8.0625-18 18-18h284.76c9.9375 0 18 8.0625 18 18s-8.0625 18-18 18h-266.76v108.05h508.82v-108.05h-91.734c-9.9375 0-18-8.0625-18-18s8.0625-18 18-18h109.73c9.9375 0 18 8.0625 18 18v144.05c0 9.9375-8.0625 18-18 18h-410.76v123.14h114.89v-59.812c0-9.9375 8.0625-18 18-18h543.61c9.9375 0 18 8.0625 18 18v143.72c0 9.9375-8.0625 18-18 18h-543.61c-9.9375 0-18-8.0625-18-18v-47.906h-114.89v183.24h114.89v-53.859c0-9.9375 8.0625-18 18-18h543.61c9.9375 0 18 8.0625 18 18v48.328h135.42c9.9375 0 18 8.0625 18 18v140.21h98.062c9.9375 0 18 8.0625 18 18v144c0 9.9375-8.0625 18-18 18h-164.06c-9.9375 0-18-8.0625-18-18s8.0625-18 18-18h146.06v-108h-508.82v108h289.26zm-49.969-557.76h-507.61v107.72h507.61z"/></svg><span id="deps-label">Deps: all</span></button>
<label class="tp-check" title="Show the ‘today’ line on the chart (Ctrl+Shift+T)"><input type="checkbox" id="toggle-today" class="bar-check" checked>Today line</label>
<label class="tp-check" title="Scale the chart to an 8.5″ page width for printing (Ctrl+Shift+C)"><input type="checkbox" id="toggle-compact" class="bar-check">Compact 8.5″</label>
<button id="sections-btn" class="bar-btn" title="Show / hide sections — workstreams & compute capacity (/)"><svg viewBox="0 0 1200 1200" class="ic" fill="currentColor" aria-hidden="true"><path d="m546.98 303.98c17.484-2.4844 35.484-3.9844 53.016-3.9844 159 0 308.48 114.52 395.48 300-13.5 27.984-28.5 55.5-45 81.984-5.4844 8.0156-8.0156 17.484-8.0156 27.516 0 11.016 3.9844 21.516 10.5 30s15.984 15 26.484 17.484c10.5 3 21.516 2.0156 32.016-2.0156 9.9844-3.9844 18.516-11.484 24-21 23.484-36.516 43.5-75 60.516-114.98 2.4844-6 3.9844-12.984 3.9844-20.016 0-6.9844-1.5-13.5-3.9844-19.5-101.02-234.52-291-380.02-495.98-380.02-23.484 0-47.016 2.0156-69.984 6-6.5156 0.98438-12.984 3.5156-18.516 6.9844-5.4844 3.5156-10.5 8.0156-14.484 13.5s-6.5156 11.484-8.0156 18-1.5 12.984-0.51562 20.016c0.98438 6.5156 3.5156 12.984 6.9844 18.516 3.5156 5.4844 8.0156 10.5 13.5 14.484s11.484 6.5156 18 8.0156 12.984 1.5 20.016 0.51562v-2.0156zm-361.5-189.47c-4.5-4.5-9.9844-8.4844-16.5-11.016-6-2.4844-12.516-3.9844-18.984-3.9844-6.5156 0-12.984 1.5-18.984 3.9844s-11.484 6-16.5 11.016c-9.5156 9.5156-14.484 21.984-14.484 35.484s5.4844 26.016 14.484 35.484l155.02 154.5c-70.5 68.016-126.98 149.48-165.52 240-3 6.5156-3.9844 12.984-3.9844 20.016 0 6.9844 1.5 13.5 3.9844 20.016 101.02 234.52 291 380.02 495.98 380.02 90-0.51562 177.52-27.516 252.52-77.016l162 162.52c4.5 4.5 9.9844 8.4844 16.5 11.016 6 2.4844 12.516 3.9844 18.984 3.9844 6.5156 0 12.984-1.5 18.984-3.9844s11.484-6.5156 16.5-11.016c4.5-4.5 8.4844-9.9844 11.016-16.5 2.4844-6 3.9844-12.516 3.9844-18.984 0-6.5156-1.5-12.984-3.9844-18.984s-6.5156-11.484-11.016-16.5zm318 459.47 122.48 122.48c-8.4844 2.4844-17.016 3.5156-26.016 3.5156-26.484 0-51.984-10.5-70.5-29.484-18.984-18.984-29.484-44.016-29.484-70.5 0-9 0.98438-17.484 3.5156-26.016zm96.516 326.02c-159 0-308.48-114.52-395.02-300 32.484-71.484 78-135.52 135-189.52l88.5 89.484c-21 38.016-28.5 81.516-22.5 124.5s26.016 82.5 56.484 113.02c30.516 30.516 70.5 50.484 113.02 56.484 42.984 6 86.484-2.0156 124.5-22.5l79.5 78.516c-54.516 32.016-116.48 49.5-179.48 50.016z"/></svg><span>Show/hide sections</span></button>
</div>
<div class="tp-section">
<div class="tp-sec-label">Theme</div>
<label class="tp-row"><span>Light mode</span><select id="theme-light"></select></label>
<label class="tp-row"><span>Dark mode</span><select id="theme-dark"></select></label>
<div id="theme-active" class="tp-active"></div>
<div class="tp-actions">
<button id="theme-import-btn">Import…</button>
<button id="theme-export-btn">Export active</button>
<button id="theme-export-all-btn">Export custom</button>
</div>
<div id="theme-import-area" hidden>
<textarea id="theme-import-text" placeholder="Paste theme JSON…" spellcheck="false"></textarea>
<div class="tp-actions">
<label class="tp-file">Choose file<input type="file" id="theme-import-file" accept="application/json,.json" hidden></label>
<button id="theme-import-apply">Add theme</button>
</div>
<div id="theme-import-msg" class="tp-msg"></div>
</div>
</div>
<div class="tp-note">Appearance settings live only in your browser (localStorage). Nothing is uploaded; theme import/export is local files only.</div>
</div>
<div id="editor-panel">
<div id="panel-resizer"></div>
<div id="panel-header">
<span id="hist-tools">
<button id="undo-btn" title="Undo (⌘Z)" disabled>↩</button>
<button id="redo-btn" title="Redo (⌘⇧Z)" disabled>↪</button>
<button id="history-btn" class="labeled" title="History tree (Ctrl+Y)"><svg viewBox="0 0 1200 1200" class="ic ic-rot90" fill="currentColor" aria-hidden="true"><path d="m1075.2 535.2c-28.801 0-54 19.199-61.199 45.602h-272.4c-8.3984-26.398-32.398-45.602-61.199-45.602-28.801 0-54 19.199-61.199 45.602h-291.6l109.2-156h181.2c8.3984 26.398 32.398 45.602 61.199 45.602 36 0 64.801-28.801 64.801-64.801s-28.801-64.801-64.801-64.801c-28.801 0-54 19.199-61.199 45.602l-200.4-0.003906-26.398 37.199-109.2 156h-96c-8.3984-26.398-32.398-45.602-61.199-45.602-36.004 1.2031-64.805 30.004-64.805 66.004s28.801 64.801 64.801 64.801c28.801 0 54-19.199 61.199-45.602h291.6l135.6 194.4 202.8 0.003906c8.3984 26.398 32.398 45.602 61.199 45.602 36 0 64.801-28.801 64.801-64.801s-28.801-64.801-64.801-64.801c-28.801 0-54 19.199-61.199 45.602l-183.6-0.003906-109.2-156h94.801c8.3984 26.398 32.398 45.602 61.199 45.602s54-19.199 61.199-45.602h272.4c8.3984 26.398 32.398 45.602 61.199 45.602 36 0 64.801-28.801 64.801-64.801 0.003906-36-27.598-64.801-63.598-64.801zm-394.8-156c14.398 0 26.398 12 26.398 26.398 0 14.398-12 26.398-26.398 26.398-14.398 0-26.398-12-26.398-26.398 0-14.398 10.801-26.398 26.398-26.398zm-555.6 247.2c-14.398 0-26.398-12-26.398-26.398s12-26.398 26.398-26.398c14.398 0 26.398 12 26.398 26.398s-12 26.398-26.398 26.398zm753.6 141.6c14.398 0 26.398 12 26.398 26.398 0 14.398-12 26.398-26.398 26.398-14.398 0-26.398-12-26.398-26.398-1.1992-14.398 10.801-26.398 26.398-26.398z"/></svg><span>History</span></button>
<button id="plans-btn" class="labeled" title="Plans (Ctrl+O)"><svg viewBox="0 0 1200 1200" class="ic" fill="currentColor" aria-hidden="true"><path d="m398.4 424.2h537.6c6.4297 0 12.375-3.4297 15.59-9 3.2148-5.5703 3.2148-12.43 0-18-3.2148-5.5703-9.1602-9-15.59-9h-537.6c-6.4297 0-12.371 3.4297-15.586 9-3.2148 5.5703-3.2148 12.43 0 18 3.2148 5.5703 9.1562 9 15.586 9z"/><path d="m936 577.44h-537.6c-6.4297 0-12.371 3.4297-15.586 9-3.2148 5.5664-3.2148 12.43 0 18 3.2148 5.5664 9.1562 9 15.586 9h537.6c6.4297 0 12.375-3.4336 15.59-9 3.2148-5.5703 3.2148-12.434 0-18-3.2148-5.5703-9.1602-9-15.59-9z"/><path d="m936 775.8h-537.6c-6.4297 0-12.371 3.4297-15.586 9-3.2148 5.5703-3.2148 12.43 0 18 3.2148 5.5703 9.1562 9 15.586 9h537.6c6.4297 0 12.375-3.4297 15.59-9 3.2148-5.5703 3.2148-12.43 0-18-3.2148-5.5703-9.1602-9-15.59-9z"/><path d="m302.04 350.16c-14.863 0-29.117 5.9023-39.625 16.414-10.512 10.508-16.414 24.762-16.414 39.625s5.9023 29.117 16.414 39.629c10.508 10.508 24.762 16.41 39.625 16.41 14.863 0 29.117-5.9023 39.629-16.41 10.508-10.512 16.41-24.766 16.41-39.629-0.03125-14.852-5.9453-29.086-16.445-39.59-10.504-10.504-24.738-16.418-39.594-16.449zm0 76.078c-5.3125 0-10.41-2.1094-14.168-5.8672-3.7578-3.7578-5.8711-8.8555-5.8711-14.172 0-5.3125 2.1133-10.41 5.8711-14.168 3.7578-3.7617 8.8555-5.8711 14.168-5.8711 5.3164 0 10.414 2.1094 14.172 5.8711 3.7578 3.7578 5.8672 8.8555 5.8672 14.168 0 5.3164-2.1094 10.414-5.8672 14.172-3.7578 3.7578-8.8555 5.8672-14.172 5.8672z"/><path d="m302.04 543.96c-14.863 0-29.117 5.9023-39.625 16.414-10.512 10.508-16.414 24.762-16.414 39.625s5.9023 29.117 16.414 39.625c10.508 10.512 24.762 16.414 39.625 16.414 14.863 0 29.117-5.9023 39.629-16.414 10.508-10.508 16.41-24.762 16.41-39.625-0.03125-14.852-5.9453-29.09-16.445-39.59-10.504-10.504-24.738-16.418-39.594-16.449zm0 76.078c-5.3125 0-10.41-2.1094-14.168-5.8672-3.7578-3.7578-5.8711-8.8555-5.8711-14.172s2.1133-10.414 5.8711-14.172c3.7578-3.7578 8.8555-5.8672 14.168-5.8672 5.3164 0 10.414 2.1094 14.172 5.8672 3.7578 3.7578 5.8672 8.8555 5.8672 14.172s-2.1094 10.414-5.8672 14.172c-3.7578 3.7578-8.8555 5.8672-14.172 5.8672z"/><path d="m302.04 737.76c-14.863 0-29.117 5.9023-39.625 16.41-10.512 10.512-16.414 24.766-16.414 39.629s5.9023 29.117 16.414 39.625c10.508 10.512 24.762 16.414 39.625 16.414 14.863 0 29.117-5.9023 39.629-16.414 10.508-10.508 16.41-24.762 16.41-39.625s-5.9023-29.117-16.41-39.629c-10.512-10.508-24.766-16.41-39.629-16.41zm0 76.078c-5.3125 0-10.41-2.1094-14.168-5.8711-3.7578-3.7578-5.8711-8.8555-5.8711-14.168 0-5.3164 2.1133-10.414 5.8711-14.172 3.7578-3.7578 8.8555-5.8672 14.168-5.8672 5.3164 0 10.414 2.1094 14.172 5.8672 3.7578 3.7578 5.8672 8.8555 5.8672 14.172 0 5.3125-2.1094 10.41-5.8672 14.168-3.7578 3.7617-8.8555 5.8711-14.172 5.8711z"/></svg><span>Plans</span></button>
</span>
<span class="bar-right">
<button id="theme-btn" class="bar-btn" title="Appearance (Ctrl+T)" aria-label="Appearance"><svg viewBox="0 0 1200 1200" class="ic" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="m598.92 924c12.375 0 22.453 10.078 22.453 22.453s-10.078 22.453-22.453 22.453-22.453-10.078-22.453-22.453 10.078-22.453 22.453-22.453zm-50.953 22.453c0 28.078 22.875 50.953 50.953 50.953 28.125 0 50.953-22.875 50.953-50.953s-22.875-50.953-50.953-50.953c-28.125 0-50.953 22.875-50.953 50.953zm317.72-399.89 8.5781-67.875h-550.64l8.5781 67.875c4.7344 37.5 34.359 65.906 72.047 69.094 44.297 3.7031 98.953 11.391 129 37.828 60.797 53.531 36.047 136.64 14.203 209.95-9.9844 33.609-19.453 65.344-20.391 91.781-1.2656 35.203 11.438 62.531 35.766 77.016 21.984 13.031 50.391 13.031 72.328 0 24.328-14.438 37.031-41.766 35.766-77.016-0.9375-26.438-10.406-58.172-20.391-91.734-21.844-73.312-46.594-156.42 14.203-210 30.047-26.438 84.703-34.078 129-37.828 37.594-3.1875 67.219-31.594 71.953-69.094zm12.141-96.422h-557.86l-5.7656-45.703h569.39zm-333.28-246.56c102.47 64.078 210.89 64.172 322.31 0.28125 0.09375-0.046875 0.1875-0.14062 0.32812-0.1875 14.812-9 29.766-16.688 44.672-22.922l-24.656 195.19h-576.61l-24.141-191.26c86.344-41.203 170.9-34.969 258.1 18.891zm393.47-55.453c-3.75-3.0938-8.8594-4.0781-13.547-2.5312-24 7.9219-48.234 19.219-71.953 33.656-102.94 59.016-198.74 59.062-292.92 0.14062-98.109-60.609-197.39-65.859-295.08-15.609-5.3438 2.7188-8.3906 8.5312-7.6406 14.484l46.969 371.9c6.4219 51 46.734 89.625 97.922 93.938 23.438 1.9688 85.734 7.1719 112.55 30.797 47.109 41.484 26.062 112.12 5.7188 180.42-10.547 35.391-20.484 68.812-21.562 98.859-1.6406 45.469 16.5 82.828 49.734 102.52 30.844 18.281 70.594 18.281 101.44 0 33.234-19.734 51.328-57.094 49.734-102.56-1.0781-30.047-11.016-63.469-21.562-98.859-20.344-68.297-41.391-138.94 5.7188-180.42 26.812-23.625 89.062-28.828 112.55-30.797 51.234-4.3125 91.5-42.938 97.922-93.938l49.125-389.21c0.5625-4.875-1.3125-9.7031-5.1094-12.797z"/></svg></button>
<button id="help-btn" title="Keyboard & mouse help (?)">?</button>
<button id="close-btn" title="Close (Ctrl+\)">×</button>
</span>
</div>
<div id="status-msg" class="hidden"></div>
<div id="editor-wrap"><textarea id="editor"></textarea></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/mode/javascript/javascript.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/addon/edit/matchbrackets.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/addon/edit/closebrackets.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/addon/lint/lint.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/addon/lint/json-lint.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsonlint/1.6.0/jsonlint.min.js"></script>
<script type="module" src="/src/main.js"></script>
</body>
</html>