@wrenautomation/aerie 0.4.4 → 0.4.5
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/dist/bin.js +39 -7
- package/dist/bin.js.map +2 -2
- package/dist/core/fields.d.ts +15 -0
- package/dist/core/fields.js +49 -3
- package/dist/core/fields.js.map +1 -1
- package/dist/peers-coord.js +40 -8
- package/dist/peers-coord.js.map +2 -2
- package/package.json +1 -1
package/dist/core/fields.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Edit } from "./edit.js";
|
|
1
2
|
import { type SortField, type TaskRecord, type TaskView } from "./filter.js";
|
|
2
3
|
/** how a portal draws the value */
|
|
3
4
|
export type FieldKind = "id" | "text" | "status" | "priority" | "area" | "people" | "labels" | "date" | "number" | "progress";
|
|
@@ -13,9 +14,23 @@ export interface Field {
|
|
|
13
14
|
group?: boolean;
|
|
14
15
|
/** known values in group order; others follow, by name */
|
|
15
16
|
order?: readonly string[];
|
|
17
|
+
/**
|
|
18
|
+
* The write that moves `t` from group `from` to group `to` (null: the empty group), the inverse of `values`
|
|
19
|
+
* (D17). None: a Board cannot move cards on this field.
|
|
20
|
+
*/
|
|
21
|
+
move?(t: TaskView, from: string | null, to: string | null): MoveEdit | null;
|
|
16
22
|
}
|
|
23
|
+
/** a move's write: task fields, and `area` (a placement) */
|
|
24
|
+
export type MoveEdit = Edit & {
|
|
25
|
+
area?: string;
|
|
26
|
+
};
|
|
17
27
|
export declare const FIELDS: readonly Field[];
|
|
18
28
|
export declare const fieldOf: (key: string) => Field | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* The write that moves `t` from group `from` to `to` on field `key`; null: nothing to write (the same group, a
|
|
31
|
+
* `from` the task is not in, a field with no move).
|
|
32
|
+
*/
|
|
33
|
+
export declare function moveEdit(key: string, t: TaskView, from: string | null, to: string | null): MoveEdit | null;
|
|
19
34
|
export declare const GROUP_KEYS: string[];
|
|
20
35
|
export interface Group<T extends TaskView = TaskRecord> {
|
|
21
36
|
/** null: the task has no value for this field */
|
package/dist/core/fields.js
CHANGED
|
@@ -6,6 +6,8 @@ import { lineage } from "./area.js";
|
|
|
6
6
|
import { holdersOf, MARK } from "./filter.js";
|
|
7
7
|
import { PRIORITIES, STATUSES } from "./task.js";
|
|
8
8
|
const one = (v) => (v ? [v] : []);
|
|
9
|
+
/** one value: `to` sets it, null clears it */
|
|
10
|
+
const setTo = (k) => (_t, _from, to) => ({ [k]: to });
|
|
9
11
|
const checks = (t) => {
|
|
10
12
|
const all = [...t.ac, ...t.dod];
|
|
11
13
|
return all.length ? [`${all.filter((c) => c.done).length}/${all.length}`] : [];
|
|
@@ -21,6 +23,7 @@ export const FIELDS = [
|
|
|
21
23
|
sort: "status",
|
|
22
24
|
group: true,
|
|
23
25
|
order: STATUSES,
|
|
26
|
+
move: (_t, _from, to) => (to ? { status: to } : null),
|
|
24
27
|
},
|
|
25
28
|
{
|
|
26
29
|
key: "priority",
|
|
@@ -30,26 +33,56 @@ export const FIELDS = [
|
|
|
30
33
|
sort: "priority",
|
|
31
34
|
group: true,
|
|
32
35
|
order: PRIORITIES,
|
|
36
|
+
move: setTo("priority"),
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: "area",
|
|
40
|
+
label: "Area",
|
|
41
|
+
kind: "area",
|
|
42
|
+
values: (t) => [t.area],
|
|
43
|
+
sort: "area",
|
|
44
|
+
group: true,
|
|
45
|
+
move: (_t, _from, to) => (to ? { area: to } : null),
|
|
33
46
|
},
|
|
34
|
-
{ key: "area", label: "Area", kind: "area", values: (t) => [t.area], sort: "area", group: true },
|
|
35
47
|
{
|
|
36
48
|
key: "assignee",
|
|
37
49
|
label: "Assignee",
|
|
38
50
|
kind: "people",
|
|
39
51
|
values: (t) => t.assignees.filter((a) => !a.startsWith(MARK)),
|
|
40
52
|
group: true,
|
|
53
|
+
// the empty group has no people: `to` null drops them all; `@peers:` marks stay
|
|
54
|
+
move: (t, from, to) => {
|
|
55
|
+
const kept = t.assignees.filter((a) => (to ? a !== from : a.startsWith(MARK)));
|
|
56
|
+
return { assignees: to && !kept.includes(to) ? [...kept, to] : kept };
|
|
57
|
+
},
|
|
41
58
|
},
|
|
42
59
|
{ key: "holder", label: "Held by", kind: "people", values: (t) => holdersOf(t), group: true },
|
|
43
|
-
{
|
|
60
|
+
{
|
|
61
|
+
key: "labels",
|
|
62
|
+
label: "Labels",
|
|
63
|
+
kind: "labels",
|
|
64
|
+
values: (t) => t.labels,
|
|
65
|
+
group: true,
|
|
66
|
+
// the empty group has no labels: `to` null drops them all
|
|
67
|
+
move: (_t, from, to) => to ? { ...(from ? { removeLabels: [from] } : {}), addLabels: [to] } : { labels: [] },
|
|
68
|
+
},
|
|
44
69
|
{
|
|
45
70
|
key: "milestone",
|
|
46
71
|
label: "Milestone",
|
|
47
72
|
kind: "text",
|
|
48
73
|
values: (t) => one(t.milestone),
|
|
49
74
|
group: true,
|
|
75
|
+
move: setTo("milestone"),
|
|
50
76
|
},
|
|
51
77
|
{ key: "parent", label: "Parent", kind: "id", values: (t) => one(t.parentId), group: true },
|
|
52
|
-
{
|
|
78
|
+
{
|
|
79
|
+
key: "type",
|
|
80
|
+
label: "Type",
|
|
81
|
+
kind: "text",
|
|
82
|
+
values: (t) => one(t.type),
|
|
83
|
+
group: true,
|
|
84
|
+
move: setTo("type"),
|
|
85
|
+
},
|
|
53
86
|
{ key: "checks", label: "Checks", kind: "progress", values: checks },
|
|
54
87
|
{
|
|
55
88
|
key: "createdAt",
|
|
@@ -74,6 +107,19 @@ export const FIELDS = [
|
|
|
74
107
|
},
|
|
75
108
|
];
|
|
76
109
|
export const fieldOf = (key) => FIELDS.find((f) => f.key === key);
|
|
110
|
+
/**
|
|
111
|
+
* The write that moves `t` from group `from` to `to` on field `key`; null: nothing to write (the same group, a
|
|
112
|
+
* `from` the task is not in, a field with no move).
|
|
113
|
+
*/
|
|
114
|
+
export function moveEdit(key, t, from, to) {
|
|
115
|
+
const f = fieldOf(key);
|
|
116
|
+
if (!f?.move || from === to)
|
|
117
|
+
return null;
|
|
118
|
+
const now = f.values(t);
|
|
119
|
+
if (from === null ? now.length > 0 : !now.includes(from))
|
|
120
|
+
return null;
|
|
121
|
+
return f.move(t, from, to);
|
|
122
|
+
}
|
|
77
123
|
export const GROUP_KEYS = FIELDS.filter((f) => f.group).map((f) => f.key);
|
|
78
124
|
/**
|
|
79
125
|
* Tasks into groups, in the field's order (known values first, then by name, empty last). `all`: also the
|
package/dist/core/fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/core/fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/core/fields.ts"],"names":[],"mappings":"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"}
|
package/dist/peers-coord.js
CHANGED
|
@@ -8891,7 +8891,7 @@ var init_task = __esm({
|
|
|
8891
8891
|
});
|
|
8892
8892
|
|
|
8893
8893
|
// src/core/fields.ts
|
|
8894
|
-
var one, checks, FIELDS, GROUP_KEYS;
|
|
8894
|
+
var one, setTo, checks, FIELDS, GROUP_KEYS;
|
|
8895
8895
|
var init_fields = __esm({
|
|
8896
8896
|
"src/core/fields.ts"() {
|
|
8897
8897
|
"use strict";
|
|
@@ -8899,6 +8899,7 @@ var init_fields = __esm({
|
|
|
8899
8899
|
init_filter();
|
|
8900
8900
|
init_task();
|
|
8901
8901
|
one = (v) => v ? [v] : [];
|
|
8902
|
+
setTo = (k) => (_t, _from, to) => ({ [k]: to });
|
|
8902
8903
|
checks = (t) => {
|
|
8903
8904
|
const all = [...t.ac, ...t.dod];
|
|
8904
8905
|
return all.length ? [`${all.filter((c) => c.done).length}/${all.length}`] : [];
|
|
@@ -8913,7 +8914,8 @@ var init_fields = __esm({
|
|
|
8913
8914
|
values: (t) => [t.status],
|
|
8914
8915
|
sort: "status",
|
|
8915
8916
|
group: true,
|
|
8916
|
-
order: STATUSES
|
|
8917
|
+
order: STATUSES,
|
|
8918
|
+
move: (_t, _from, to) => to ? { status: to } : null
|
|
8917
8919
|
},
|
|
8918
8920
|
{
|
|
8919
8921
|
key: "priority",
|
|
@@ -8922,27 +8924,57 @@ var init_fields = __esm({
|
|
|
8922
8924
|
values: (t) => one(t.priority),
|
|
8923
8925
|
sort: "priority",
|
|
8924
8926
|
group: true,
|
|
8925
|
-
order: PRIORITIES
|
|
8927
|
+
order: PRIORITIES,
|
|
8928
|
+
move: setTo("priority")
|
|
8929
|
+
},
|
|
8930
|
+
{
|
|
8931
|
+
key: "area",
|
|
8932
|
+
label: "Area",
|
|
8933
|
+
kind: "area",
|
|
8934
|
+
values: (t) => [t.area],
|
|
8935
|
+
sort: "area",
|
|
8936
|
+
group: true,
|
|
8937
|
+
move: (_t, _from, to) => to ? { area: to } : null
|
|
8926
8938
|
},
|
|
8927
|
-
{ key: "area", label: "Area", kind: "area", values: (t) => [t.area], sort: "area", group: true },
|
|
8928
8939
|
{
|
|
8929
8940
|
key: "assignee",
|
|
8930
8941
|
label: "Assignee",
|
|
8931
8942
|
kind: "people",
|
|
8932
8943
|
values: (t) => t.assignees.filter((a) => !a.startsWith(MARK)),
|
|
8933
|
-
group: true
|
|
8944
|
+
group: true,
|
|
8945
|
+
// the empty group has no people: `to` null drops them all; `@peers:` marks stay
|
|
8946
|
+
move: (t, from, to) => {
|
|
8947
|
+
const kept = t.assignees.filter((a) => to ? a !== from : a.startsWith(MARK));
|
|
8948
|
+
return { assignees: to && !kept.includes(to) ? [...kept, to] : kept };
|
|
8949
|
+
}
|
|
8934
8950
|
},
|
|
8935
8951
|
{ key: "holder", label: "Held by", kind: "people", values: (t) => holdersOf(t), group: true },
|
|
8936
|
-
{
|
|
8952
|
+
{
|
|
8953
|
+
key: "labels",
|
|
8954
|
+
label: "Labels",
|
|
8955
|
+
kind: "labels",
|
|
8956
|
+
values: (t) => t.labels,
|
|
8957
|
+
group: true,
|
|
8958
|
+
// the empty group has no labels: `to` null drops them all
|
|
8959
|
+
move: (_t, from, to) => to ? { ...from ? { removeLabels: [from] } : {}, addLabels: [to] } : { labels: [] }
|
|
8960
|
+
},
|
|
8937
8961
|
{
|
|
8938
8962
|
key: "milestone",
|
|
8939
8963
|
label: "Milestone",
|
|
8940
8964
|
kind: "text",
|
|
8941
8965
|
values: (t) => one(t.milestone),
|
|
8942
|
-
group: true
|
|
8966
|
+
group: true,
|
|
8967
|
+
move: setTo("milestone")
|
|
8943
8968
|
},
|
|
8944
8969
|
{ key: "parent", label: "Parent", kind: "id", values: (t) => one(t.parentId), group: true },
|
|
8945
|
-
{
|
|
8970
|
+
{
|
|
8971
|
+
key: "type",
|
|
8972
|
+
label: "Type",
|
|
8973
|
+
kind: "text",
|
|
8974
|
+
values: (t) => one(t.type),
|
|
8975
|
+
group: true,
|
|
8976
|
+
move: setTo("type")
|
|
8977
|
+
},
|
|
8946
8978
|
{ key: "checks", label: "Checks", kind: "progress", values: checks },
|
|
8947
8979
|
{
|
|
8948
8980
|
key: "createdAt",
|