@things-factory/worklist 10.1.256 → 10.1.258

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.
Files changed (78) hide show
  1. package/dist-client/activity-state-counts.d.ts +3 -3
  2. package/dist-client/activity-state-counts.js +6 -5
  3. package/dist-client/activity-state-counts.js.map +1 -1
  4. package/dist-client/chip-counts.d.ts +1 -1
  5. package/dist-client/chip-counts.js +1 -1
  6. package/dist-client/chip-counts.js.map +1 -1
  7. package/dist-client/chip-filters.d.ts +3 -2
  8. package/dist-client/chip-filters.js +5 -3
  9. package/dist-client/chip-filters.js.map +1 -1
  10. package/dist-client/components/activity-/bowner-view.js +26 -40
  11. package/dist-client/components/activity-/bowner-view.js.map +1 -1
  12. package/dist-client/components/activity-instance-preview.js +37 -49
  13. package/dist-client/components/activity-instance-preview.js.map +1 -1
  14. package/dist-client/components/activity-intro-view.js +26 -40
  15. package/dist-client/components/activity-intro-view.js.map +1 -1
  16. package/dist-client/components/activity-reporter-view.js +26 -40
  17. package/dist-client/components/activity-reporter-view.js.map +1 -1
  18. package/dist-client/components/activity-starter-form.d.ts +2 -3
  19. package/dist-client/components/activity-starter-form.js +52 -64
  20. package/dist-client/components/activity-starter-form.js.map +1 -1
  21. package/dist-client/components/mutation-outcome.d.ts +6 -0
  22. package/dist-client/components/mutation-outcome.js +9 -0
  23. package/dist-client/components/mutation-outcome.js.map +1 -1
  24. package/dist-client/components/say-outcome.d.ts +3 -0
  25. package/dist-client/components/say-outcome.js +3 -0
  26. package/dist-client/components/say-outcome.js.map +1 -1
  27. package/dist-client/entity360/person-open-work-section.d.ts +2 -3
  28. package/dist-client/entity360/person-open-work-section.js +17 -31
  29. package/dist-client/entity360/person-open-work-section.js.map +1 -1
  30. package/dist-client/pages/activity/activity-list-page.d.ts +4 -2
  31. package/dist-client/pages/activity/activity-list-page.js +6 -11
  32. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  33. package/dist-client/pages/activity/activity-page.d.ts +13 -7
  34. package/dist-client/pages/activity/activity-page.js +111 -167
  35. package/dist-client/pages/activity/activity-page.js.map +1 -1
  36. package/dist-client/pages/activity-approval/activity-approval-page.d.ts +14 -8
  37. package/dist-client/pages/activity-approval/activity-approval-page.js +107 -123
  38. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  39. package/dist-client/pages/activity-catalog/activity-catalog-page.d.ts +10 -9
  40. package/dist-client/pages/activity-catalog/activity-catalog-page.js +38 -70
  41. package/dist-client/pages/activity-catalog/activity-catalog-page.js.map +1 -1
  42. package/dist-client/pages/activity-catalog/activity-detail-page.d.ts +6 -6
  43. package/dist-client/pages/activity-catalog/activity-detail-page.js +30 -57
  44. package/dist-client/pages/activity-catalog/activity-detail-page.js.map +1 -1
  45. package/dist-client/pages/activity-instance/activity-instance-list-page.js +2 -2
  46. package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -1
  47. package/dist-client/pages/activity-instance/activity-instance-search-page.d.ts +6 -3
  48. package/dist-client/pages/activity-instance/activity-instance-search-page.js +27 -29
  49. package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -1
  50. package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +15 -8
  51. package/dist-client/pages/activity-instance/activity-instance-start-page.js +130 -239
  52. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
  53. package/dist-client/pages/activity-instance/activity-instance-view.d.ts +2 -2
  54. package/dist-client/pages/activity-instance/activity-instance-view.js +109 -118
  55. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -1
  56. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +15 -6
  57. package/dist-client/pages/activity-thread/activity-thread-page.js +128 -131
  58. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  59. package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +6 -6
  60. package/dist-client/pages/activity-thread/activity-thread-view-page.js +28 -53
  61. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
  62. package/dist-client/pages/todo/approval-done-list-page.d.ts +3 -3
  63. package/dist-client/pages/todo/approval-done-list-page.js +5 -14
  64. package/dist-client/pages/todo/approval-done-list-page.js.map +1 -1
  65. package/dist-client/pages/todo/approval-pending-list-page.d.ts +19 -9
  66. package/dist-client/pages/todo/approval-pending-list-page.js +46 -59
  67. package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -1
  68. package/dist-client/pages/todo/draft-list-page.d.ts +8 -2
  69. package/dist-client/pages/todo/draft-list-page.js +24 -23
  70. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  71. package/dist-client/pages/todo/pickable-list-page.d.ts +3 -3
  72. package/dist-client/pages/todo/pickable-list-page.js +5 -14
  73. package/dist-client/pages/todo/pickable-list-page.js.map +1 -1
  74. package/dist-client/pages/todo/todo-list-page.d.ts +11 -5
  75. package/dist-client/pages/todo/todo-list-page.js +33 -36
  76. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  77. package/dist-client/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +16 -14
