@things-factory/organization 10.1.46 → 10.1.79

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.
@@ -10,7 +10,9 @@ import { GristEditorRecipients } from './grist-editor/grist-editor-recipients';
10
10
  import { GristRendererRecipients } from './grist-editor/grist-renderer-recipients';
11
11
  import { GristEditorApprovalLine } from './grist-editor/grist-editor-approval-line';
12
12
  import { GristRendererApprovalLine } from './grist-editor/grist-renderer-approval-line';
13
+ import { registerPersonMembershipSection } from './entity360/person-membership-section.js';
13
14
  export default function bootstrap() {
15
+ registerPersonMembershipSection();
14
16
  /* register grist renderer/editor for id */
15
17
  registerEditor('department-object', GristEditorDepartmentObject);
16
18
  registerEditor('approval-line', GristEditorApprovalLine);
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAE9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAA;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAA;AAEnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAA;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAA;AAEvF,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,2CAA2C;IAC3C,cAAc,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAA;IAChE,cAAc,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAA;IACxD,cAAc,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;IACjD,cAAc,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAA;IAEnD,gBAAgB,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAA;IACpE,gBAAgB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;IAC5D,gBAAgB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;IACrD,gBAAgB,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;IAEvD,sBAAsB,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACpD,sBAAsB,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACxD,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACjE,sBAAsB,CAAC,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;AACvE,CAAC","sourcesContent":["import { registerEditor, registerRenderer, registerFilterRenderer } from '@operato/data-grist'\n\nimport { FilterResourceCode } from '@operato/app/filters-form/filter-resource-code.js'\nimport { FilterResourceObject } from '@operato/app/filters-form/filter-resource-object.js'\nimport { FilterDepartmentObject } from './filters-form/filter-department-object.js'\n\nimport { GristRendererDepartmentObject } from './grist-editor/grist-renderer-department-object'\nimport { GristEditorDepartmentObject } from './grist-editor/grist-editor-department-object'\nimport { GristEditorAssignees } from './grist-editor/grist-editor-assignees'\nimport { GristRendererAssignees } from './grist-editor/grist-renderer-assignees'\nimport { GristEditorRecipients } from './grist-editor/grist-editor-recipients'\nimport { GristRendererRecipients } from './grist-editor/grist-renderer-recipients'\nimport { GristEditorApprovalLine } from './grist-editor/grist-editor-approval-line'\nimport { GristRendererApprovalLine } from './grist-editor/grist-renderer-approval-line'\n\nexport default function bootstrap() {\n /* register grist renderer/editor for id */\n registerEditor('department-object', GristEditorDepartmentObject)\n registerEditor('approval-line', GristEditorApprovalLine)\n registerEditor('assignees', GristEditorAssignees)\n registerEditor('recipients', GristEditorRecipients)\n\n registerRenderer('department-object', GristRendererDepartmentObject)\n registerRenderer('approval-line', GristRendererApprovalLine)\n registerRenderer('assignees', GristRendererAssignees)\n registerRenderer('recipients', GristRendererRecipients)\n\n registerFilterRenderer('code', [FilterResourceCode])\n registerFilterRenderer('object', [FilterResourceObject])\n registerFilterRenderer('resource-object', [FilterResourceObject])\n registerFilterRenderer('department-object', [FilterDepartmentObject])\n}\n"]}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAE9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAA;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAA;AAEnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAA;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAA;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAA;AAE1F,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,+BAA+B,EAAE,CAAA;IAEjC,2CAA2C;IAC3C,cAAc,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAA;IAChE,cAAc,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAA;IACxD,cAAc,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;IACjD,cAAc,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAA;IAEnD,gBAAgB,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAA;IACpE,gBAAgB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;IAC5D,gBAAgB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;IACrD,gBAAgB,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;IAEvD,sBAAsB,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACpD,sBAAsB,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACxD,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACjE,sBAAsB,CAAC,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;AACvE,CAAC","sourcesContent":["import { registerEditor, registerRenderer, registerFilterRenderer } from '@operato/data-grist'\n\nimport { FilterResourceCode } from '@operato/app/filters-form/filter-resource-code.js'\nimport { FilterResourceObject } from '@operato/app/filters-form/filter-resource-object.js'\nimport { FilterDepartmentObject } from './filters-form/filter-department-object.js'\n\nimport { GristRendererDepartmentObject } from './grist-editor/grist-renderer-department-object'\nimport { GristEditorDepartmentObject } from './grist-editor/grist-editor-department-object'\nimport { GristEditorAssignees } from './grist-editor/grist-editor-assignees'\nimport { GristRendererAssignees } from './grist-editor/grist-renderer-assignees'\nimport { GristEditorRecipients } from './grist-editor/grist-editor-recipients'\nimport { GristRendererRecipients } from './grist-editor/grist-renderer-recipients'\nimport { GristEditorApprovalLine } from './grist-editor/grist-editor-approval-line'\nimport { GristRendererApprovalLine } from './grist-editor/grist-renderer-approval-line'\nimport { registerPersonMembershipSection } from './entity360/person-membership-section.js'\n\nexport default function bootstrap() {\n registerPersonMembershipSection()\n\n /* register grist renderer/editor for id */\n registerEditor('department-object', GristEditorDepartmentObject)\n registerEditor('approval-line', GristEditorApprovalLine)\n registerEditor('assignees', GristEditorAssignees)\n registerEditor('recipients', GristEditorRecipients)\n\n registerRenderer('department-object', GristRendererDepartmentObject)\n registerRenderer('approval-line', GristRendererApprovalLine)\n registerRenderer('assignees', GristRendererAssignees)\n registerRenderer('recipients', GristRendererRecipients)\n\n registerFilterRenderer('code', [FilterResourceCode])\n registerFilterRenderer('object', [FilterResourceObject])\n registerFilterRenderer('resource-object', [FilterResourceObject])\n registerFilterRenderer('department-object', [FilterDepartmentObject])\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { LitElement } from 'lit';
2
+ import { type Entity360DoorAnswer, type Entity360Subject } from '@operato/layout';
3
+ /**
4
+ * The person 360's membership section (ADR-0067, design/ui/entity360-person.md §3): department,
5
+ * position and supervisor, from the person's employee records in this domain.
6
+ *
7
+ * Read through `employees`, which asks `employee:query` - someone without it is told they may not
8
+ * see this, never "none". A user can hold more than one employee record here (there is no unique
9
+ * constraint on domain and user - `myEmployees` says why), so every record is shown.
10
+ */
11
+ type Membership = {
12
+ id: string;
13
+ name?: string;
14
+ jobPosition?: string;
15
+ department?: {
16
+ name?: string;
17
+ };
18
+ supervisor?: {
19
+ name?: string;
20
+ };
21
+ };
22
+ export declare function registerPersonMembershipSection(): void;
23
+ export declare class PersonMembershipSection extends LitElement {
24
+ static styles: import("lit").CSSResult;
25
+ subject?: Entity360Subject;
26
+ answer?: Entity360DoorAnswer<Membership[]>;
27
+ updated(changed: Map<string, unknown>): void;
28
+ private read;
29
+ render(): import("lit-html").TemplateResult<1>;
30
+ }
31
+ export {};
@@ -0,0 +1,104 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import gql from 'graphql-tag';
3
+ import { css, html, LitElement } from 'lit';
4
+ import { customElement, property, state } from 'lit/decorators.js';
5
+ import { client } from '@operato/graphql';
6
+ import { i18next } from '@operato/i18n';
7
+ import { readEntity360Door, registerEntity360Section } from '@operato/layout';
8
+ export function registerPersonMembershipSection() {
9
+ registerEntity360Section('person', {
10
+ name: 'membership',
11
+ order: 10,
12
+ render: subject => html `<person-membership-section .subject=${subject}></person-membership-section>`
13
+ });
14
+ }
15
+ let PersonMembershipSection = class PersonMembershipSection extends LitElement {
16
+ static { this.styles = css `
17
+ dl {
18
+ margin: 0;
19
+ display: grid;
20
+ grid-template-columns: max-content 1fr;
21
+ gap: 4px 12px;
22
+ font: 13px/1.5 sans-serif;
23
+ }
24
+ dl + dl {
25
+ margin-top: 8px;
26
+ padding-top: 8px;
27
+ border-top: 1px dashed var(--md-sys-color-outline-variant);
28
+ }
29
+ dt {
30
+ color: var(--md-sys-color-on-surface-variant);
31
+ }
32
+ dd {
33
+ margin: 0;
34
+ color: var(--md-sys-color-on-surface);
35
+ overflow-wrap: anywhere;
36
+ }
37
+ `; }
38
+ updated(changed) {
39
+ if (changed.has('subject'))
40
+ this.read();
41
+ }
42
+ async read() {
43
+ const id = this.subject?.id;
44
+ this.answer = undefined;
45
+ if (!id)
46
+ return;
47
+ const response = await client.query({
48
+ query: gql `
49
+ query ($filters: [Filter!]) {
50
+ employees(filters: $filters) {
51
+ items {
52
+ id
53
+ name
54
+ jobPosition
55
+ department {
56
+ name
57
+ }
58
+ supervisor {
59
+ name
60
+ }
61
+ }
62
+ }
63
+ }
64
+ `,
65
+ variables: { filters: [{ name: 'userId', operator: 'eq', value: id }] }
66
+ });
67
+ /* A later subject may have arrived while this one was being read. */
68
+ if (this.subject?.id !== id)
69
+ return;
70
+ this.answer = readEntity360Door(response, data => data?.employees?.items || []);
71
+ }
72
+ render() {
73
+ const answer = this.answer;
74
+ /* A blank field says 「없음」 in its own row - leaving it out would read as "not asked". */
75
+ const none = i18next.t('text.entity360-none', { defaultValue: 'none' });
76
+ return html `<ox-entity360-section
77
+ .heading=${i18next.t('title.person-membership', { defaultValue: 'membership' })}
78
+ .state=${answer?.state ?? 'loading'}
79
+ .message=${answer?.message ?? ''}
80
+ >
81
+ ${(answer?.data || []).map(one => html `<dl>
82
+ <dt>${i18next.t('label.department')}</dt>
83
+ <dd>${one.department?.name || none}</dd>
84
+ <dt>${i18next.t('label.job-position')}</dt>
85
+ <dd>${one.jobPosition || none}</dd>
86
+ <dt>${i18next.t('label.supervisor-person', { defaultValue: 'supervisor' })}</dt>
87
+ <dd>${one.supervisor?.name || none}</dd>
88
+ </dl>`)}
89
+ </ox-entity360-section>`;
90
+ }
91
+ };
92
+ __decorate([
93
+ property({ attribute: false }),
94
+ __metadata("design:type", Object)
95
+ ], PersonMembershipSection.prototype, "subject", void 0);
96
+ __decorate([
97
+ state(),
98
+ __metadata("design:type", Object)
99
+ ], PersonMembershipSection.prototype, "answer", void 0);
100
+ PersonMembershipSection = __decorate([
101
+ customElement('person-membership-section')
102
+ ], PersonMembershipSection);
103
+ export { PersonMembershipSection };
104
+ //# sourceMappingURL=person-membership-section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person-membership-section.js","sourceRoot":"","sources":["../../client/entity360/person-membership-section.ts"],"names":[],"mappings":"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","sourcesContent":["import gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { readEntity360Door, registerEntity360Section, type Entity360DoorAnswer, type Entity360Subject } from '@operato/layout'\n\n/**\n * The person 360's membership section (ADR-0067, design/ui/entity360-person.md §3): department,\n * position and supervisor, from the person's employee records in this domain.\n *\n * Read through `employees`, which asks `employee:query` - someone without it is told they may not\n * see this, never \"none\". A user can hold more than one employee record here (there is no unique\n * constraint on domain and user - `myEmployees` says why), so every record is shown.\n */\n\ntype Membership = {\n id: string\n name?: string\n jobPosition?: string\n department?: { name?: string }\n supervisor?: { name?: string }\n}\n\nexport function registerPersonMembershipSection() {\n registerEntity360Section('person', {\n name: 'membership',\n order: 10,\n render: subject => html`<person-membership-section .subject=${subject}></person-membership-section>`\n })\n}\n\n@customElement('person-membership-section')\nexport class PersonMembershipSection extends LitElement {\n static styles = css`\n dl {\n margin: 0;\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 4px 12px;\n font: 13px/1.5 sans-serif;\n }\n dl + dl {\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px dashed var(--md-sys-color-outline-variant);\n }\n dt {\n color: var(--md-sys-color-on-surface-variant);\n }\n dd {\n margin: 0;\n color: var(--md-sys-color-on-surface);\n overflow-wrap: anywhere;\n }\n `\n\n @property({ attribute: false }) subject?: Entity360Subject\n @state() answer?: Entity360DoorAnswer<Membership[]>\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('subject')) this.read()\n }\n\n private async read() {\n const id = this.subject?.id\n this.answer = undefined\n if (!id) return\n\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!]) {\n employees(filters: $filters) {\n items {\n id\n name\n jobPosition\n department {\n name\n }\n supervisor {\n name\n }\n }\n }\n }\n `,\n variables: { filters: [{ name: 'userId', operator: 'eq', value: id }] }\n })\n\n /* A later subject may have arrived while this one was being read. */\n if (this.subject?.id !== id) return\n this.answer = readEntity360Door(response, data => data?.employees?.items || [])\n }\n\n render() {\n const answer = this.answer\n /* A blank field says 「없음」 in its own row - leaving it out would read as \"not asked\". */\n const none = i18next.t('text.entity360-none', { defaultValue: 'none' })\n\n return html`<ox-entity360-section\n .heading=${i18next.t('title.person-membership', { defaultValue: 'membership' })}\n .state=${answer?.state ?? 'loading'}\n .message=${answer?.message ?? ''}\n >\n ${(answer?.data || []).map(\n one => html`<dl>\n <dt>${i18next.t('label.department')}</dt>\n <dd>${one.department?.name || none}</dd>\n <dt>${i18next.t('label.job-position')}</dt>\n <dd>${one.jobPosition || none}</dd>\n <dt>${i18next.t('label.supervisor-person', { defaultValue: 'supervisor' })}</dt>\n <dd>${one.supervisor?.name || none}</dd>\n </dl>`\n )}\n </ox-entity360-section>`\n }\n}\n"]}
@@ -1 +1 @@
1
- export default function route(page: string): "my-approval-line-templates-page" | "common-approval-line-templates-page" | "approval-line-list" | "employee-list" | "department-list" | undefined;
1
+ export default function route(page: string): "approval-line-list" | "common-approval-line-templates-page" | "my-approval-line-templates-page" | "employee-list" | "department-list" | undefined;