@skillcdn/console 0.1.17 → 0.1.18
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 +3 -3
- package/dist/api.d.ts +2 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +1 -0
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts +10 -0
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +145 -14
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/format.d.ts +1 -1
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +8 -3
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +7 -5
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/install.d.ts +21 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +87 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/main.js +22 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/notices.d.ts +13 -0
- package/dist/cli/notices.d.ts.map +1 -0
- package/dist/cli/notices.js +31 -0
- package/dist/cli/notices.js.map +1 -0
- package/dist/client.d.ts +15 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -3
- package/dist/client.js.map +1 -1
- package/dist/compat.d.ts +66 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +115 -0
- package/dist/compat.js.map +1 -0
- package/dist/components/calendar.d.ts +3 -1
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +21 -2
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/goals.d.ts +3 -1
- package/dist/components/goals.d.ts.map +1 -1
- package/dist/components/goals.js +23 -11
- package/dist/components/goals.js.map +1 -1
- package/dist/components/roadmap.d.ts +37 -0
- package/dist/components/roadmap.d.ts.map +1 -0
- package/dist/components/roadmap.js +76 -0
- package/dist/components/roadmap.js.map +1 -0
- package/dist/components/tokens.d.ts +2 -0
- package/dist/components/tokens.d.ts.map +1 -1
- package/dist/components/tokens.js +13 -3
- package/dist/components/tokens.js.map +1 -1
- package/dist/console.css +204 -0
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +8 -7
- package/dist/console.js.map +1 -1
- package/dist/data.js +1 -1
- package/dist/data.js.map +1 -1
- package/dist/i18n/en.d.ts +24 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +24 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +24 -0
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/router.d.ts +6 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +10 -1
- package/dist/router.js.map +1 -1
- package/dist/schemas.d.ts +42 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +18 -0
- package/dist/schemas.js.map +1 -1
- package/docs/specs/cli.md +9 -6
- package/docs/specs/rest.md +9 -5
- package/package.json +3 -2
- package/skills/working-the-board/SKILL.md +4 -3
- package/src/api.ts +23 -0
- package/src/cli/cli.ts +178 -15
- package/src/cli/format.ts +8 -3
- package/src/cli/help.ts +7 -5
- package/src/cli/install.ts +111 -0
- package/src/cli/main.ts +23 -3
- package/src/cli/notices.ts +48 -0
- package/src/client.ts +31 -6
- package/src/compat.ts +173 -0
- package/src/components/calendar.tsx +41 -1
- package/src/components/goals.tsx +86 -7
- package/src/components/roadmap.tsx +242 -0
- package/src/components/tokens.tsx +38 -1
- package/src/console.tsx +19 -0
- package/src/data.ts +1 -1
- package/src/i18n/en.ts +24 -0
- package/src/i18n/ko.ts +24 -0
- package/src/index.ts +8 -0
- package/src/router.ts +13 -2
- package/src/schemas.ts +20 -0
- package/src/styles/console.css +204 -0
package/dist/compat.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Whether the command and the console go together (ADR-0025). The command names its version on
|
|
2
|
+
// every request, in the product token of its user-agent; the console answers every request of
|
|
3
|
+
// the API with its own version and the range of command versions it takes, and refuses a
|
|
4
|
+
// command outside the range with `426` and the words to update. One rule for both sides, kept
|
|
5
|
+
// here so that the command and the console read the same one, and narrowed by the console's
|
|
6
|
+
// policy below only, never widened: what the rule promises stays predictable.
|
|
7
|
+
/** The product token the command names itself with: `skillcdn-console/<version>`. */
|
|
8
|
+
export const CLIENT_PRODUCT = "skillcdn-console";
|
|
9
|
+
/** On every answer of the API: the console's version. */
|
|
10
|
+
export const VERSION_HEADER = "console-version";
|
|
11
|
+
/** On every answer of the API: the range of command versions the console takes, as npm spells one. */
|
|
12
|
+
export const CLIENT_RANGE_HEADER = "console-client-range";
|
|
13
|
+
/** `x.y.z`, each a number of at most nine digits without a leading zero; no tag, no build. */
|
|
14
|
+
const VERSION = /^(0|[1-9]\d{0,8})\.(0|[1-9]\d{0,8})\.(0|[1-9]\d{0,8})$/;
|
|
15
|
+
const MAX_VERSION_LENGTH = 32;
|
|
16
|
+
/** A version as the package spells one, or nothing for any other text. */
|
|
17
|
+
export function parseVersion(text) {
|
|
18
|
+
if (typeof text !== "string" || text.length > MAX_VERSION_LENGTH) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const match = VERSION.exec(text);
|
|
22
|
+
return match === null
|
|
23
|
+
? undefined
|
|
24
|
+
: { major: Number(match[1]), minor: Number(match[2]), patch: Number(match[3]) };
|
|
25
|
+
}
|
|
26
|
+
export function formatVersion(version) {
|
|
27
|
+
return `${version.major}.${version.minor}.${version.patch}`;
|
|
28
|
+
}
|
|
29
|
+
/** Negative when `a` is the older, zero when they are the same, positive when `a` is the newer. */
|
|
30
|
+
export function compareVersions(a, b) {
|
|
31
|
+
return a.major - b.major || a.minor - b.minor || a.patch - b.patch;
|
|
32
|
+
}
|
|
33
|
+
/** The range as npm spells one: `>=0.1.18 <0.2.0`. */
|
|
34
|
+
export function formatRange(range) {
|
|
35
|
+
return `>=${formatVersion(range.atLeast)} <${formatVersion(range.below)}`;
|
|
36
|
+
}
|
|
37
|
+
const RANGE = /^>=(\S+) <(\S+)$/;
|
|
38
|
+
const MAX_RANGE_LENGTH = 2 * MAX_VERSION_LENGTH + 4;
|
|
39
|
+
/** A range as `formatRange` spells one, or nothing for any other text. */
|
|
40
|
+
export function parseRange(text) {
|
|
41
|
+
if (typeof text !== "string" || text.length > MAX_RANGE_LENGTH) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const match = RANGE.exec(text);
|
|
45
|
+
const atLeast = parseVersion(match?.[1]);
|
|
46
|
+
const below = parseVersion(match?.[2]);
|
|
47
|
+
return atLeast !== undefined && below !== undefined && compareVersions(atLeast, below) < 0
|
|
48
|
+
? { atLeast, below }
|
|
49
|
+
: undefined;
|
|
50
|
+
}
|
|
51
|
+
export function inRange(version, range) {
|
|
52
|
+
return compareVersions(version, range.atLeast) >= 0 && compareVersions(version, range.below) < 0;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The common rule. Before 1.0, a command from the console's own version on and within the
|
|
56
|
+
* console's minor (`^0.1.18`): any release may change the contract until then (ADR-0007), so the
|
|
57
|
+
* console's own version is the floor, and the minor is the line. From 1.0, the console's major
|
|
58
|
+
* and a minor within one of the console's, either way, whatever the patch: a minor adds and a
|
|
59
|
+
* major breaks, as the version promises from then on.
|
|
60
|
+
*/
|
|
61
|
+
export function commonRange(server) {
|
|
62
|
+
if (server.major === 0) {
|
|
63
|
+
return { atLeast: server, below: { major: 0, minor: server.minor + 1, patch: 0 } };
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
atLeast: { major: server.major, minor: Math.max(0, server.minor - 1), patch: 0 },
|
|
67
|
+
below: { major: server.major, minor: server.minor + 2, patch: 0 },
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** The console's policy today: the common rule as it is. */
|
|
71
|
+
export const CLIENT_POLICY = {};
|
|
72
|
+
/** The range of command versions a console of `server` takes: the common rule, narrowed by the policy's floor where that floor is within it. */
|
|
73
|
+
export function clientRange(server, policy = CLIENT_POLICY) {
|
|
74
|
+
const common = commonRange(server);
|
|
75
|
+
const floor = parseVersion(policy.atLeast);
|
|
76
|
+
return floor !== undefined &&
|
|
77
|
+
compareVersions(floor, common.atLeast) > 0 &&
|
|
78
|
+
compareVersions(floor, common.below) < 0
|
|
79
|
+
? { atLeast: floor, below: common.below }
|
|
80
|
+
: common;
|
|
81
|
+
}
|
|
82
|
+
export function judgeClient(client, server, policy = CLIENT_POLICY) {
|
|
83
|
+
const range = clientRange(server, policy);
|
|
84
|
+
const order = compareVersions(client, server);
|
|
85
|
+
const refused = (policy.refused ?? []).some((text) => {
|
|
86
|
+
const version = parseVersion(text);
|
|
87
|
+
return version !== undefined && compareVersions(version, client) === 0;
|
|
88
|
+
});
|
|
89
|
+
if (refused) {
|
|
90
|
+
return { verdict: order > 0 ? "too_new" : "outdated", range };
|
|
91
|
+
}
|
|
92
|
+
if (compareVersions(client, range.atLeast) < 0) {
|
|
93
|
+
return { verdict: "outdated", range };
|
|
94
|
+
}
|
|
95
|
+
if (compareVersions(client, range.below) >= 0) {
|
|
96
|
+
return { verdict: "too_new", range };
|
|
97
|
+
}
|
|
98
|
+
return { verdict: order === 0 ? "current" : order < 0 ? "behind" : "ahead", range };
|
|
99
|
+
}
|
|
100
|
+
/** What the command sends as its user-agent: its product token, and, in a comment, where it runs. */
|
|
101
|
+
export function userAgentOf(version, comment) {
|
|
102
|
+
// A comment holds printable ASCII without parentheses or backslashes; nothing else is said.
|
|
103
|
+
const safe = comment?.replaceAll(/[^\x20-\x27\x2a-\x5b\x5d-\x7e]/g, "").trim();
|
|
104
|
+
return `${CLIENT_PRODUCT}/${version}${safe === undefined || safe.length === 0 ? "" : ` (${safe})`}`;
|
|
105
|
+
}
|
|
106
|
+
const MAX_USER_AGENT_LENGTH = 512;
|
|
107
|
+
const CLIENT_TOKEN = new RegExp(`(?:^|\\s)${CLIENT_PRODUCT}/(\\d{1,9}\\.\\d{1,9}\\.\\d{1,9})(?![\\w.-])`);
|
|
108
|
+
/** The version of the command a request's user-agent names, or nothing for any other client. */
|
|
109
|
+
export function clientVersionOf(userAgent) {
|
|
110
|
+
if (typeof userAgent !== "string") {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
return parseVersion(CLIENT_TOKEN.exec(userAgent.slice(0, MAX_USER_AGENT_LENGTH))?.[1]);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compat.js","sourceRoot":"","sources":["../src/compat.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,11 @@ export interface CalendarProps {
|
|
|
9
9
|
readonly today?: string | undefined;
|
|
10
10
|
/** The workspace's categories, for the legend to say what the colours mean. */
|
|
11
11
|
readonly categories?: readonly RestCategory[] | undefined;
|
|
12
|
-
/** The project's goals, so that the task under the pointer is shown with its goal's title. */
|
|
12
|
+
/** The project's goals, so that the task under the pointer is shown with its goal's title, and, given `goalHref`, so that each goal marks its target day. */
|
|
13
13
|
readonly goals?: readonly RestGoal[] | undefined;
|
|
14
14
|
readonly taskHref: (task: RestTask) => string;
|
|
15
|
+
/** Where a goal's page is: given, the goals mark their target days on the month (ADR-0026). */
|
|
16
|
+
readonly goalHref?: ((goal: RestGoal) => string) | undefined;
|
|
15
17
|
/** Where the calendar is on another month. */
|
|
16
18
|
readonly monthHref: (month: string) => string;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAiC,MAAM,OAAO,CAAC;AACtE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,WAAW,CAAC;AACnB,OAAO,EASL,KAAK,OAAO,EAMb,MAAM,aAAa,CAAC;AAmBrB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IAC1D,
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -122,6 +122,23 @@ export function TaskTip(props) {
|
|
|
122
122
|
const day = (value) => formatDay(value, tag);
|
|
123
123
|
return (_jsxs("div", { className: cx("sc-task-tip", place.side === "above" ? "sc-task-tip-above" : "sc-task-tip-below"), style: { left: place.shift }, "aria-hidden": "true", children: [_jsxs("p", { className: "sc-task-tip-title", children: ["#", task.number, " ", task.title] }), _jsxs("dl", { className: "sc-task-tip-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: words.task.state }), _jsx("dd", { children: _jsx(StateBadge, { state: task.state }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.form.priority }), _jsx("dd", { children: words.vocabulary.priority[task.priority] })] }), task.category !== null && (_jsxs("div", { children: [_jsx("dt", { children: words.task.category }), _jsx("dd", { children: _jsx(CategoryBadge, { category: task.category }) })] })), goal !== undefined && (_jsxs("div", { children: [_jsx("dt", { children: words.task.goal }), _jsx("dd", { children: goal.title })] })), _jsxs("div", { children: [_jsx("dt", { children: words.task.owner }), _jsx("dd", { children: _jsx(PersonChip, { person: task.owner }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.assignee }), _jsx("dd", { children: task.assignee === null ? (_jsx("span", { className: "sc-muted", children: words.common.nobody })) : (_jsx(PersonChip, { person: task.assignee })) })] }), (task.startsOn !== null || task.dueOn !== null) && (_jsxs("div", { children: [_jsx("dt", { children: words.task.plan }), _jsx("dd", { children: words.task.planned(task.startsOn === null ? undefined : day(task.startsOn), task.dueOn === null ? undefined : day(task.dueOn)) })] })), task.startedAt !== null && (_jsxs("div", { children: [_jsx("dt", { children: words.task.started }), _jsx("dd", { children: _jsx(Time, { iso: task.startedAt }) })] })), task.doneAt !== null && (_jsxs("div", { children: [_jsx("dt", { children: words.task.done }), _jsx("dd", { children: _jsx(Time, { iso: task.doneAt }) })] })), _jsxs("div", { children: [_jsx("dt", { children: words.task.written }), _jsx("dd", { children: _jsx(Time, { iso: task.createdAt }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.changed }), _jsx("dd", { children: _jsx(Time, { iso: task.updatedAt }) })] })] })] }));
|
|
124
124
|
}
|
|
125
|
+
/** The goals that aim at each day, by day: those with a target day, still planned or worked towards. */
|
|
126
|
+
function goalsOnDays(goals) {
|
|
127
|
+
const on = new Map();
|
|
128
|
+
for (const goal of goals) {
|
|
129
|
+
if (goal.dueOn === null || goal.state === "dropped") {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const list = on.get(goal.dueOn);
|
|
133
|
+
if (list === undefined) {
|
|
134
|
+
on.set(goal.dueOn, [goal]);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
list.push(goal);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return on;
|
|
141
|
+
}
|
|
125
142
|
/** One week as a row of cells: the bars across the days in their lanes, then the tasks on each day. */
|
|
126
143
|
function WeekRow(props) {
|
|
127
144
|
const { week, segments, now } = props;
|
|
@@ -134,7 +151,8 @@ function WeekRow(props) {
|
|
|
134
151
|
const tipIn = (task, day) => props.pointed !== null && props.pointed.task.id === task.id && props.pointed.day === day ? (_jsx(TaskTip, { task: task, goals: props.goals, place: props.pointed.place })) : null;
|
|
135
152
|
const who = (task) => props.people === true && task.assignee !== null ? (_jsx(Avatar, { person: task.assignee, size: "xs" })) : null;
|
|
136
153
|
const lanes = segments.reduce((most, segment) => Math.max(most, segment.lane + 1), 0);
|
|
137
|
-
return (_jsx("tr", { children: week.map((cell, column) => (_jsxs("td", { className: cx("sc-calendar-cell", !cell.inMonth && "sc-calendar-cell-outside", cell.day === now && "sc-calendar-cell-today"), children: [_jsx("span", { className: "sc-calendar-day", children: Number(cell.day.slice(8)) }),
|
|
154
|
+
return (_jsx("tr", { children: week.map((cell, column) => (_jsxs("td", { className: cx("sc-calendar-cell", !cell.inMonth && "sc-calendar-cell-outside", cell.day === now && "sc-calendar-cell-today"), children: [_jsx("span", { className: "sc-calendar-day", children: Number(cell.day.slice(8)) }), props.goalHref !== undefined &&
|
|
155
|
+
(props.goalsOn?.get(cell.day) ?? []).map((goal) => (_jsxs("a", { className: cx("sc-calendar-goal", `sc-category-${goal.category?.color ?? "gray"}`, goal.state === "done" && "sc-calendar-over"), href: props.goalHref?.(goal), children: [_jsx("span", { className: "sc-calendar-flag", "aria-hidden": "true" }), _jsx("span", { className: "sc-calendar-task-title", children: goal.title })] }, goal.id))), Array.from({ length: lanes }, (_, lane) => {
|
|
138
156
|
const segment = segments.find((candidate) => candidate.lane === lane && candidate.from <= column && column <= candidate.to);
|
|
139
157
|
if (segment === undefined) {
|
|
140
158
|
// The lane is someone else's on this day: the bars below keep their height.
|
|
@@ -156,11 +174,12 @@ export function Calendar(props) {
|
|
|
156
174
|
const firstDay = firstDayOfWeek(tag);
|
|
157
175
|
const weeks = monthGrid(props.month, firstDay);
|
|
158
176
|
const on = onDays(props.tasks);
|
|
177
|
+
const goalsOn = props.goalHref === undefined ? undefined : goalsOnDays(props.goals ?? []);
|
|
159
178
|
const inMonth = (day) => monthOf(day) === props.month;
|
|
160
179
|
const monthWeeks = weeks.map((week) => ({ week, segments: weekSegments(week, props.tasks) }));
|
|
161
180
|
const nothing = [...on.keys()].every((day) => !inMonth(day)) &&
|
|
162
181
|
monthWeeks.every(({ week, segments }) => segments.every((segment) => !week.slice(segment.from, segment.to + 1).some((cell) => cell.inMonth)));
|
|
163
|
-
return (_jsxs("div", { className: "sc-calendar", children: [_jsxs("div", { className: "sc-calendar-head", children: [_jsx("h2", { className: "sc-calendar-month", children: formatMonth(props.month, tag) }), _jsxs("nav", { className: "sc-calendar-nav", "aria-label": words.grid, children: [_jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, -1)), "aria-label": words.previous, children: "<" }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(monthOf(now)), children: words.thisMonth }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, 1)), "aria-label": words.next, children: ">" })] })] }), _jsxs("table", { className: "sc-calendar-grid", "aria-label": words.grid, children: [_jsx("thead", { children: _jsx("tr", { children: weekdays(firstDay).map((weekday) => (_jsx("th", { scope: "col", children: formatWeekday(weekday, tag) }, weekday))) }) }), _jsx("tbody", { children: monthWeeks.map(({ week, segments }) => (_jsx(WeekRow, { week: week, segments: segments, on: on, now: now, taskHref: props.taskHref, pointed: pointed, goals: props.goals, onPoint: point, onLeave: leave, people: true }, week[0]?.day))) })] }), (props.categories ?? []).length > 0 && (_jsx("dl", { className: "sc-calendar-legend", "aria-label": words.legend.title, children: (props.categories ?? []).map((category) => (_jsxs("div", { children: [_jsx("dt", { children: _jsx("span", { className: cx("sc-calendar-dot", `sc-category-${category.color}`) }) }), _jsx("dd", { children: category.name })] }, category.key))) })), nothing && _jsx("p", { className: "sc-muted", children: words.nothingDue })] }));
|
|
182
|
+
return (_jsxs("div", { className: "sc-calendar", children: [_jsxs("div", { className: "sc-calendar-head", children: [_jsx("h2", { className: "sc-calendar-month", children: formatMonth(props.month, tag) }), _jsxs("nav", { className: "sc-calendar-nav", "aria-label": words.grid, children: [_jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, -1)), "aria-label": words.previous, children: "<" }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(monthOf(now)), children: words.thisMonth }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, 1)), "aria-label": words.next, children: ">" })] })] }), _jsxs("table", { className: "sc-calendar-grid", "aria-label": words.grid, children: [_jsx("thead", { children: _jsx("tr", { children: weekdays(firstDay).map((weekday) => (_jsx("th", { scope: "col", children: formatWeekday(weekday, tag) }, weekday))) }) }), _jsx("tbody", { children: monthWeeks.map(({ week, segments }) => (_jsx(WeekRow, { week: week, segments: segments, on: on, now: now, taskHref: props.taskHref, pointed: pointed, goals: props.goals, goalsOn: goalsOn, goalHref: props.goalHref, onPoint: point, onLeave: leave, people: true }, week[0]?.day))) })] }), (props.categories ?? []).length > 0 && (_jsx("dl", { className: "sc-calendar-legend", "aria-label": words.legend.title, children: (props.categories ?? []).map((category) => (_jsxs("div", { children: [_jsx("dt", { children: _jsx("span", { className: cx("sc-calendar-dot", `sc-category-${category.color}`) }) }), _jsx("dd", { children: category.name })] }, category.key))) })), nothing && _jsx("p", { className: "sc-muted", children: words.nothingDue })] }));
|
|
164
183
|
}
|
|
165
184
|
/** One week on its own: the days as columns, the tasks on them, and the weeks around a step away. */
|
|
166
185
|
export function Week(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
-
import { type GoalState, type RestGoal, type RestGoalInput, type RestTask } from "../api.js";
|
|
2
|
+
import { type GoalState, type RestCategory, type RestGoal, type RestGoalInput, type RestTask } from "../api.js";
|
|
3
3
|
export interface GoalListProps {
|
|
4
4
|
readonly goals: readonly RestGoal[];
|
|
5
5
|
readonly goalHref: (goal: RestGoal) => string;
|
|
@@ -11,6 +11,8 @@ export declare function GoalList(props: GoalListProps): import("react").JSX.Elem
|
|
|
11
11
|
export interface GoalFormProps {
|
|
12
12
|
/** The goal to change; left out, the form sets a new one. */
|
|
13
13
|
readonly goal?: RestGoal | undefined;
|
|
14
|
+
/** The workspace's categories to sort the goal into; left out, the form offers none. */
|
|
15
|
+
readonly categories?: readonly RestCategory[] | undefined;
|
|
14
16
|
readonly busy?: boolean | undefined;
|
|
15
17
|
readonly error?: string | undefined;
|
|
16
18
|
readonly onSubmit: (input: RestGoalInput) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../../src/components/goals.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AACjE,OAAO,EAEL,KAAK,SAAS,EAGd,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEd,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../../src/components/goals.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AACjE,OAAO,EAEL,KAAK,SAAS,EAGd,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEd,MAAM,WAAW,CAAC;AA0BnB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BA4B5C;AAED,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,wFAAwF;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BA0H5C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC9C,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAqH5C"}
|
package/dist/components/goals.js
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import { GOAL_STATES, MAX_BODY_LENGTH, MAX_TITLE_LENGTH, TASK_STATES, } from "../api.js";
|
|
4
|
-
import {
|
|
4
|
+
import { formatDays } from "../dates.js";
|
|
5
|
+
import { useLanguage, useWords } from "../i18n/index.js";
|
|
5
6
|
import { Markdown } from "./markdown.js";
|
|
6
7
|
import { TaskList } from "./task-list.js";
|
|
7
|
-
import { Button, Day, DueBadge, GoalStateBadge, PersonChip, ProgressBar, Time } from "./ui.js";
|
|
8
|
-
// The roadmap of a project (ADR-0019): its goals, each
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
8
|
+
import { Button, CategoryBadge, Day, DueBadge, GoalStateBadge, PersonChip, ProgressBar, Time, } from "./ui.js";
|
|
9
|
+
// The roadmap of a project (ADR-0019): its goals, each planned in days as a task is, a start
|
|
10
|
+
// and a target, sorted into a category of the workspace (ADR-0026), with how far its tasks
|
|
11
|
+
// are, read from the board as it stands. The list, one goal with its tasks, and the form an
|
|
12
|
+
// owner sets one with. Each takes its data as props and nothing from the network; what people
|
|
13
|
+
// wrote is shown as text, never as HTML.
|
|
12
14
|
/** A goal's day on the calendar's terms: reached or let go, it is a plain fact; else it may be late. */
|
|
13
15
|
const dueState = (goal) => goal.state === "done" ? "done" : goal.state === "dropped" ? "dropped" : "ready";
|
|
14
16
|
export function GoalList(props) {
|
|
15
17
|
const words = useWords().roadmap;
|
|
18
|
+
const { tag } = useLanguage();
|
|
16
19
|
if (props.goals.length === 0) {
|
|
17
20
|
return _jsx(_Fragment, { children: props.empty ?? null });
|
|
18
21
|
}
|
|
19
|
-
return (_jsx("ul", { className: "sc-goals", "aria-label": words.title, children: props.goals.map((goal) => (_jsxs("li", { className: `sc-goal sc-goal-${goal.state}`, children: [_jsxs("div", { className: "sc-goal-head", children: [_jsx("a", { className: "sc-goal-title", href: props.goalHref(goal), children: goal.title }), _jsx(GoalStateBadge, { state: goal.state }), goal.dueOn !== null && (_jsx(DueBadge, { dueOn: goal.dueOn, state: dueState(goal), today: props.today }))] }), _jsx(ProgressBar, { counts: goal.taskCounts })] }, goal.id))) }));
|
|
22
|
+
return (_jsx("ul", { className: "sc-goals", "aria-label": words.title, children: props.goals.map((goal) => (_jsxs("li", { className: `sc-goal sc-goal-${goal.state}`, children: [_jsxs("div", { className: "sc-goal-head", children: [_jsx("a", { className: "sc-goal-title", href: props.goalHref(goal), children: goal.title }), goal.category !== null && _jsx(CategoryBadge, { category: goal.category }), _jsx(GoalStateBadge, { state: goal.state }), goal.startsOn !== null && goal.dueOn !== null && goal.startsOn < goal.dueOn && (_jsx("span", { className: "sc-goal-days", children: formatDays(goal.startsOn, goal.dueOn, tag) })), goal.dueOn !== null && (_jsx(DueBadge, { dueOn: goal.dueOn, state: dueState(goal), today: props.today }))] }), _jsx(ProgressBar, { counts: goal.taskCounts })] }, goal.id))) }));
|
|
20
23
|
}
|
|
21
24
|
export function GoalForm(props) {
|
|
22
25
|
const words = useWords();
|
|
@@ -25,21 +28,30 @@ export function GoalForm(props) {
|
|
|
25
28
|
const [title, setTitle] = useState(goal?.title ?? "");
|
|
26
29
|
const [body, setBody] = useState(goal?.body ?? "");
|
|
27
30
|
const [state, setState] = useState(goal?.state ?? "planned");
|
|
31
|
+
const [category, setCategory] = useState(goal?.category?.key ?? "");
|
|
32
|
+
const [startsOn, setStartsOn] = useState(goal?.startsOn ?? "");
|
|
28
33
|
const [dueOn, setDueOn] = useState(goal?.dueOn ?? "");
|
|
29
34
|
const submit = (event) => {
|
|
30
35
|
event.preventDefault();
|
|
31
|
-
props.onSubmit({
|
|
36
|
+
props.onSubmit({
|
|
37
|
+
title: title.trim(),
|
|
38
|
+
body,
|
|
39
|
+
state,
|
|
40
|
+
category: category === "" ? null : category,
|
|
41
|
+
startsOn: startsOn === "" ? null : startsOn,
|
|
42
|
+
dueOn: dueOn === "" ? null : dueOn,
|
|
43
|
+
});
|
|
32
44
|
};
|
|
33
|
-
return (_jsxs("form", { className: "sc-form", onSubmit: submit, children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.title }), _jsx("input", { className: "sc-input", value: title, maxLength: MAX_TITLE_LENGTH, required: true, onChange: (event) => setTitle(event.target.value) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.body }), _jsx("textarea", { className: "sc-input sc-textarea", value: body, maxLength: MAX_BODY_LENGTH, rows: 4, placeholder: form.bodyPlaceholder, onChange: (event) => setBody(event.target.value) })] }), _jsxs("div", { className: "sc-field-row", children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.state }), _jsx("select", { className: "sc-input", value: state, onChange: (event) => setState(event.target.value), children: GOAL_STATES.map((candidate) => (_jsx("option", { value: candidate, children: words.vocabulary.goalState[candidate] }, candidate))) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.dueOn }), _jsx("input", { className: "sc-input", type: "date", value: dueOn, onChange: (event) => setDueOn(event.target.value) })] })] }), props.error !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: props.error })), _jsxs("div", { className: "sc-form-actions", children: [_jsx(Button, { type: "submit", variant: "primary", disabled: props.busy === true || title.trim() === "", children: goal === undefined ? form.set : words.common.save }), props.onCancel !== undefined && (_jsx(Button, { variant: "ghost", onClick: props.onCancel, children: words.common.cancel }))] })] }));
|
|
45
|
+
return (_jsxs("form", { className: "sc-form", onSubmit: submit, children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.title }), _jsx("input", { className: "sc-input", value: title, maxLength: MAX_TITLE_LENGTH, required: true, onChange: (event) => setTitle(event.target.value) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.body }), _jsx("textarea", { className: "sc-input sc-textarea", value: body, maxLength: MAX_BODY_LENGTH, rows: 4, placeholder: form.bodyPlaceholder, onChange: (event) => setBody(event.target.value) })] }), _jsxs("div", { className: "sc-field-row", children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.state }), _jsx("select", { className: "sc-input", value: state, onChange: (event) => setState(event.target.value), children: GOAL_STATES.map((candidate) => (_jsx("option", { value: candidate, children: words.vocabulary.goalState[candidate] }, candidate))) })] }), props.categories !== undefined && (_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.category }), _jsxs("select", { className: "sc-input", value: category, onChange: (event) => setCategory(event.target.value), children: [_jsx("option", { value: "", children: form.noCategory }), props.categories.map((candidate) => (_jsx("option", { value: candidate.key, children: candidate.name }, candidate.key)))] })] }))] }), _jsxs("div", { className: "sc-field-row", children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.startsOn }), _jsx("input", { className: "sc-input", type: "date", value: startsOn, max: dueOn === "" ? undefined : dueOn, onChange: (event) => setStartsOn(event.target.value) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.dueOn }), _jsx("input", { className: "sc-input", type: "date", value: dueOn, min: startsOn === "" ? undefined : startsOn, onChange: (event) => setDueOn(event.target.value) })] })] }), props.error !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: props.error })), _jsxs("div", { className: "sc-form-actions", children: [_jsx(Button, { type: "submit", variant: "primary", disabled: props.busy === true || title.trim() === "", children: goal === undefined ? form.set : words.common.save }), props.onCancel !== undefined && (_jsx(Button, { variant: "ghost", onClick: props.onCancel, children: words.common.cancel }))] })] }));
|
|
34
46
|
}
|
|
35
47
|
export function GoalView(props) {
|
|
36
48
|
const words = useWords();
|
|
37
49
|
const roadmap = words.roadmap;
|
|
38
50
|
const { goal } = props;
|
|
39
51
|
const towards = props.tasks.filter((task) => task.goalId === goal.id);
|
|
40
|
-
return (_jsxs("div", { className: "sc-task sc-goal-view", children: [_jsxs("header", { className: "sc-task-header", children: [_jsx("h1", { className: "sc-task-title", children: goal.title }), _jsxs("div", { className: "sc-task-badges", children: [_jsx(GoalStateBadge, { state: goal.state }), goal.dueOn !== null && (_jsx(DueBadge, { dueOn: goal.dueOn, state: dueState(goal), today: props.today }))] })] }), _jsxs("div", { className: "sc-task-body", children: [_jsxs("div", { className: "sc-task-main", children: [_jsx(ProgressBar, { counts: goal.taskCounts }), goal.body.length > 0 ? (_jsx(Markdown, { source: goal.body, docHref: props.docHref })) : (_jsx("p", { className: "sc-muted", children: roadmap.nothingMore })), _jsxs("section", { className: "sc-task-section", "aria-label": roadmap.tasks, children: [_jsx("h2", { className: "sc-section-title", children: roadmap.tasks }), towards.length === 0 ? (_jsx("p", { className: "sc-muted", children: roadmap.noTasks })) : (TASK_STATES.map((state) => {
|
|
52
|
+
return (_jsxs("div", { className: "sc-task sc-goal-view", children: [_jsxs("header", { className: "sc-task-header", children: [_jsx("h1", { className: "sc-task-title", children: goal.title }), _jsxs("div", { className: "sc-task-badges", children: [goal.category !== null && _jsx(CategoryBadge, { category: goal.category }), _jsx(GoalStateBadge, { state: goal.state }), goal.dueOn !== null && (_jsx(DueBadge, { dueOn: goal.dueOn, state: dueState(goal), today: props.today }))] })] }), _jsxs("div", { className: "sc-task-body", children: [_jsxs("div", { className: "sc-task-main", children: [_jsx(ProgressBar, { counts: goal.taskCounts }), goal.body.length > 0 ? (_jsx(Markdown, { source: goal.body, docHref: props.docHref })) : (_jsx("p", { className: "sc-muted", children: roadmap.nothingMore })), _jsxs("section", { className: "sc-task-section", "aria-label": roadmap.tasks, children: [_jsx("h2", { className: "sc-section-title", children: roadmap.tasks }), towards.length === 0 ? (_jsx("p", { className: "sc-muted", children: roadmap.noTasks })) : (TASK_STATES.map((state) => {
|
|
41
53
|
const inState = towards.filter((task) => task.state === state);
|
|
42
54
|
return inState.length === 0 ? null : (_jsxs("div", { className: "sc-goal-tasks", children: [_jsxs("h3", { className: "sc-goal-tasks-state", children: [words.vocabulary.state[state], " ", _jsx("span", { className: "sc-column-count", children: inState.length })] }), _jsx(TaskList, { tasks: inState, taskHref: props.taskHref, today: props.today })] }, state));
|
|
43
|
-
}))] })] }), _jsxs("aside", { className: "sc-task-aside", "aria-label": words.task.facts, children: [_jsxs("dl", { className: "sc-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: roadmap.state }), _jsx("dd", { children: props.onMove === undefined ? (words.vocabulary.goalState[goal.state]) : (_jsx("select", { className: "sc-input", "aria-label": roadmap.state, value: goal.state, disabled: props.busy === true, onChange: (event) => props.onMove?.(goal, event.target.value), children: GOAL_STATES.map((state) => (_jsx("option", { value: state, children: words.vocabulary.goalState[state] }, state))) })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.target }), _jsx("dd", { children: goal.dueOn === null ? (_jsx("span", { className: "sc-muted", children: roadmap.noTarget })) : (_jsx(Day, { day: goal.dueOn })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.setBy }), _jsxs("dd", { children: [_jsx(PersonChip, { person: goal.createdBy }), " ", _jsx(Time, { iso: goal.createdAt })] })] })] }), props.editHref !== undefined && (_jsx("div", { className: "sc-task-actions", children: _jsx("a", { className: "sc-button sc-button-secondary", href: props.editHref, children: words.common.edit }) }))] })] })] }));
|
|
55
|
+
}))] })] }), _jsxs("aside", { className: "sc-task-aside", "aria-label": words.task.facts, children: [_jsxs("dl", { className: "sc-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: roadmap.state }), _jsx("dd", { children: props.onMove === undefined ? (words.vocabulary.goalState[goal.state]) : (_jsx("select", { className: "sc-input", "aria-label": roadmap.state, value: goal.state, disabled: props.busy === true, onChange: (event) => props.onMove?.(goal, event.target.value), children: GOAL_STATES.map((state) => (_jsx("option", { value: state, children: words.vocabulary.goalState[state] }, state))) })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.category }), _jsx("dd", { children: goal.category === null ? (_jsx("span", { className: "sc-muted", children: roadmap.noCategory })) : (_jsx(CategoryBadge, { category: goal.category })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.starts }), _jsx("dd", { children: goal.startsOn === null ? (_jsx("span", { className: "sc-muted", children: roadmap.noStart })) : (_jsx(Day, { day: goal.startsOn })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.target }), _jsx("dd", { children: goal.dueOn === null ? (_jsx("span", { className: "sc-muted", children: roadmap.noTarget })) : (_jsx(Day, { day: goal.dueOn })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.setBy }), _jsxs("dd", { children: [_jsx(PersonChip, { person: goal.createdBy }), " ", _jsx(Time, { iso: goal.createdAt })] })] })] }), props.editHref !== undefined && (_jsx("div", { className: "sc-task-actions", children: _jsx("a", { className: "sc-button sc-button-secondary", href: props.editHref, children: words.common.edit }) }))] })] })] }));
|
|
44
56
|
}
|
|
45
57
|
//# sourceMappingURL=goals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goals.js","sourceRoot":"","sources":["../../src/components/goals.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkC,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EACL,WAAW,EAEX,eAAe,EACf,gBAAgB,
|
|
1
|
+
{"version":3,"file":"goals.js","sourceRoot":"","sources":["../../src/components/goals.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { RestCategory, RestGoal } from "../api.js";
|
|
2
|
+
/** How many months the roadmap shows at once when the address names no other span. */
|
|
3
|
+
export declare const DEFAULT_TIMELINE_MONTHS = 6;
|
|
4
|
+
export interface TimelineBar {
|
|
5
|
+
readonly goal: RestGoal;
|
|
6
|
+
/** Where the bar begins and ends, as shares of the whole span, 0 to 1. */
|
|
7
|
+
readonly from: number;
|
|
8
|
+
readonly to: number;
|
|
9
|
+
/** Whether the goal begins within the span, and whether it ends within it. */
|
|
10
|
+
readonly begins: boolean;
|
|
11
|
+
readonly ends: boolean;
|
|
12
|
+
/** Whether the goal has one day only: a point on it, not a bar. */
|
|
13
|
+
readonly point: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The bars of the goals that touch the span of `months` from `from` on, cut to it: from the
|
|
17
|
+
* goal's start, or the span's first day when it began before, to its target day whole, or the
|
|
18
|
+
* span's end when it ends after. A goal with a start or a target alone sits on that day; a goal
|
|
19
|
+
* with neither is left out.
|
|
20
|
+
*/
|
|
21
|
+
export declare function timelineBars(goals: readonly RestGoal[], from: string, months: number): TimelineBar[];
|
|
22
|
+
export interface GoalTimelineProps {
|
|
23
|
+
readonly goals: readonly RestGoal[];
|
|
24
|
+
/** The first month shown: `2026-10`. */
|
|
25
|
+
readonly from: string;
|
|
26
|
+
/** How many months are shown; `DEFAULT_TIMELINE_MONTHS` when left out. */
|
|
27
|
+
readonly months?: number | undefined;
|
|
28
|
+
/** The day to count from; the browser's today when left out. */
|
|
29
|
+
readonly today?: string | undefined;
|
|
30
|
+
/** The workspace's categories, for the legend to say what the colours mean. */
|
|
31
|
+
readonly categories?: readonly RestCategory[] | undefined;
|
|
32
|
+
readonly goalHref: (goal: RestGoal) => string;
|
|
33
|
+
/** Where the roadmap is from another month on. */
|
|
34
|
+
readonly fromHref: (month: string) => string;
|
|
35
|
+
}
|
|
36
|
+
export declare function GoalTimeline(props: GoalTimelineProps): import("react").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=roadmap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../src/components/roadmap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAWxD,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,WAAW,EAAE,CA4Bf;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC9C,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BA2JpD"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { addMonths, daysBetween, formatMonth, monthOf, today as todayOf } from "../dates.js";
|
|
3
|
+
import { useLanguage, useWords } from "../i18n/index.js";
|
|
4
|
+
import { cx, GoalStateBadge } from "./ui.js";
|
|
5
|
+
// The roadmap as months (ADR-0026): the months as columns, and each goal planned in days a bar
|
|
6
|
+
// from its start to its target in the colour of its category, filled as far as its tasks are
|
|
7
|
+
// done, with today a line down the months. A goal with one day alone sits on it as a point; one
|
|
8
|
+
// with no day is named below the months, since a plan without days is on none of them. Takes
|
|
9
|
+
// its data as props and nothing from the network; the months shown are the address's (ADR-0010).
|
|
10
|
+
/** How many months the roadmap shows at once when the address names no other span. */
|
|
11
|
+
export const DEFAULT_TIMELINE_MONTHS = 6;
|
|
12
|
+
/** The first day of a month, as a day. */
|
|
13
|
+
const firstDayOf = (month) => `${month}-01`;
|
|
14
|
+
/**
|
|
15
|
+
* The bars of the goals that touch the span of `months` from `from` on, cut to it: from the
|
|
16
|
+
* goal's start, or the span's first day when it began before, to its target day whole, or the
|
|
17
|
+
* span's end when it ends after. A goal with a start or a target alone sits on that day; a goal
|
|
18
|
+
* with neither is left out.
|
|
19
|
+
*/
|
|
20
|
+
export function timelineBars(goals, from, months) {
|
|
21
|
+
const first = firstDayOf(from);
|
|
22
|
+
const end = firstDayOf(addMonths(from, months));
|
|
23
|
+
const total = daysBetween(first, end);
|
|
24
|
+
if (total <= 0) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
return goals.flatMap((goal) => {
|
|
28
|
+
const startsOn = goal.startsOn ?? goal.dueOn;
|
|
29
|
+
const dueOn = goal.dueOn ?? goal.startsOn;
|
|
30
|
+
if (startsOn === null || dueOn === null || dueOn < first || startsOn >= end) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
const begins = startsOn >= first;
|
|
34
|
+
const ends = dueOn < end;
|
|
35
|
+
const fromDay = begins ? daysBetween(first, startsOn) : 0;
|
|
36
|
+
const toDay = ends ? daysBetween(first, dueOn) + 1 : total;
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
goal,
|
|
40
|
+
from: fromDay / total,
|
|
41
|
+
to: toDay / total,
|
|
42
|
+
begins,
|
|
43
|
+
ends,
|
|
44
|
+
point: startsOn === dueOn,
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const percent = (share) => `${(share * 100).toFixed(3)}%`;
|
|
50
|
+
export function GoalTimeline(props) {
|
|
51
|
+
const words = useWords().roadmap;
|
|
52
|
+
const { tag } = useLanguage();
|
|
53
|
+
const months = Math.max(1, props.months ?? DEFAULT_TIMELINE_MONTHS);
|
|
54
|
+
const now = props.today ?? todayOf();
|
|
55
|
+
const first = firstDayOf(props.from);
|
|
56
|
+
const end = firstDayOf(addMonths(props.from, months));
|
|
57
|
+
const total = daysBetween(first, end);
|
|
58
|
+
const columns = Array.from({ length: months }, (_, index) => addMonths(props.from, index));
|
|
59
|
+
const shares = columns.map((month) => daysBetween(firstDayOf(month), firstDayOf(addMonths(month, 1))) / total);
|
|
60
|
+
const bars = timelineBars(props.goals, props.from, months);
|
|
61
|
+
const todayAt = now >= first && now < end ? daysBetween(first, now) / total : undefined;
|
|
62
|
+
const undated = props.goals.filter((goal) => goal.startsOn === null && goal.dueOn === null);
|
|
63
|
+
const doneShare = (goal) => {
|
|
64
|
+
const counts = goal.taskCounts;
|
|
65
|
+
const all = counts.idea + counts.ready + counts.in_progress + counts.in_review + counts.done;
|
|
66
|
+
return all === 0 ? 0 : counts.done / all;
|
|
67
|
+
};
|
|
68
|
+
return (_jsxs("div", { className: "sc-timeline", children: [_jsxs("div", { className: "sc-timeline-head", children: [_jsx("h2", { className: "sc-timeline-title", children: words.timeline.title }), _jsxs("nav", { className: "sc-calendar-nav", "aria-label": words.timeline.title, children: [_jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.fromHref(addMonths(props.from, -1)), "aria-label": words.timeline.earlier, children: "<" }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.fromHref(monthOf(now)), children: words.timeline.thisMonth }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.fromHref(addMonths(props.from, 1)), "aria-label": words.timeline.later, children: ">" })] })] }), _jsxs("div", { className: "sc-timeline-grid", children: [_jsxs("div", { className: "sc-timeline-row sc-timeline-months", children: [_jsx("div", { className: "sc-timeline-label", "aria-hidden": "true" }), _jsxs("div", { className: "sc-timeline-track", children: [columns.map((month, index) => (_jsx("span", { className: "sc-timeline-month", style: { width: percent(shares[index] ?? 0) }, children: formatMonth(month, tag) }, month))), todayAt !== undefined && (_jsx("span", { className: "sc-timeline-today sc-timeline-today-mark", style: { left: percent(todayAt) }, title: words.timeline.today }))] })] }), bars.map(({ goal, from, to, begins, ends, point }) => {
|
|
69
|
+
const counts = goal.taskCounts;
|
|
70
|
+
const all = counts.idea + counts.ready + counts.in_progress + counts.in_review + counts.done;
|
|
71
|
+
return (_jsxs("div", { className: cx("sc-timeline-row", `sc-goal-${goal.state}`), children: [_jsxs("div", { className: "sc-timeline-label", children: [_jsx("a", { className: "sc-timeline-goal", href: props.goalHref(goal), children: goal.title }), _jsx(GoalStateBadge, { state: goal.state })] }), _jsxs("div", { className: "sc-timeline-track", children: [columns.map((month, index) => (_jsx("span", { className: "sc-timeline-column", style: { width: percent(shares[index] ?? 0) }, "aria-hidden": "true" }, month))), todayAt !== undefined && (_jsx("span", { className: "sc-timeline-today", style: { left: percent(todayAt) }, "aria-hidden": "true" })), _jsx("a", { className: cx(point ? "sc-timeline-point" : "sc-timeline-bar", `sc-category-${goal.category?.color ?? "gray"}`, begins && "sc-timeline-bar-begins", ends && "sc-timeline-bar-ends"), style: point
|
|
72
|
+
? { left: percent(from) }
|
|
73
|
+
: { left: percent(from), width: percent(to - from) }, href: props.goalHref(goal), "aria-label": `${goal.title}: ${words.progress(counts.done, all)}`, children: !point && (_jsxs(_Fragment, { children: [_jsx("span", { className: "sc-timeline-fill", style: { width: percent(doneShare(goal)) }, "aria-hidden": "true" }), _jsxs("span", { className: "sc-timeline-words", children: [counts.done, "/", all] })] })) })] })] }, goal.id));
|
|
74
|
+
})] }), bars.length === 0 && _jsx("p", { className: "sc-muted", children: words.timeline.nothing }), (props.categories ?? []).length > 0 && (_jsx("dl", { className: "sc-calendar-legend", "aria-label": words.timeline.legend, children: (props.categories ?? []).map((category) => (_jsxs("div", { children: [_jsx("dt", { children: _jsx("span", { className: cx("sc-calendar-dot", `sc-category-${category.color}`) }) }), _jsx("dd", { children: category.name })] }, category.key))) })), undated.length > 0 && (_jsxs("p", { className: "sc-timeline-undated", children: [_jsxs("span", { className: "sc-muted", children: [words.timeline.noDays, ": "] }), undated.map((goal, index) => (_jsxs("span", { children: [index > 0 && ", ", _jsx("a", { className: "sc-timeline-goal", href: props.goalHref(goal), children: goal.title })] }, goal.id)))] }))] }));
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=roadmap.js.map
|