@@ -1 +1 @@
1
- {"version":3,"file":"activity-instance-start-page.js","sourceRoot":"","sources":["../../../client/pages/activity-instance/activity-instance-start-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/list-state/ox-page-state.js'\nimport '@operato/property-editor/ox-properties-dynamic-view.js'\nimport '@operato/board/ox-board-viewer.js'\nimport '@things-factory/organization'\nimport '../../components/activity-instance-ribon.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, TemplateResult } from 'lit'\nimport { DirectiveResult } from 'lit-html/directive.js'\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { ranMutation } from '../../components/say-outcome.js'\nimport { offersDiscard } from './discard-offer.js'\nimport { navigate, PageView } from '@operato/shell'\nimport { OxPrompt } from '@operato/popup'\nimport { CommonButtonStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { provider } from '@operato/board/board-provider.js'\nimport { notify } from '@operato/layout'\n\n@customElement('activity-instance-start-page')\nexport class ActivityInstanceStartPage extends localize(i18next)(PageView) {\n static styles = [\n /*\n * The frame owns the page shell; what the task draws is the content it sizes (ADR-0060\n * decision 8). `ox-board-viewer` asks for `height: 100%`, which needs a settled box around it.\n */\n WorkSurfacePageStyles,\n ScrollbarStyles,\n css`\n\n ox-board-viewer {\n width: 100%;\n height: 100%;\n }\n\n #custom-content {\n flex: 1;\n }\n `\n ]\n\n @state() activity: any = {}\n @state() activityInstance: any = {}\n @state() board: any\n @state() customHtmlElement: any\n @state() loaded = false\n @state() loadError: unknown = null\n\n /** The id this screen last read, so retry asks for the same task. */\n private lastId?: string\n\n @query('ox-board-viewer') viewer: any\n\n get context() {\n const { startingType } = this.activity\n const { state } = this.activityInstance\n\n const issuable = state === 'draft'\n\n return {\n title: this.lifecycle?.params?.['title'] || i18next.t('title.activity'),\n help: 'worklist/activity-instance-start-page',\n /*\n * 이 화면은 메뉴에 없다 — 「작성 중」에서 줄을 눌러 들어온다. 그래서 왼쪽 메뉴가 가리킬\n * 항목이 없고, 표시가 사라져 들어온 사람이 자기가 어디에 있는지 잃는다.\n *\n * 어느 목록에서 열리는지는 이 화면이 안다. 그것을 적어 둔다.\n */\n menu: 'draft-list',\n actions: [\n offersDiscard(this.activityInstance) && {\n title: i18next.t('button.discard-draft'),\n action: this.discardDraft.bind(this),\n ...CommonButtonStyles.delete\n },\n issuable && {\n title: i18next.t('button.draft'),\n action: this.draftActivityInstance.bind(this),\n ...CommonButtonStyles.save\n },\n issuable && {\n title: i18next.t(startingType == 'issue' ? 'button.issue' : 'button.post'),\n action: this.issueActivityInstance.bind(this),\n ...CommonButtonStyles.submit\n }\n ].filter(Boolean /* truthy only */)\n // activityInstance: this.activityInstance\n }\n }\n\n render() {\n /*\n * Reading and failing both drew the same empty ribbon, so a task that could not be read looked\n * like a task with nothing in it (ADR-0060 decision 8).\n */\n return html`<ox-page-state\n .loading=${!this.loaded && !this.loadError}\n .error=${this.loadError}\n @retry=${() => this.lastId && this.fetchActivityInstance(this.lastId)}\n >${this.renderActivity()}</ox-page-state\n >`\n }\n\n renderActivity() {\n return html`\n <activity-instance-ribon .activityInstance=${this.activityInstance}></activity-instance-ribon>\n\n <div class=\"page-fill\">${this.activityContent()}</div>\n `\n }\n\n activityContent(): DirectiveResult {\n switch (this.activityInstance?.uiType) {\n case 'template':\n return this.templateContent()\n case 'generated':\n return this.generatedContent()\n case 'board':\n return this.boardContent()\n case 'custom-element':\n return this.customElementContent()\n case 'page':\n case 'external':\n default:\n return html``\n }\n }\n\n templateContent() {\n if (!this.activityInstance) {\n return html``\n }\n\n const { uiSource: template } = this.activityInstance\n return unsafeHTML(template)\n }\n\n getInputSpec() {\n const model = this.activity?.model\n\n return (model || [])\n .filter(item => item.inout === 'in' || item.inout === 'inout')\n .map(item => {\n return { ...item, name: item.tag, label: item.tKey || item.name, property: item.options }\n })\n }\n\n getOutputSpec() {\n const model = this.activity?.model\n\n return (model || [])\n .filter(item => item.inout === 'inout' || item.inout === 'out')\n .map(item => {\n return { ...item, name: item.tag, label: item.tKey || item.name, property: item.options }\n })\n }\n\n generatedContent(): DirectiveResult {\n if (!this.activityInstance) {\n return html``\n }\n\n var { input, output } = this.activityInstance || {}\n\n const inputSpec = this.getInputSpec()\n const outputSpec = this.getOutputSpec()\n\n if (!output) {\n output = inputSpec\n .filter(item => item.inout === 'inout')\n .reduce((inout, item) => {\n inout[item.name] = input?.[item.name]\n return inout\n }, {})\n }\n\n return keyed(\n this.activityInstance.id,\n html`\n <fieldset>\n <legend>Input</legend>\n <ox-properties-dynamic-view\n data-name=\"input\"\n .props=${inputSpec}\n .value=${input}\n @property-change=${e => (this.activityInstance.input = e.currentTarget.value)}\n ></ox-properties-dynamic-view>\n </fieldset>\n\n <fieldset>\n <legend>Output</legend>\n <ox-properties-dynamic-view\n data-name=\"output\"\n .props=${outputSpec}\n .value=${output}\n @property-change=${e => (this.activityInstance.output = e.currentTarget.value)}\n ></ox-properties-dynamic-view>\n </fieldset>\n `\n )\n }\n\n boardContent(): DirectiveResult {\n if (!this.activityInstance) {\n return html``\n }\n\n const { uiSource: boardId, input, output } = this.activityInstance\n\n if (!this.board || this.board.id !== boardId) {\n this.board = { id: boardId }\n }\n\n /* \n ox-board-viewer에서 provider에 의해 공급되는 board가 각 id별로 instance를 하나씩 밖에 가지지 않으므로,\n 동일한 id의 보드를 다른 page에 뺏기는 경우가 있다.\n 따라서, Page가 active될 때마다 타임스탬프를 refresh key로 설정하였다.\n */\n return keyed(\n this.activityInstance.id,\n html`\n <ox-board-viewer\n style=\"background-color: white;\"\n .board=${this.board}\n .provider=${provider}\n .values=${{ ...input, ...output }}\n hide-fullscreen\n hide-navigation\n ></ox-board-viewer>\n `\n )\n }\n\n customElementContent() {\n if (!this.activityInstance) {\n return html``\n }\n\n const { uiSource: tagName, input, output } = this.activityInstance\n\n if (!this.customHtmlElement) {\n const element = document.createElement(tagName)\n element.id = 'custom-content'\n element.activityId = this.activityInstance.activity.id\n element.input = input\n element.output = output\n\n element.addEventListener('change-input', (e: CustomEvent) => {\n this.activityInstance.input = e.detail\n })\n element.addEventListener('change-output', (e: CustomEvent) => {\n this.activityInstance.output = e.detail\n })\n\n /* DEPRECATED 일반적으로 output만 수정될 가능성이 높기때문에, change 이벤트는 output을 수정하는 것으로 한다. */\n element.addEventListener('change', (e: CustomEvent) => {\n this.activityInstance.output = e.detail\n })\n\n this.customHtmlElement = element\n }\n\n return this.customHtmlElement\n }\n\n getInOutFromBoard() {\n const inputSpec = this.getInputSpec()\n const outputSpec = this.getOutputSpec()\n const data = this.viewer?.getSceneValues() || {}\n\n const input = inputSpec.reduce((input, spec) => {\n input[spec.name] = data[spec.name]\n return input\n }, {})\n\n const output = outputSpec.reduce((output, spec) => {\n output[spec.name] = data[spec.name]\n return output\n }, {})\n\n return [input, output]\n }\n\n updated(changes) {\n if (changes.has('activityInstance')) {\n this.updateContext()\n }\n }\n\n async pageUpdated(changes, lifecycle, changedBefore) {\n if (this.active && lifecycle.resourceId) {\n this.fetchActivityInstance(lifecycle.resourceId)\n } else {\n this.customHtmlElement = undefined\n }\n }\n\n async fetchActivityInstance(id) {\n this.lastId = id\n this.loadError = null\n\n try {\n const response = await client.query({\n query: gql`\n query activityInstance($id: String!) {\n activityInstance(id: $id) {\n id\n name\n description\n state\n activity {\n id\n startingType\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n }\n thumbnail\n input\n output\n uiType\n uiSource\n approvalLine {\n type\n value\n participation\n notifyAfter\n approver {\n id\n name\n description\n controlNo\n }\n }\n dueAt\n createdAt\n }\n }\n `,\n variables: { id }\n })\n\n if (response.errors?.length || !response.data?.activityInstance) {\n throw (\n response.errors?.[0] || new Error(i18next.t('error.activity-instance not found', { activityInstance: id }))\n )\n }\n\n this.customHtmlElement = undefined\n this.activityInstance = response.data.activityInstance\n this.activity = this.activityInstance.activity\n this.loaded = true\n } catch (error) {\n this.loadError = error\n }\n }\n\n /* Asked once, since a discarded draft cannot come back; then back to the list it was opened from. */\n async discardDraft() {\n const { id } = this.activityInstance || {}\n\n const sure = await OxPrompt.open({\n type: 'warning',\n title: i18next.t('text.discard-draft-confirm'),\n text: i18next.t('text.discard-draft-for-good'),\n confirmButton: { text: i18next.t('button.discard-draft'), destructive: true },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n\n if (!sure) return\n\n const outcome = await ranMutation(() =>\n client.mutate({\n mutation: gql`\n mutation ($id: String!) {\n deleteDraftActivityInstance(id: $id)\n }\n `,\n variables: { id }\n })\n )\n\n if (outcome.ok) {\n notify({ message: i18next.t('text.draft-discarded') })\n navigate('draft-list')\n }\n }\n\n async draftActivityInstance() {\n var { id: activityId } = this.activity\n var {\n id,\n name,\n description,\n priority,\n threadsMin,\n threadsMax,\n dueAt,\n input,\n output,\n reason,\n uiType,\n assignees,\n approvalLine\n } = this.activityInstance\n\n if (uiType === 'board') {\n ;[input, output] = this.getInOutFromBoard()\n }\n\n name ||= this.activity.name\n description ||= this.activity.description\n assignees ||= this.activity.assignees\n approvalLine ||= this.activity.approvalLine\n\n var activityInstance = {\n id,\n activityId,\n name,\n description,\n priority,\n threadsMax,\n threadsMin,\n dueAt,\n input,\n output,\n reason,\n assignees,\n approvalLine\n }\n\n const outcome = await ranMutation(() =>\n client.mutate({\n mutation: gql`\n mutation ($activityInstance: ActivityInstanceDraft!) {\n draftActivityInstance(activityInstance: $activityInstance) {\n id\n name\n description\n input\n output\n state\n activity {\n id\n startingType\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n }\n assignees {\n type\n value\n assignee {\n id\n name\n description\n controlNo\n }\n }\n approvalLine {\n type\n value\n participation\n notifyAfter\n approver {\n id\n name\n description\n controlNo\n }\n }\n uiType\n uiSource\n threadsMin\n threadsMax\n }\n }\n `,\n variables: { activityInstance }\n })\n )\n\n if (!outcome.ok) {\n return\n }\n\n this.customHtmlElement = undefined\n this.activityInstance = outcome.data.draftActivityInstance\n this.activity = this.activityInstance.activity\n\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.draft')}`\n })\n })\n }\n\n async issueActivityInstance() {\n var {\n id,\n name,\n description,\n input,\n output,\n reason,\n uiType,\n threadsMin = 0,\n threadsMax = 0,\n assignees,\n approvalLine\n } = this.activityInstance\n\n if (uiType === 'board') {\n ;[input, output] = this.getInOutFromBoard()\n }\n\n const activityInstance = {\n id,\n name: name || this.activity.name,\n description: description || this.activity.description,\n threadsMin,\n threadsMax,\n input,\n output,\n reason,\n assignees,\n approvalLine\n }\n\n const outcome = await ranMutation(() =>\n client.mutate({\n mutation: gql`\n mutation ($activityInstance: ActivityInstanceIssue!) {\n issueActivityInstance(activityInstance: $activityInstance) {\n id\n name\n description\n input\n output\n state\n activity {\n id\n startingType\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n }\n assignees {\n type\n value\n assignee {\n id\n name\n description\n controlNo\n }\n }\n approvalLine {\n type\n value\n participation\n notifyAfter\n approver {\n id\n name\n description\n controlNo\n }\n }\n uiType\n uiSource\n threadsMin\n threadsMax\n }\n }\n `,\n variables: { activityInstance }\n })\n )\n\n if (!outcome.ok) {\n return\n }\n\n this.customHtmlElement = undefined\n this.activityInstance = outcome.data.issueActivityInstance\n this.activity = this.activityInstance.activity\n\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.assign')}`\n })\n })\n }\n}\n"]}
1
+ {"version":3,"file":"activity-instance-start-page.js","sourceRoot":"","sources":["../../../client/pages/activity-instance/activity-instance-start-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/list-state/ox-page-state.js'\nimport '@operato/property-editor/ox-properties-dynamic-view.js'\nimport '@operato/board/ox-board-viewer.js'\nimport '@things-factory/organization'\nimport '../../components/activity-instance-ribon.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, TemplateResult } from 'lit'\nimport { DirectiveResult } from 'lit-html/directive.js'\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { client, MutationController, QueryController } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { mutationOutcome } from '../../components/mutation-outcome.js'\nimport { ranMutation, sayFailure } from '../../components/say-outcome.js'\nimport { offersDiscard } from './discard-offer.js'\nimport { navigate, PageView, DraftController } from '@operato/shell'\nimport { OxPrompt } from '@operato/popup'\nimport { CommonButtonStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { provider } from '@operato/board/board-provider.js'\nimport { notify } from '@operato/layout'\n\n@customElement('activity-instance-start-page')\nexport class ActivityInstanceStartPage extends localize(i18next)(PageView) {\n static styles = [\n /*\n * The frame owns the page shell; what the task draws is the content it sizes (ADR-0060\n * decision 8). `ox-board-viewer` asks for `height: 100%`, which needs a settled box around it.\n */\n WorkSurfacePageStyles,\n ScrollbarStyles,\n css`\n\n ox-board-viewer {\n width: 100%;\n height: 100%;\n }\n\n #custom-content {\n flex: 1;\n }\n `\n ]\n\n @state() board: any\n @state() customHtmlElement: any\n /** The task read the custom element was made for: another answer makes it again. */\n private customFor?: any\n\n /** The draft task the address names. */\n @state() private instanceId = ''\n\n /* The draft task shown, read for the id the address names (ADR-0190). */\n private record = new QueryController(\n this,\n gql`\n query activityInstance($id: String!) {\n activityInstance(id: $id) {\n id\n name\n description\n state\n activity {\n id\n startingType\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n }\n thumbnail\n input\n output\n uiType\n uiSource\n approvalLine {\n type\n value\n participation\n notifyAfter\n approver {\n id\n name\n description\n controlNo\n }\n }\n dueAt\n createdAt\n }\n }\n `,\n { variables: () => (this.instanceId ? { id: this.instanceId } : undefined) }\n )\n\n /* What is written here over the task read; another task drops it (ADR-0190 decision 2). */\n private draft = new DraftController<{ input: any; output: any }>(this, {\n read: () => this.activityInstance,\n key: () => this.instanceId\n })\n\n /*\n * The changes made here: each reads what it changed again once done. This screen says its own failure\n * (sayFailure), so the GraphQL link stays quiet about it (ADR-0190).\n */\n private saveDraft = new MutationController(\n this,\n gql`\n mutation ($activityInstance: ActivityInstanceDraft!) {\n draftActivityInstance(activityInstance: $activityInstance) {\n id\n }\n }\n `,\n { refetch: () => [this.record], showsError: true }\n )\n\n private issue = new MutationController(\n this,\n gql`\n mutation ($activityInstance: ActivityInstanceIssue!) {\n issueActivityInstance(activityInstance: $activityInstance) {\n id\n }\n }\n `,\n { refetch: () => [this.record], showsError: true }\n )\n\n get activityInstance(): any {\n return this.record.data?.activityInstance ?? {}\n }\n\n get activity(): any {\n return this.activityInstance.activity ?? {}\n }\n\n get loaded(): boolean {\n return this.record.data !== undefined\n }\n\n /** Why the task could not be read - ox-page-state says it, with retry (ADR-0060 decision 8). */\n get loadError(): unknown {\n return (\n this.record.error ??\n (this.loaded && !this.record.data?.activityInstance\n ? new Error(i18next.t('error.activity-instance not found', { activityInstance: this.instanceId }))\n : null)\n )\n }\n\n @query('ox-board-viewer') viewer: any\n\n get context() {\n const { startingType } = this.activity\n const { state } = this.activityInstance\n\n const issuable = state === 'draft'\n\n return {\n title: this.lifecycle?.params?.['title'] || i18next.t('title.activity'),\n help: 'worklist/activity-instance-start-page',\n /*\n * 이 화면은 메뉴에 없다 — 「작성 중」에서 줄을 눌러 들어온다. 그래서 왼쪽 메뉴가 가리킬\n * 항목이 없고, 표시가 사라져 들어온 사람이 자기가 어디에 있는지 잃는다.\n *\n * 어느 목록에서 열리는지는 이 화면이 안다. 그것을 적어 둔다.\n */\n menu: 'draft-list',\n actions: [\n offersDiscard(this.activityInstance) && {\n title: i18next.t('button.discard-draft'),\n action: this.discardDraft.bind(this),\n ...CommonButtonStyles.delete\n },\n issuable && {\n title: i18next.t('button.draft'),\n action: this.draftActivityInstance.bind(this),\n ...CommonButtonStyles.save\n },\n issuable && {\n title: i18next.t(startingType == 'issue' ? 'button.issue' : 'button.post'),\n action: this.issueActivityInstance.bind(this),\n ...CommonButtonStyles.submit\n }\n ].filter(Boolean /* truthy only */)\n // activityInstance: this.activityInstance\n }\n }\n\n render() {\n /*\n * Reading and failing both drew the same empty ribbon, so a task that could not be read looked\n * like a task with nothing in it (ADR-0060 decision 8).\n */\n return html`<ox-page-state\n .loading=${!this.loaded && !this.loadError}\n .error=${this.loadError}\n @retry=${() => this.record.refetch()}\n >${this.renderActivity()}</ox-page-state\n >`\n }\n\n renderActivity() {\n return html`\n <activity-instance-ribon .activityInstance=${this.activityInstance}></activity-instance-ribon>\n\n <div class=\"page-fill\">${this.activityContent()}</div>\n `\n }\n\n activityContent(): DirectiveResult {\n switch (this.activityInstance?.uiType) {\n case 'template':\n return this.templateContent()\n case 'generated':\n return this.generatedContent()\n case 'board':\n return this.boardContent()\n case 'custom-element':\n return this.customElementContent()\n case 'page':\n case 'external':\n default:\n return html``\n }\n }\n\n templateContent() {\n if (!this.activityInstance) {\n return html``\n }\n\n const { uiSource: template } = this.activityInstance\n return unsafeHTML(template)\n }\n\n getInputSpec() {\n const model = this.activity?.model\n\n return (model || [])\n .filter(item => item.inout === 'in' || item.inout === 'inout')\n .map(item => {\n return { ...item, name: item.tag, label: item.tKey || item.name, property: item.options }\n })\n }\n\n getOutputSpec() {\n const model = this.activity?.model\n\n return (model || [])\n .filter(item => item.inout === 'inout' || item.inout === 'out')\n .map(item => {\n return { ...item, name: item.tag, label: item.tKey || item.name, property: item.options }\n })\n }\n\n generatedContent(): DirectiveResult {\n if (!this.activityInstance) {\n return html``\n }\n\n var input = this.draft.value('input')\n var output = this.draft.value('output')\n\n const inputSpec = this.getInputSpec()\n const outputSpec = this.getOutputSpec()\n\n if (!output) {\n output = inputSpec\n .filter(item => item.inout === 'inout')\n .reduce((inout, item) => {\n inout[item.name] = input?.[item.name]\n return inout\n }, {})\n }\n\n return keyed(\n this.activityInstance.id,\n html`\n <fieldset>\n <legend>Input</legend>\n <ox-properties-dynamic-view\n data-name=\"input\"\n .props=${inputSpec}\n .value=${input}\n @property-change=${e => this.draft.set('input', e.currentTarget.value)}\n ></ox-properties-dynamic-view>\n </fieldset>\n\n <fieldset>\n <legend>Output</legend>\n <ox-properties-dynamic-view\n data-name=\"output\"\n .props=${outputSpec}\n .value=${output}\n @property-change=${e => this.draft.set('output', e.currentTarget.value)}\n ></ox-properties-dynamic-view>\n </fieldset>\n `\n )\n }\n\n boardContent(): DirectiveResult {\n if (!this.activityInstance) {\n return html``\n }\n\n const { uiSource: boardId } = this.activityInstance\n const input = this.draft.value('input')\n const output = this.draft.value('output')\n\n if (!this.board || this.board.id !== boardId) {\n this.board = { id: boardId }\n }\n\n /* \n ox-board-viewer에서 provider에 의해 공급되는 board가 각 id별로 instance를 하나씩 밖에 가지지 않으므로,\n 동일한 id의 보드를 다른 page에 뺏기는 경우가 있다.\n 따라서, Page가 active될 때마다 타임스탬프를 refresh key로 설정하였다.\n */\n return keyed(\n this.activityInstance.id,\n html`\n <ox-board-viewer\n style=\"background-color: white;\"\n .board=${this.board}\n .provider=${provider}\n .values=${{ ...input, ...output }}\n hide-fullscreen\n hide-navigation\n ></ox-board-viewer>\n `\n )\n }\n\n customElementContent() {\n if (!this.activityInstance) {\n return html``\n }\n\n const { uiSource: tagName } = this.activityInstance\n\n if (!this.customHtmlElement || this.customFor !== this.activityInstance) {\n const element = document.createElement(tagName)\n element.id = 'custom-content'\n element.activityId = this.activityInstance.activity.id\n element.input = this.draft.value('input')\n element.output = this.draft.value('output')\n\n element.addEventListener('change-input', (e: CustomEvent) => this.draft.set('input', e.detail))\n element.addEventListener('change-output', (e: CustomEvent) => this.draft.set('output', e.detail))\n\n /* DEPRECATED 일반적으로 output만 수정될 가능성이 높기때문에, change 이벤트는 output을 수정하는 것으로 한다. */\n element.addEventListener('change', (e: CustomEvent) => this.draft.set('output', e.detail))\n\n this.customHtmlElement = element\n this.customFor = this.activityInstance\n }\n\n return this.customHtmlElement\n }\n\n getInOutFromBoard() {\n const inputSpec = this.getInputSpec()\n const outputSpec = this.getOutputSpec()\n const data = this.viewer?.getSceneValues() || {}\n\n const input = inputSpec.reduce((input, spec) => {\n input[spec.name] = data[spec.name]\n return input\n }, {})\n\n const output = outputSpec.reduce((output, spec) => {\n output[spec.name] = data[spec.name]\n return output\n }, {})\n\n return [input, output]\n }\n\n async pageUpdated(changes, lifecycle, changedBefore) {\n if (this.active && lifecycle.resourceId) {\n this.instanceId = lifecycle.resourceId\n } else {\n this.customHtmlElement = undefined\n }\n }\n\n /** What this task takes and gives: the board's values, or what was written over the task read. */\n private inOutToSend() {\n return this.activityInstance.uiType === 'board'\n ? this.getInOutFromBoard()\n : [this.draft.value('input'), this.draft.value('output')]\n }\n\n /* Asked once, since a discarded draft cannot come back; then back to the list it was opened from. */\n async discardDraft() {\n const { id } = this.activityInstance || {}\n\n const sure = await OxPrompt.open({\n type: 'warning',\n title: i18next.t('text.discard-draft-confirm'),\n text: i18next.t('text.discard-draft-for-good'),\n confirmButton: { text: i18next.t('button.discard-draft'), destructive: true },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n\n if (!sure) return\n\n const outcome = await ranMutation(() =>\n client.mutate({\n mutation: gql`\n mutation ($id: String!) {\n deleteDraftActivityInstance(id: $id)\n }\n `,\n variables: { id }\n })\n )\n\n if (outcome.ok) {\n /* The draft is gone, and what was written on it with it: leaving asks about nothing. */\n this.draft.reset()\n notify({ message: i18next.t('text.draft-discarded') })\n navigate('draft-list')\n }\n }\n\n /*\n * Each change sends what is written now and reads the task again once it went through; its answer is not kept\n * (ADR-0190 decision 2). The edits sent are cleared then, and a failure keeps them.\n */\n async draftActivityInstance() {\n var { id: activityId } = this.activity\n var { id, name, description, priority, threadsMin, threadsMax, dueAt, reason, assignees, approvalLine } =\n this.activityInstance\n const [input, output] = this.inOutToSend()\n\n name ||= this.activity.name\n description ||= this.activity.description\n assignees ||= this.activity.assignees\n approvalLine ||= this.activity.approvalLine\n\n var activityInstance = {\n id,\n activityId,\n name,\n description,\n priority,\n threadsMax,\n threadsMin,\n dueAt,\n input,\n output,\n reason,\n assignees,\n approvalLine\n }\n\n const drafted = await this.draft.submit(() => this.saveDraft.run({ activityInstance }))\n\n if (!drafted) {\n sayFailure(mutationOutcome(this.saveDraft.error))\n return\n }\n\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.draft')}`\n })\n })\n }\n\n async issueActivityInstance() {\n var { id, name, description, reason, threadsMin = 0, threadsMax = 0, assignees, approvalLine } =\n this.activityInstance\n const [input, output] = this.inOutToSend()\n\n const activityInstance = {\n id,\n name: name || this.activity.name,\n description: description || this.activity.description,\n threadsMin,\n threadsMax,\n input,\n output,\n reason,\n assignees,\n approvalLine\n }\n\n const issued = await this.draft.submit(() => this.issue.run({ activityInstance }))\n\n if (!issued) {\n sayFailure(mutationOutcome(this.issue.error))\n return\n }\n\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.assign')}`\n })\n })\n }\n}\n"]}
@@ -7,7 +7,8 @@ declare const ActivityInstanceView_base: (new (...args: any[]) => LitElement) &
7
7
  export declare class ActivityInstanceView extends ActivityInstanceView_base {
8
8
  static styles: import("lit").CSSResult[];
9
9
  activityInstanceId?: string;
10
- activityInstance?: ActivityInstance;
10
+ private instance;
11
+ get activityInstance(): ActivityInstance | undefined;
11
12
  render(): import("lit-html").TemplateResult<1>;
12
13
  /**
13
14
  * What was asked - the same drawing the task and approval screens use.
@@ -31,6 +32,5 @@ export declare class ActivityInstanceView extends ActivityInstanceView_base {
31
32
  */
32
33
  renderWritten(output: any): import("lit-html").TemplateResult<1> | typeof nothing;
33
34
  updated(changes: any): void;
34
- fetchActivityInstance(): Promise<void>;
35
35
  }
36
36
  export {};
@@ -2,14 +2,13 @@ import { __decorate, __metadata } from "tslib";
2
2
  import '@things-factory/organization/dist-client/component/approval-line-view.js';
3
3
  import gql from 'graphql-tag';
4
4
  import { css, html, LitElement, nothing } from 'lit';
5
- import { customElement, property, state } from 'lit/decorators.js';
6
- import { client } from '@operato/graphql';
5
+ import { customElement, property } from 'lit/decorators.js';
6
+ import { QueryController } from '@operato/graphql';
7
7
  import { i18next, localize } from '@operato/i18n';
8
8
  import { ScrollbarStyles } from '@operato/styles';
9
9
  import { ActivityFieldsStyles, declaredLabel, inputSpecOf, outputSpecOf, renderGiven } from '../../components/activity-fields.js';
10
10
  import { DecisionContentStyles, DecisionKeysFields, renderDecision } from '../../components/decision-content.js';
11
11
  import { WorklistStateColors } from '../../components/state-ribon.js';
12
- import { ActivityInstance } from '../../types/activity-instance.js';
13
12
  import { entity360Name } from '@operato/layout';
14
13
  function getSafeFormatter(locale, options) {
15
14
  try {
@@ -23,6 +22,109 @@ function getSafeFormatter(locale, options) {
23
22
  }
24
23
  const formatter = getSafeFormatter(navigator.language, { dateStyle: 'full', timeStyle: 'short' });
25
24
  let ActivityInstanceView = class ActivityInstanceView extends localize(i18next)(LitElement) {
25
+ constructor() {
26
+ super(...arguments);
27
+ /* The instance the id names (ADR-0190). */
28
+ this.instance = new QueryController(this, gql `
29
+ query ($id: String!) {
30
+ activityInstance(id: $id) {
31
+ id
32
+ name
33
+ description
34
+ state
35
+ key01
36
+ key02
37
+ key03
38
+ key04
39
+ key05
40
+ input
41
+ output
42
+ issuer {
43
+ id
44
+ name
45
+ email
46
+ }
47
+ starter {
48
+ name
49
+ email
50
+ }
51
+ activity {
52
+ id
53
+ name
54
+ description
55
+ searchKeys {
56
+ name
57
+ description
58
+ inputKey
59
+ tKey
60
+ }
61
+ ${DecisionKeysFields}
62
+ model {
63
+ name
64
+ description
65
+ active
66
+ tag
67
+ inout
68
+ type
69
+ unit
70
+ options
71
+ quantifier
72
+ spec
73
+ hidden
74
+ }
75
+ }
76
+ approvalLine {
77
+ type
78
+ participation
79
+ notifyAfter
80
+ value
81
+ approver {
82
+ id
83
+ name
84
+ description
85
+ controlNo
86
+ }
87
+ }
88
+ activityThreads {
89
+ state
90
+ transaction
91
+ output
92
+ assignee {
93
+ id
94
+ name
95
+ email
96
+ }
97
+ round
98
+ activityApprovals {
99
+ round
100
+ order
101
+ approver {
102
+ id
103
+ name
104
+ email
105
+ }
106
+ judgment
107
+ participation
108
+ comment
109
+ createdAt
110
+ terminatedAt
111
+ }
112
+ assignedAt
113
+ startedAt
114
+ terminatedAt
115
+ }
116
+ updater {
117
+ id
118
+ name
119
+ }
120
+ assignedAt
121
+ startedAt
122
+ terminatedAt
123
+ updatedAt
124
+ }
125
+ }
126
+ `, { variables: () => (this.activityInstanceId ? { id: this.activityInstanceId } : undefined) });
127
+ }
26
128
  static { this.styles = [
27
129
  ScrollbarStyles,
28
130
  WorklistStateColors,
@@ -205,6 +307,9 @@ let ActivityInstanceView = class ActivityInstanceView extends localize(i18next)(
205
307
  }
206
308
  `
207
309
  ]; }
310
+ get activityInstance() {
311
+ return this.instance.data?.activityInstance;
312
+ }
208
313
  render() {
209
314
  if (!this.activityInstance) {
210
315
  return html `<div>no activity instance info.</div>`;
@@ -362,118 +467,8 @@ let ActivityInstanceView = class ActivityInstanceView extends localize(i18next)(
362
467
  </div>`
363
468
  : nothing;
364
469
  }
470
+ /* The colour of the header follows the state of the instance shown. */
365
471
  updated(changes) {
366
- if (changes.has('activityInstanceId')) {
367
- this.fetchActivityInstance();
368
- }
369
- }
370
- async fetchActivityInstance() {
371
- const id = this.activityInstanceId;
372
- const response = await client.query({
373
- query: gql `
374
- query ($id: String!) {
375
- activityInstance(id: $id) {
376
- id
377
- name
378
- description
379
- state
380
- key01
381
- key02
382
- key03
383
- key04
384
- key05
385
- input
386
- output
387
- issuer {
388
- id
389
- name
390
- email
391
- }
392
- starter {
393
- name
394
- email
395
- }
396
- activity {
397
- id
398
- name
399
- description
400
- searchKeys {
401
- name
402
- description
403
- inputKey
404
- tKey
405
- }
406
- ${DecisionKeysFields}
407
- model {
408
- name
409
- description
410
- active
411
- tag
412
- inout
413
- type
414
- unit
415
- options
416
- quantifier
417
- spec
418
- hidden
419
- }
420
- }
421
- approvalLine {
422
- type
423
- participation
424
- notifyAfter
425
- value
426
- approver {
427
- id
428
- name
429
- description
430
- controlNo
431
- }
432
- }
433
- activityThreads {
434
- state
435
- transaction
436
- output
437
- assignee {
438
- id
439
- name
440
- email
441
- }
442
- round
443
- activityApprovals {
444
- round
445
- order
446
- approver {
447
- id
448
- name
449
- email
450
- }
451
- judgment
452
- participation
453
- comment
454
- createdAt
455
- terminatedAt
456
- }
457
- assignedAt
458
- startedAt
459
- terminatedAt
460
- }
461
- updater {
462
- id
463
- name
464
- }
465
- assignedAt
466
- startedAt
467
- terminatedAt
468
- updatedAt
469
- }
470
- }
471
- `,
472
- variables: {
473
- id
474
- }
475
- });
476
- this.activityInstance = response.data.activityInstance;
477
472
  this.setAttribute('state', this.activityInstance?.state || '');
478
473
  }
479
474
  };
@@ -484,10 +479,6 @@ __decorate([
484
479
  }),
485
480
  __metadata("design:type", String)
486
481
  ], ActivityInstanceView.prototype, "activityInstanceId", void 0);
487
- __decorate([
488
- state(),
489
- __metadata("design:type", ActivityInstance)
490
- ], ActivityInstanceView.prototype, "activityInstance", void 0);
491
482
  ActivityInstanceView = __decorate([
492
483
  customElement('activity-instance-view')
493
484
  ], ActivityInstanceView);
@@ -1 +1 @@
1
- {"version":3,"file":"activity-instance-view.js","sourceRoot":"","sources":["../../../client/pages/activity-instance/activity-instance-view.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/organization/dist-client/component/approval-line-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport { ActivityFieldsStyles, declaredLabel, inputSpecOf, outputSpecOf, renderGiven } from '../../components/activity-fields.js'\nimport { DecisionContentStyles, DecisionKeysFields, renderDecision } from '../../components/decision-content.js'\nimport { WorklistStateColors } from '../../components/state-ribon.js'\nimport { ActivityInstance } from '../../types/activity-instance.js'\nimport { ActivityThread } from '../../types/activity-thread.js'\nimport { ActivityApproval } from '../../types/activity-approval.js'\nimport { entity360Name } from '@operato/layout'\n\nfunction getSafeFormatter(locale: string, options: Intl.DateTimeFormatOptions): Intl.DateTimeFormat {\n try {\n const safeLocale = locale || 'en-US'\n return new Intl.DateTimeFormat(safeLocale, options)\n } catch (e) {\n console.warn(`Invalid locale or options provided: ${locale}, falling back to default en-US.`, e)\n return new Intl.DateTimeFormat('en-US', options)\n }\n}\n\nconst formatter = getSafeFormatter(navigator.language, { dateStyle: 'full', timeStyle: 'short' })\n@customElement('activity-instance-view')\nexport class ActivityInstanceView extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n WorklistStateColors,\n ActivityFieldsStyles,\n DecisionContentStyles,\n css`\n :host {\n display: flex;\n overflow: auto;\n font-size: var(--fontsize-default);\n }\n [instance-container] {\n flex: 1;\n background-color: var(--md-sys-color-background);\n border-right: var(--border-dim-color);\n padding: var(--spacing-large);\n color: var(--md-sys-color-secondary);\n }\n [thread-container] {\n flex: 2;\n padding: var(--spacing-large);\n }\n [instance-container] div {\n margin-bottom: var(--spacing-medium);\n padding-bottom: var(--spacing-medium);\n border-bottom: var(--border-dim-color);\n }\n /* The state speaks through the icon's colour on a quiet disc, as in the ribbons - a filled disc\n under an on-primary icon read under 3:1 for three states. */\n [header] md-icon {\n background-color: var(--md-sys-color-surface-container-high);\n float: left;\n margin-right: var(--spacing-medium);\n padding: var(--spacing-medium);\n border-radius: 50%;\n float: left;\n font-size: 1.8em;\n color: var(--worklist-state-color, var(--ui-muted, #57676f));\n }\n [header] strong {\n display: block;\n font: bold 22px / 1.1 var(--theme-font);\n }\n [header] {\n overflow: hidden;\n font-size: var(--fontsize-small);\n }\n [instance-container] div label {\n display: inline-block;\n margin-right: var(--spacing-medium);\n min-width: 50px;\n }\n [issuer] md-icon {\n opacity: 0.5;\n position: relative;\n top: 4px;\n font-size: 20px;\n }\n span[status] {\n width: 15px;\n height: 15px;\n position: relative;\n top: 2px;\n background-color: var(--worklist-state-color, var(--ui-muted, #57676f));\n display: inline-block;\n margin-right: var(--spacing-small);\n border-radius: 50%;\n }\n [thread-container] table {\n width: 100%;\n border-collapse: collapse;\n }\n [thread-container] th {\n color: var(--md-sys-color-on-primary-container);\n background-color: var(--md-sys-color-primary-container);\n border-top: var(--grid-header-top-border);\n border-bottom: var(--grid-header-bottom-border);\n padding: var(--grid-header-padding);\n text-overflow: ellipsis;\n font: var(--grid-header-font);\n }\n [thread-container] td {\n padding: var(--spacing-small);\n border-bottom: var(--grid-record-border-bottom);\n }\n [assignee] * {\n vertical-align: middle;\n }\n [assignee] md-icon {\n opacity: 0.5;\n }\n [subtitle] {\n display: block;\n margin: var(--spacing-large) 0 var(--spacing-small) 0;\n padding: var(--spacing-small) var(--spacing-medium);\n color: var(--md-sys-color-on-surface);\n background-color: var(--md-sys-color-surface-variant);\n font: bold 16px var(--theme-font);\n border: 2px solid var(--md-sys-color-outline);\n border-radius: 999px;\n }\n [timeline] ol {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n [timeline] li {\n display: flex;\n }\n [timeline] [info] {\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-variant);\n\n flex: 1;\n }\n [timeline] [date] {\n opacity: 0.7;\n width: 130px;\n font-size: var(--fontsize-small);\n }\n [timeline] [info] strong {\n float: right;\n }\n [timeline] [status] {\n margin: 0 var(--spacing-small);\n display: block;\n border-radius: 50%;\n width: 12px;\n height: 12px;\n position: relative;\n top: 3px;\n /* The ring separates the dot from the line behind it, so it is the page's own colour. */\n border: 2px solid var(--md-sys-color-surface);\n background-color: var(--worklist-state-color, var(--ui-muted, #57676f));\n }\n [timeline] [status]::before {\n content: '';\n height: 60px;\n width: 2px;\n display: block;\n position: relative;\n margin-left: 5px;\n background-color: var(--worklist-state-color, var(--ui-muted, #57676f));\n opacity: 0.2;\n }\n [timeline] [info] md-icon {\n position: relative;\n top: 3px;\n font-size: var(--fontsize-large);\n }\n [timeline] [info] p {\n /* A fixed light grey under text that follows the theme was light-on-light in the dark theme. */\n background-color: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-on-surface);\n margin: var(--spacing-small) 0 var(--spacing-medium) 0;\n padding: var(--spacing-small) var(--spacing-medium);\n border-radius: var(--border-radius);\n font-size: var(--fontsize-small);\n text-align: justify;\n }\n [timeline] [info] p::before {\n content: '';\n float: right;\n margin-top: -10px;\n margin-right: 20px;\n border: 7px solid transparent;\n border-bottom-color: var(--md-sys-color-surface-container);\n border-top: 0;\n }\n [thread] div {\n border-bottom: var(--border-dim-color);\n padding: var(--spacing-small);\n text-align: right;\n overflow: hidden;\n }\n [thread] div label {\n float: left;\n width: 25%;\n text-align: left;\n }\n `\n ]\n\n @property({\n type: String,\n attribute: 'activity-instance-id'\n })\n activityInstanceId?: string\n\n @state() activityInstance?: ActivityInstance\n\n render() {\n if (!this.activityInstance) {\n return html`<div>no activity instance info.</div>`\n }\n\n const { id, name, description, state, issuer, assignedAt, startedAt, activityThreads, terminatedAt, updatedAt } =\n this.activityInstance\n\n return html`\n <div instance-container>\n <div header>\n <md-icon>description</md-icon>\n <strong>${name}</strong>\n ${description}\n </div>\n\n <div>\n <label>${i18next.t('label.status')}</label>\n <span status></span>\n <strong>${i18next.t('label.activity-state-' + state)}</strong>\n </div>\n\n <div issuer>\n <label>${i18next.t('field.issuer')}</label>\n <md-icon>account_circle</md-icon>\n <strong>${entity360Name(issuer)}</strong>\n </div>\n <div>\n <label>${i18next.t('field.assigned-at')}</label>${assignedAt && formatter.format(new Date(assignedAt))}\n </div>\n <div><label>${i18next.t('field.started-at')}</label>${startedAt && formatter.format(new Date(startedAt))}</div>\n <div><label>${i18next.t('field.updated-at')}</label>${updatedAt && formatter.format(new Date(updatedAt))}</div>\n <div>\n <label>${i18next.t('field.terminated-at')}</label>${terminatedAt && formatter.format(new Date(terminatedAt))}\n </div>\n </div>\n <div thread-container>\n ${this.renderRequest()}\n ${activityThreads?.map(activityThread => this.renderActivityThread(this.activityInstance!, activityThread))}\n </div>\n `\n }\n\n /**\n * What was asked - the same drawing the task and approval screens use.\n *\n * 상신함 opens what I put up here. Without this the view showed the name, the state and the\n * history, and not the request itself: an expenditure request's payee and lines live only in its\n * decision, every model field being hidden. The declaration goes first and the given values are\n * the fallback, as on the task screen (thread-sections).\n */\n renderRequest() {\n const { activity, input } = this.activityInstance!\n const decision = renderDecision(activity?.decisionKeys, input)\n\n if (decision !== nothing) {\n return decision\n }\n\n const given = inputSpecOf(activity?.model)\n\n return given.length\n ? html`<section readonly>\n <h2>${i18next.t('label.activity-input')}</h2>\n ${renderGiven(given, input)}\n </section>`\n : nothing\n }\n\n renderActivityThread(activityInstance: ActivityInstance, activityThread: ActivityThread) {\n const {\n state,\n assignee,\n output,\n round,\n activityApprovals = [],\n assignedAt,\n startedAt,\n terminatedAt\n } = activityThread\n const { approvalLine } = activityInstance!\n const { name, email } = assignee || {}\n const approvals = activityApprovals.sort((a, b) =>\n a.round < b.round ? 1 : a.round > b.round ? -1 : a.order! < b.order! ? 1 : -1\n )\n const current = approvals[0]?.round == round ? approvals[0].order : -1\n\n return html`\n <div assignee>\n <md-icon>account_circle</md-icon>\n <strong>${name}</strong>\n </div>\n\n <div thread>\n <span subtitle>${i18next.t('label.thread-basics')}</span>\n <div>\n <label>${i18next.t('label.status')}</label>\n <span status></span>\n <strong>${i18next.t('label.activity-state-' + state)}</strong>\n </div>\n <div>\n <label>${i18next.t('field.assigned-at')}</label> ${assignedAt && formatter.format(new Date(assignedAt))}\n </div>\n <div><label>${i18next.t('field.started-at')}</label> ${startedAt && formatter.format(new Date(startedAt))}</div>\n <div>\n <label>${i18next.t('field.terminated-at')}</label> ${terminatedAt && formatter.format(new Date(terminatedAt))}\n </div>\n <div><label>${i18next.t('field.round')}</label> ${round}</div>\n </div>\n\n ${this.renderWritten(output || {})}\n <div timeline>\n <span subtitle>${i18next.t('label.timeline')}</span>\n\n <div>\n ${approvalLine\n ? html`<approval-line-view .model=${approvalLine} .current=${current}></approval-line-view>`\n : html``}\n </div>\n\n <ol>\n ${approvals.map(approval => this.renderActivityApproval(approval))}\n </ol>\n </div>\n `\n }\n\n renderActivityApproval(activityApproval: ActivityApproval) {\n const { judgment, approver, comment, round, order, createdAt, terminatedAt } = activityApproval\n const { name, email } = approver || {}\n\n return html`\n <li>\n <span date>${formatter.format(new Date(terminatedAt || createdAt!))}</span>\n <span status></span>\n <span info>\n ${i18next.t('label.activity-state-' + (judgment || 'started'))}\n <strong><md-icon>account_circle</md-icon>${name}</strong>\n <p>${comment}</p>\n </span>\n </li>\n `\n }\n\n renderSearchKeys() {\n const { activity } = this.activityInstance!\n const { searchKeys = [] } = activity! || {}\n\n return html`\n <table>\n <tr>\n <th>${i18next.t('label.name')}</th>\n <th>${i18next.t('label.value')}</th>\n </tr>\n\n ${searchKeys?.map(\n (item, index) => html`\n <tr>\n <td>${declaredLabel(item)}</td>\n <td>${this.activityInstance![`key0${index + 1}`]}</td>\n </tr>\n `\n )}\n </table>\n `\n }\n\n /**\n * What the assignee wrote - the fields the model declares as output and does not hide.\n *\n * This listed every model field by its developer name, hidden ones too, with the value read from the\n * output: an expenditure request showed requestId · month · requester · payee · lines, all empty,\n * under 「산출물」. 상신함 opens this view for anyone who put something up, so it draws what the task\n * screen draws, and nothing when the activity has nothing to write.\n */\n renderWritten(output: any) {\n const written = outputSpecOf(this.activityInstance!.activity?.model)\n\n return written.length\n ? html`<div>\n <span subtitle>${i18next.t('field.artifact')}</span>\n ${renderGiven(written, output)}\n </div>`\n : nothing\n }\n\n updated(changes) {\n if (changes.has('activityInstanceId')) {\n this.fetchActivityInstance()\n }\n }\n\n async fetchActivityInstance() {\n const id = this.activityInstanceId\n\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n activityInstance(id: $id) {\n id\n name\n description\n state\n key01\n key02\n key03\n key04\n key05\n input\n output\n issuer {\n id\n name\n email\n }\n starter {\n name\n email\n }\n activity {\n id\n name\n description\n searchKeys {\n name\n description\n inputKey\n tKey\n }\n ${DecisionKeysFields}\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n hidden\n }\n }\n approvalLine {\n type\n participation\n notifyAfter\n value\n approver {\n id\n name\n description\n controlNo\n }\n }\n activityThreads {\n state\n transaction\n output\n assignee {\n id\n name\n email\n }\n round\n activityApprovals {\n round\n order\n approver {\n id\n name\n email\n }\n judgment\n participation\n comment\n createdAt\n terminatedAt\n }\n assignedAt\n startedAt\n terminatedAt\n }\n updater {\n id\n name\n }\n assignedAt\n startedAt\n terminatedAt\n updatedAt\n }\n }\n `,\n variables: {\n id\n }\n })\n\n this.activityInstance = response.data.activityInstance\n this.setAttribute('state', this.activityInstance?.state || '')\n }\n}\n"]}
1
+ {"version":3,"file":"activity-instance-view.js","sourceRoot":"","sources":["../../../client/pages/activity-instance/activity-instance-view.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/organization/dist-client/component/approval-line-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { QueryController } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport { ActivityFieldsStyles, declaredLabel, inputSpecOf, outputSpecOf, renderGiven } from '../../components/activity-fields.js'\nimport { DecisionContentStyles, DecisionKeysFields, renderDecision } from '../../components/decision-content.js'\nimport { WorklistStateColors } from '../../components/state-ribon.js'\nimport { ActivityInstance } from '../../types/activity-instance.js'\nimport { ActivityThread } from '../../types/activity-thread.js'\nimport { ActivityApproval } from '../../types/activity-approval.js'\nimport { entity360Name } from '@operato/layout'\n\nfunction getSafeFormatter(locale: string, options: Intl.DateTimeFormatOptions): Intl.DateTimeFormat {\n try {\n const safeLocale = locale || 'en-US'\n return new Intl.DateTimeFormat(safeLocale, options)\n } catch (e) {\n console.warn(`Invalid locale or options provided: ${locale}, falling back to default en-US.`, e)\n return new Intl.DateTimeFormat('en-US', options)\n }\n}\n\nconst formatter = getSafeFormatter(navigator.language, { dateStyle: 'full', timeStyle: 'short' })\n@customElement('activity-instance-view')\nexport class ActivityInstanceView extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n WorklistStateColors,\n ActivityFieldsStyles,\n DecisionContentStyles,\n css`\n :host {\n display: flex;\n overflow: auto;\n font-size: var(--fontsize-default);\n }\n [instance-container] {\n flex: 1;\n background-color: var(--md-sys-color-background);\n border-right: var(--border-dim-color);\n padding: var(--spacing-large);\n color: var(--md-sys-color-secondary);\n }\n [thread-container] {\n flex: 2;\n padding: var(--spacing-large);\n }\n [instance-container] div {\n margin-bottom: var(--spacing-medium);\n padding-bottom: var(--spacing-medium);\n border-bottom: var(--border-dim-color);\n }\n /* The state speaks through the icon's colour on a quiet disc, as in the ribbons - a filled disc\n under an on-primary icon read under 3:1 for three states. */\n [header] md-icon {\n background-color: var(--md-sys-color-surface-container-high);\n float: left;\n margin-right: var(--spacing-medium);\n padding: var(--spacing-medium);\n border-radius: 50%;\n float: left;\n font-size: 1.8em;\n color: var(--worklist-state-color, var(--ui-muted, #57676f));\n }\n [header] strong {\n display: block;\n font: bold 22px / 1.1 var(--theme-font);\n }\n [header] {\n overflow: hidden;\n font-size: var(--fontsize-small);\n }\n [instance-container] div label {\n display: inline-block;\n margin-right: var(--spacing-medium);\n min-width: 50px;\n }\n [issuer] md-icon {\n opacity: 0.5;\n position: relative;\n top: 4px;\n font-size: 20px;\n }\n span[status] {\n width: 15px;\n height: 15px;\n position: relative;\n top: 2px;\n background-color: var(--worklist-state-color, var(--ui-muted, #57676f));\n display: inline-block;\n margin-right: var(--spacing-small);\n border-radius: 50%;\n }\n [thread-container] table {\n width: 100%;\n border-collapse: collapse;\n }\n [thread-container] th {\n color: var(--md-sys-color-on-primary-container);\n background-color: var(--md-sys-color-primary-container);\n border-top: var(--grid-header-top-border);\n border-bottom: var(--grid-header-bottom-border);\n padding: var(--grid-header-padding);\n text-overflow: ellipsis;\n font: var(--grid-header-font);\n }\n [thread-container] td {\n padding: var(--spacing-small);\n border-bottom: var(--grid-record-border-bottom);\n }\n [assignee] * {\n vertical-align: middle;\n }\n [assignee] md-icon {\n opacity: 0.5;\n }\n [subtitle] {\n display: block;\n margin: var(--spacing-large) 0 var(--spacing-small) 0;\n padding: var(--spacing-small) var(--spacing-medium);\n color: var(--md-sys-color-on-surface);\n background-color: var(--md-sys-color-surface-variant);\n font: bold 16px var(--theme-font);\n border: 2px solid var(--md-sys-color-outline);\n border-radius: 999px;\n }\n [timeline] ol {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n [timeline] li {\n display: flex;\n }\n [timeline] [info] {\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-variant);\n\n flex: 1;\n }\n [timeline] [date] {\n opacity: 0.7;\n width: 130px;\n font-size: var(--fontsize-small);\n }\n [timeline] [info] strong {\n float: right;\n }\n [timeline] [status] {\n margin: 0 var(--spacing-small);\n display: block;\n border-radius: 50%;\n width: 12px;\n height: 12px;\n position: relative;\n top: 3px;\n /* The ring separates the dot from the line behind it, so it is the page's own colour. */\n border: 2px solid var(--md-sys-color-surface);\n background-color: var(--worklist-state-color, var(--ui-muted, #57676f));\n }\n [timeline] [status]::before {\n content: '';\n height: 60px;\n width: 2px;\n display: block;\n position: relative;\n margin-left: 5px;\n background-color: var(--worklist-state-color, var(--ui-muted, #57676f));\n opacity: 0.2;\n }\n [timeline] [info] md-icon {\n position: relative;\n top: 3px;\n font-size: var(--fontsize-large);\n }\n [timeline] [info] p {\n /* A fixed light grey under text that follows the theme was light-on-light in the dark theme. */\n background-color: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-on-surface);\n margin: var(--spacing-small) 0 var(--spacing-medium) 0;\n padding: var(--spacing-small) var(--spacing-medium);\n border-radius: var(--border-radius);\n font-size: var(--fontsize-small);\n text-align: justify;\n }\n [timeline] [info] p::before {\n content: '';\n float: right;\n margin-top: -10px;\n margin-right: 20px;\n border: 7px solid transparent;\n border-bottom-color: var(--md-sys-color-surface-container);\n border-top: 0;\n }\n [thread] div {\n border-bottom: var(--border-dim-color);\n padding: var(--spacing-small);\n text-align: right;\n overflow: hidden;\n }\n [thread] div label {\n float: left;\n width: 25%;\n text-align: left;\n }\n `\n ]\n\n @property({\n type: String,\n attribute: 'activity-instance-id'\n })\n activityInstanceId?: string\n\n /* The instance the id names (ADR-0190). */\n private instance = new QueryController(\n this,\n gql`\n query ($id: String!) {\n activityInstance(id: $id) {\n id\n name\n description\n state\n key01\n key02\n key03\n key04\n key05\n input\n output\n issuer {\n id\n name\n email\n }\n starter {\n name\n email\n }\n activity {\n id\n name\n description\n searchKeys {\n name\n description\n inputKey\n tKey\n }\n ${DecisionKeysFields}\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n hidden\n }\n }\n approvalLine {\n type\n participation\n notifyAfter\n value\n approver {\n id\n name\n description\n controlNo\n }\n }\n activityThreads {\n state\n transaction\n output\n assignee {\n id\n name\n email\n }\n round\n activityApprovals {\n round\n order\n approver {\n id\n name\n email\n }\n judgment\n participation\n comment\n createdAt\n terminatedAt\n }\n assignedAt\n startedAt\n terminatedAt\n }\n updater {\n id\n name\n }\n assignedAt\n startedAt\n terminatedAt\n updatedAt\n }\n }\n `,\n { variables: () => (this.activityInstanceId ? { id: this.activityInstanceId } : undefined) }\n )\n\n get activityInstance(): ActivityInstance | undefined {\n return this.instance.data?.activityInstance\n }\n\n render() {\n if (!this.activityInstance) {\n return html`<div>no activity instance info.</div>`\n }\n\n const { id, name, description, state, issuer, assignedAt, startedAt, activityThreads, terminatedAt, updatedAt } =\n this.activityInstance\n\n return html`\n <div instance-container>\n <div header>\n <md-icon>description</md-icon>\n <strong>${name}</strong>\n ${description}\n </div>\n\n <div>\n <label>${i18next.t('label.status')}</label>\n <span status></span>\n <strong>${i18next.t('label.activity-state-' + state)}</strong>\n </div>\n\n <div issuer>\n <label>${i18next.t('field.issuer')}</label>\n <md-icon>account_circle</md-icon>\n <strong>${entity360Name(issuer)}</strong>\n </div>\n <div>\n <label>${i18next.t('field.assigned-at')}</label>${assignedAt && formatter.format(new Date(assignedAt))}\n </div>\n <div><label>${i18next.t('field.started-at')}</label>${startedAt && formatter.format(new Date(startedAt))}</div>\n <div><label>${i18next.t('field.updated-at')}</label>${updatedAt && formatter.format(new Date(updatedAt))}</div>\n <div>\n <label>${i18next.t('field.terminated-at')}</label>${terminatedAt && formatter.format(new Date(terminatedAt))}\n </div>\n </div>\n <div thread-container>\n ${this.renderRequest()}\n ${activityThreads?.map(activityThread => this.renderActivityThread(this.activityInstance!, activityThread))}\n </div>\n `\n }\n\n /**\n * What was asked - the same drawing the task and approval screens use.\n *\n * 상신함 opens what I put up here. Without this the view showed the name, the state and the\n * history, and not the request itself: an expenditure request's payee and lines live only in its\n * decision, every model field being hidden. The declaration goes first and the given values are\n * the fallback, as on the task screen (thread-sections).\n */\n renderRequest() {\n const { activity, input } = this.activityInstance!\n const decision = renderDecision(activity?.decisionKeys, input)\n\n if (decision !== nothing) {\n return decision\n }\n\n const given = inputSpecOf(activity?.model)\n\n return given.length\n ? html`<section readonly>\n <h2>${i18next.t('label.activity-input')}</h2>\n ${renderGiven(given, input)}\n </section>`\n : nothing\n }\n\n renderActivityThread(activityInstance: ActivityInstance, activityThread: ActivityThread) {\n const {\n state,\n assignee,\n output,\n round,\n activityApprovals = [],\n assignedAt,\n startedAt,\n terminatedAt\n } = activityThread\n const { approvalLine } = activityInstance!\n const { name, email } = assignee || {}\n const approvals = activityApprovals.sort((a, b) =>\n a.round < b.round ? 1 : a.round > b.round ? -1 : a.order! < b.order! ? 1 : -1\n )\n const current = approvals[0]?.round == round ? approvals[0].order : -1\n\n return html`\n <div assignee>\n <md-icon>account_circle</md-icon>\n <strong>${name}</strong>\n </div>\n\n <div thread>\n <span subtitle>${i18next.t('label.thread-basics')}</span>\n <div>\n <label>${i18next.t('label.status')}</label>\n <span status></span>\n <strong>${i18next.t('label.activity-state-' + state)}</strong>\n </div>\n <div>\n <label>${i18next.t('field.assigned-at')}</label> ${assignedAt && formatter.format(new Date(assignedAt))}\n </div>\n <div><label>${i18next.t('field.started-at')}</label> ${startedAt && formatter.format(new Date(startedAt))}</div>\n <div>\n <label>${i18next.t('field.terminated-at')}</label> ${terminatedAt && formatter.format(new Date(terminatedAt))}\n </div>\n <div><label>${i18next.t('field.round')}</label> ${round}</div>\n </div>\n\n ${this.renderWritten(output || {})}\n <div timeline>\n <span subtitle>${i18next.t('label.timeline')}</span>\n\n <div>\n ${approvalLine\n ? html`<approval-line-view .model=${approvalLine} .current=${current}></approval-line-view>`\n : html``}\n </div>\n\n <ol>\n ${approvals.map(approval => this.renderActivityApproval(approval))}\n </ol>\n </div>\n `\n }\n\n renderActivityApproval(activityApproval: ActivityApproval) {\n const { judgment, approver, comment, round, order, createdAt, terminatedAt } = activityApproval\n const { name, email } = approver || {}\n\n return html`\n <li>\n <span date>${formatter.format(new Date(terminatedAt || createdAt!))}</span>\n <span status></span>\n <span info>\n ${i18next.t('label.activity-state-' + (judgment || 'started'))}\n <strong><md-icon>account_circle</md-icon>${name}</strong>\n <p>${comment}</p>\n </span>\n </li>\n `\n }\n\n renderSearchKeys() {\n const { activity } = this.activityInstance!\n const { searchKeys = [] } = activity! || {}\n\n return html`\n <table>\n <tr>\n <th>${i18next.t('label.name')}</th>\n <th>${i18next.t('label.value')}</th>\n </tr>\n\n ${searchKeys?.map(\n (item, index) => html`\n <tr>\n <td>${declaredLabel(item)}</td>\n <td>${this.activityInstance![`key0${index + 1}`]}</td>\n </tr>\n `\n )}\n </table>\n `\n }\n\n /**\n * What the assignee wrote - the fields the model declares as output and does not hide.\n *\n * This listed every model field by its developer name, hidden ones too, with the value read from the\n * output: an expenditure request showed requestId · month · requester · payee · lines, all empty,\n * under 「산출물」. 상신함 opens this view for anyone who put something up, so it draws what the task\n * screen draws, and nothing when the activity has nothing to write.\n */\n renderWritten(output: any) {\n const written = outputSpecOf(this.activityInstance!.activity?.model)\n\n return written.length\n ? html`<div>\n <span subtitle>${i18next.t('field.artifact')}</span>\n ${renderGiven(written, output)}\n </div>`\n : nothing\n }\n\n /* The colour of the header follows the state of the instance shown. */\n updated(changes) {\n this.setAttribute('state', this.activityInstance?.state || '')\n }\n}\n"]}
@@ -19,7 +19,15 @@ export declare const ActivityThreadStatus: {
19
19
  declare const ActivityThreadPage_base: (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
20
20
  export declare class ActivityThreadPage extends ActivityThreadPage_base {
21
21
  static styles: import("lit").CSSResult[];
22
- activityThread: any;
22
+ /** The thread the address names. */
23
+ private threadId;
24
+ private thread;
25
+ private draft;
26
+ private start;
27
+ private restart;
28
+ private save;
29
+ private finish;
30
+ get activityThread(): any;
23
31
  /**
24
32
  * 조회를 마쳤나 — **「아직 안 읽었다」와 「없다」는 다르다.**
25
33
  *
@@ -29,10 +37,11 @@ export declare class ActivityThreadPage extends ActivityThreadPage_base {
29
37
  *
30
38
  * 조회가 끝난 뒤에만 그 말을 한다. 그 전에는 아무 말도 하지 않는다.
31
39
  */
32
- loaded: boolean;
40
+ get loaded(): boolean;
33
41
  /** Why the task could not be read - ox-page-state says it, with retry (ADR-0060 decision 8). */
34
- loadError: unknown;
35
- private lastId?;
42
+ get loadError(): unknown;
43
+ /** The custom element and the thread read it was made for: another answer makes it again. */
44
+ private custom?;
36
45
  board: any;
37
46
  get context(): {
38
47
  frame: string;
@@ -78,9 +87,9 @@ export declare class ActivityThreadPage extends ActivityThreadPage_base {
78
87
  customElementContent(): any;
79
88
  oxBoardViewer: any;
80
89
  getOutputFromBoard(): any;
81
- updated(changes: any): void;
82
90
  pageUpdated(changes: any, lifecycle: any, changedBefore: any): Promise<void>;
83
- fetchActivityThread(id: any): Promise<void>;
91
+ /** What this task's output is to be: the board's values, or what was written over the thread read. */
92
+ private outputToSend;
84
93
  _startActivityThread(): Promise<void>;
85
94
  _restartActivityThread(): Promise<void>;
86
95
  _delegateActivityThread(): Promise<void>;