@things-factory/dataset 7.1.34 → 7.1.38

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. package/client/activities/activity-ooc-resolve-edit.ts +1 -1
  2. package/client/activities/activity-ooc-review-edit.ts +1 -1
  3. package/client/pages/data-entry/data-entry-list-page.ts +7 -0
  4. package/client/pages/data-set/data-set-list-page.ts +24 -15
  5. package/dist-client/activities/activity-ooc-resolve-edit.js +1 -1
  6. package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
  7. package/dist-client/activities/activity-ooc-review-edit.js +1 -1
  8. package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
  9. package/dist-client/pages/data-entry/data-entry-list-page.js +7 -0
  10. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  11. package/dist-client/pages/data-set/data-set-list-page.js +24 -15
  12. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  13. package/dist-client/tsconfig.tsbuildinfo +1 -1
  14. package/dist-server/activities/activity-data-collect.d.ts +1 -0
  15. package/dist-server/activities/activity-data-collect.js +1 -0
  16. package/dist-server/activities/activity-data-collect.js.map +1 -1
  17. package/dist-server/activities/activity-data-review.d.ts +1 -0
  18. package/dist-server/activities/activity-data-review.js +1 -0
  19. package/dist-server/activities/activity-data-review.js.map +1 -1
  20. package/dist-server/activities/activity-ooc-resolve.d.ts +1 -0
  21. package/dist-server/activities/activity-ooc-resolve.js +1 -0
  22. package/dist-server/activities/activity-ooc-resolve.js.map +1 -1
  23. package/dist-server/activities/activity-ooc-review.d.ts +1 -0
  24. package/dist-server/activities/activity-ooc-review.js +14 -5
  25. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  26. package/dist-server/controllers/create-data-sample.js +18 -12
  27. package/dist-server/controllers/create-data-sample.js.map +1 -1
  28. package/dist-server/controllers/issue-data-collection-task.d.ts +2 -0
  29. package/dist-server/controllers/{issue-collect-data.js → issue-data-collection-task.js} +13 -10
  30. package/dist-server/controllers/issue-data-collection-task.js.map +1 -0
  31. package/dist-server/engine/task/issue-collect-data.js +2 -2
  32. package/dist-server/engine/task/issue-collect-data.js.map +1 -1
  33. package/dist-server/routes.js +5 -3
  34. package/dist-server/routes.js.map +1 -1
  35. package/dist-server/service/data-ooc/index.d.ts +1 -1
  36. package/dist-server/service/data-sample/data-sample-query.d.ts +1 -1
  37. package/dist-server/service/data-sample/data-sample-query.js +3 -3
  38. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  39. package/dist-server/service/data-set/data-set-mutation.js +8 -65
  40. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  41. package/dist-server/service/data-set/data-set-query.d.ts +1 -0
  42. package/dist-server/service/data-set/data-set-query.js +15 -0
  43. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  44. package/dist-server/service/data-set/data-set-type.d.ts +4 -3
  45. package/dist-server/service/data-set/data-set-type.js +20 -6
  46. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  47. package/dist-server/service/data-set/data-set.d.ts +3 -0
  48. package/dist-server/service/data-set/data-set.js +20 -0
  49. package/dist-server/service/data-set/data-set.js.map +1 -1
  50. package/dist-server/service/data-set/index.d.ts +1 -1
  51. package/dist-server/service/index.d.ts +2 -2
  52. package/dist-server/tsconfig.tsbuildinfo +1 -1
  53. package/helps/dataset/task/issue-collect-data.ja.md +1 -1
  54. package/helps/dataset/task/issue-collect-data.ko.md +1 -1
  55. package/helps/dataset/task/issue-collect-data.md +1 -1
  56. package/helps/dataset/task/issue-collect-data.ms.md +1 -1
  57. package/helps/dataset/task/issue-collect-data.zh.md +1 -1
  58. package/package.json +3 -3
  59. package/server/activities/activity-data-collect.ts +12 -2
  60. package/server/activities/activity-data-review.ts +6 -1
  61. package/server/activities/activity-ooc-resolve.ts +1 -0
  62. package/server/activities/activity-ooc-review.ts +30 -8
  63. package/server/controllers/create-data-sample.ts +18 -12
  64. package/server/controllers/{issue-collect-data.ts → issue-data-collection-task.ts} +11 -8
  65. package/server/engine/task/issue-collect-data.ts +2 -2
  66. package/server/routes.ts +5 -3
  67. package/server/service/data-sample/data-sample-query.ts +4 -4
  68. package/server/service/data-set/data-set-mutation.ts +4 -75
  69. package/server/service/data-set/data-set-query.ts +12 -0
  70. package/server/service/data-set/data-set-type.ts +16 -5
  71. package/server/service/data-set/data-set.ts +17 -0
  72. package/translations/en.json +2 -0
  73. package/translations/ja.json +2 -0
  74. package/translations/ko.json +2 -0
  75. package/translations/ms.json +2 -0
  76. package/translations/zh.json +2 -0
  77. package/dist-server/controllers/issue-collect-data.d.ts +0 -2
  78. package/dist-server/controllers/issue-collect-data.js.map +0 -1
@@ -82,7 +82,7 @@ class OocResolveActivityEdit extends localize(i18next)(LitElement) {
82
82
  render() {
83
83
  const action = this.output?.action
84
84
  const state = this.activityThread?.state
85
- const editable = state == 'assigned' || state == 'started'
85
+ const editable = state == 'unassigned' || state == 'assigned' || state == 'started'
86
86
 
87
87
  return html`
88
88
  <div content>
@@ -85,7 +85,7 @@ class OocReviewActivityEdit extends localize(i18next)(LitElement) {
85
85
  render() {
86
86
  const instruction = this.output?.instruction
87
87
  const { state } = this.activityThread || {}
88
- const editable = state == 'assigned' || state == 'started' || state == 'submitted'
88
+ const editable = state == 'unassigned' || state == 'assigned' || state == 'started' || state == 'submitted'
89
89
 
90
90
  return html`
91
91
  <div content>
@@ -354,6 +354,13 @@ export class DataEntryListPage extends connect(store)(localize(i18next)(PageView
354
354
 
355
355
  return getRenderer(type)(renderedValue, column, record, rowIndex, field)
356
356
  }
357
+ },
358
+ handlers: {
359
+ click: (columns, data, column, record, rowIndex) => {
360
+ if (record?.isEntryAllowed) {
361
+ showEntryView(columns, data, column, record, rowIndex)
362
+ }
363
+ }
357
364
  }
358
365
  }
359
366
  ],
@@ -461,6 +461,15 @@ export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageV
461
461
  sortable: false,
462
462
  width: 140
463
463
  },
464
+ {
465
+ type: 'duration',
466
+ name: 'timeLimit',
467
+ header: i18next.t('field.time-limit'),
468
+ record: {
469
+ editable: true
470
+ },
471
+ width: 80
472
+ },
464
473
  {
465
474
  type: 'resource-object',
466
475
  name: 'normalScenario',
@@ -543,16 +552,21 @@ export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageV
543
552
  width: 120
544
553
  },
545
554
  {
546
- type: 'assignees',
547
- name: 'assignees',
555
+ type: 'resource-object',
556
+ name: 'resolverRole',
548
557
  header: {
549
- renderer: i18next.t('field.assignees'),
558
+ renderer: i18next.t('field.resolver-role'),
550
559
  group: i18next.t('field.role')
551
560
  },
552
561
  record: {
553
- editable: true
562
+ editable: true,
563
+ options: {
564
+ title: i18next.t('title.lookup role'),
565
+ queryName: 'roles'
566
+ }
554
567
  },
555
- width: 80
568
+ filter: false,
569
+ width: 120
556
570
  },
557
571
  {
558
572
  type: 'approval-line',
@@ -764,6 +778,7 @@ export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageV
764
778
  scheduleId
765
779
  summaryPeriod
766
780
  summaryScheduleId
781
+ timeLimit
767
782
  dataKeySet {
768
783
  id
769
784
  name
@@ -776,6 +791,10 @@ export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageV
776
791
  id
777
792
  name
778
793
  }
794
+ resolverRole {
795
+ id
796
+ name
797
+ }
779
798
  normalScenario {
780
799
  id
781
800
  name
@@ -784,16 +803,6 @@ export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageV
784
803
  id
785
804
  name
786
805
  }
787
- assignees {
788
- type
789
- value
790
- assignee {
791
- id
792
- name
793
- description
794
- controlNo
795
- }
796
- }
797
806
  reviewApprovalLine {
798
807
  type
799
808
  value
@@ -12,7 +12,7 @@ let OocResolveActivityEdit = class OocResolveActivityEdit extends localize(i18ne
12
12
  var _a, _b;
13
13
  const action = (_a = this.output) === null || _a === void 0 ? void 0 : _a.action;
14
14
  const state = (_b = this.activityThread) === null || _b === void 0 ? void 0 : _b.state;
15
- const editable = state == 'assigned' || state == 'started';
15
+ const editable = state == 'unassigned' || state == 'assigned' || state == 'started';
16
16
  return html `
17
17
  <div content>
18
18
  <ox-data-ooc-brief-view .dataOoc=${this.dataOoc}></ox-data-ooc-brief-view>
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ooc-resolve-edit.js","sourceRoot":"","sources":["../../client/activities/activity-ooc-resolve-edit.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/dataset/ox-data-ooc-brief-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\n@customElement('activity-ooc-resolve-edit')\nclass OocResolveActivityEdit extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n div[content] {\n flex: 1;\n flex-direction: column;\n\n display: flex;\n overflow: auto;\n }\n\n ox-data-ooc-brief-view {\n flex: 1;\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n label[action] {\n display: flex;\n flex-direction: column;\n\n padding: var(--spacing-large);\n }\n\n label[action] h2 {\n display: flex;\n\n color: var(--title-text-color);\n text-transform: capitalize;\n margin: var(--title-margin);\n align-items: center;\n }\n\n md-icon {\n color: var(--status-danger-color);\n }\n\n textarea {\n border: var(--input-field-border);\n border-radius: var(--spacing-small);\n margin: var(--spacing-medium);\n padding: var(--spacing-medium);\n font: var(--input-field-font);\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-variant);\n\n resize: none;\n outline: none;\n min-height: 200px;\n }\n `\n ]\n\n @property({ type: Object }) input?: any\n @property({ type: Object }) output?: any\n @property({ type: Object }) activityThread?: any\n\n @state() dataOoc?: any\n\n @query('textarea') actionTextArea!: HTMLTextAreaElement\n\n render() {\n const action = this.output?.action\n const state = this.activityThread?.state\n const editable = state == 'assigned' || state == 'started'\n\n return html`\n <div content>\n <ox-data-ooc-brief-view .dataOoc=${this.dataOoc}></ox-data-ooc-brief-view>\n </div>\n\n <!-- <ox-data-ooc-correction-part .dataOoc=${this.dataOoc}></ox-data-ooc-correction-part> -->\n\n ${editable\n ? html`\n <label action>\n <h2><md-icon>build_circle</md-icon>&nbsp;<span>${i18next.t('label.corrective action')}</span></h2>\n <textarea\n placeholder=${String(i18next.t('text.corrective action placeholder'))}\n .value=${action || ''}\n @change=${this.onChangeAction}\n ></textarea>\n </label>\n `\n : nothing}\n `\n }\n\n onChangeAction(e: Event) {\n this.output ||= {}\n this.output.action = (e.target as HTMLTextAreaElement).value\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.output\n })\n )\n }\n\n updated(changes) {\n if (changes.has('input')) {\n this.fetchDataOoc()\n }\n }\n\n async fetchDataOoc() {\n const id = this.input.dataOocId\n\n if (id) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataOoc(id: $id) {\n id\n name\n description\n ooc\n oos\n state\n type\n useCase\n data\n judgment\n history\n correctiveAction\n correctiveInstruction\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n workDate\n workShift\n reviewer {\n id\n name\n }\n corrector {\n id\n name\n }\n collectedAt\n reviewedAt\n correctedAt\n }\n }\n `,\n variables: {\n id\n }\n })\n\n const dataOoc = {\n ...response.data.dataOoc\n }\n\n if (this.activityThread?.output) {\n dataOoc.correctiveAction = this.activityThread.output.action\n dataOoc.correctedAt = this.activityThread.updatedAt\n dataOoc.corrector = this.activityThread.assignee\n }\n\n this.dataOoc = dataOoc\n }\n }\n}\n"]}
1
+ {"version":3,"file":"activity-ooc-resolve-edit.js","sourceRoot":"","sources":["../../client/activities/activity-ooc-resolve-edit.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/dataset/ox-data-ooc-brief-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\n@customElement('activity-ooc-resolve-edit')\nclass OocResolveActivityEdit extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n div[content] {\n flex: 1;\n flex-direction: column;\n\n display: flex;\n overflow: auto;\n }\n\n ox-data-ooc-brief-view {\n flex: 1;\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n label[action] {\n display: flex;\n flex-direction: column;\n\n padding: var(--spacing-large);\n }\n\n label[action] h2 {\n display: flex;\n\n color: var(--title-text-color);\n text-transform: capitalize;\n margin: var(--title-margin);\n align-items: center;\n }\n\n md-icon {\n color: var(--status-danger-color);\n }\n\n textarea {\n border: var(--input-field-border);\n border-radius: var(--spacing-small);\n margin: var(--spacing-medium);\n padding: var(--spacing-medium);\n font: var(--input-field-font);\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-variant);\n\n resize: none;\n outline: none;\n min-height: 200px;\n }\n `\n ]\n\n @property({ type: Object }) input?: any\n @property({ type: Object }) output?: any\n @property({ type: Object }) activityThread?: any\n\n @state() dataOoc?: any\n\n @query('textarea') actionTextArea!: HTMLTextAreaElement\n\n render() {\n const action = this.output?.action\n const state = this.activityThread?.state\n const editable = state == 'unassigned' || state == 'assigned' || state == 'started'\n\n return html`\n <div content>\n <ox-data-ooc-brief-view .dataOoc=${this.dataOoc}></ox-data-ooc-brief-view>\n </div>\n\n <!-- <ox-data-ooc-correction-part .dataOoc=${this.dataOoc}></ox-data-ooc-correction-part> -->\n\n ${editable\n ? html`\n <label action>\n <h2><md-icon>build_circle</md-icon>&nbsp;<span>${i18next.t('label.corrective action')}</span></h2>\n <textarea\n placeholder=${String(i18next.t('text.corrective action placeholder'))}\n .value=${action || ''}\n @change=${this.onChangeAction}\n ></textarea>\n </label>\n `\n : nothing}\n `\n }\n\n onChangeAction(e: Event) {\n this.output ||= {}\n this.output.action = (e.target as HTMLTextAreaElement).value\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.output\n })\n )\n }\n\n updated(changes) {\n if (changes.has('input')) {\n this.fetchDataOoc()\n }\n }\n\n async fetchDataOoc() {\n const id = this.input.dataOocId\n\n if (id) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataOoc(id: $id) {\n id\n name\n description\n ooc\n oos\n state\n type\n useCase\n data\n judgment\n history\n correctiveAction\n correctiveInstruction\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n workDate\n workShift\n reviewer {\n id\n name\n }\n corrector {\n id\n name\n }\n collectedAt\n reviewedAt\n correctedAt\n }\n }\n `,\n variables: {\n id\n }\n })\n\n const dataOoc = {\n ...response.data.dataOoc\n }\n\n if (this.activityThread?.output) {\n dataOoc.correctiveAction = this.activityThread.output.action\n dataOoc.correctedAt = this.activityThread.updatedAt\n dataOoc.corrector = this.activityThread.assignee\n }\n\n this.dataOoc = dataOoc\n }\n }\n}\n"]}
@@ -12,7 +12,7 @@ let OocReviewActivityEdit = class OocReviewActivityEdit extends localize(i18next
12
12
  var _a;
13
13
  const instruction = (_a = this.output) === null || _a === void 0 ? void 0 : _a.instruction;
14
14
  const { state } = this.activityThread || {};
15
- const editable = state == 'assigned' || state == 'started' || state == 'submitted';
15
+ const editable = state == 'unassigned' || state == 'assigned' || state == 'started' || state == 'submitted';
16
16
  return html `
17
17
  <div content>
18
18
  <ox-data-sample-view .dataSample=${this.dataOoc}></ox-data-sample-view>
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ooc-review-edit.js","sourceRoot":"","sources":["../../client/activities/activity-ooc-review-edit.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/dataset/ox-data-sample-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } 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\n@customElement('activity-ooc-review-edit')\nclass OocReviewActivityEdit extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n div[content] {\n flex: 1;\n flex-direction: column;\n\n display: flex;\n overflow: auto;\n }\n\n ox-data-sample-view {\n flex: 1;\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n label[instruction] {\n display: flex;\n flex-direction: column;\n\n padding: var(--spacing-large);\n\n h2 {\n display: flex;\n\n color: var(--title-text-color);\n text-transform: capitalize;\n margin: var(--title-margin);\n align-items: center;\n }\n\n div {\n padding: var(--spacing-large);\n font: var(--input-field-font);\n }\n\n md-icon {\n color: var(--status-danger-color);\n }\n\n textarea {\n border: var(--input-field-border);\n border-radius: var(--spacing-small);\n margin: var(--spacing-medium);\n padding: var(--spacing-medium);\n font: var(--input-field-font);\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-variant);\n\n resize: none;\n outline: none;\n min-height: 200px;\n }\n }\n `\n ]\n\n @property({ type: Object }) input?: any\n @property({ type: Object }) output?: any\n @property({ type: Object }) activityThread?: any\n\n @state() dataOoc?: any\n\n render() {\n const instruction = this.output?.instruction\n const { state } = this.activityThread || {}\n const editable = state == 'assigned' || state == 'started' || state == 'submitted'\n\n return html`\n <div content>\n <ox-data-sample-view .dataSample=${this.dataOoc}></ox-data-sample-view>\n </div>\n\n <label instruction>\n <h2><md-icon>build_circle</md-icon>&nbsp;<span>${i18next.t('label.corrective instruction')}</span></h2>\n ${editable\n ? html`\n <textarea\n placeholder=${String(i18next.t('text.corrective instruction placeholder'))}\n .value=${instruction || ''}\n @change=${this.onChangeInstruction}\n ></textarea>\n `\n : html`<div>${instruction}</div>`}\n </label>\n `\n }\n\n onChangeInstruction(e: Event) {\n this.output ||= {}\n this.output.instruction = (e.target as HTMLTextAreaElement).value\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.output\n })\n )\n }\n\n updated(changes) {\n if (changes.has('input')) {\n this.fetchDataOoc()\n }\n }\n\n async fetchDataOoc() {\n const id = this.input?.dataOocId\n\n if (id) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataOoc(id: $id) {\n id\n name\n description\n ooc\n oos\n state\n type\n useCase\n data\n judgment\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n workDate\n workShift\n collectedAt\n }\n }\n `,\n variables: {\n id\n }\n })\n\n this.dataOoc = response.data.dataOoc\n }\n }\n}\n"]}
1
+ {"version":3,"file":"activity-ooc-review-edit.js","sourceRoot":"","sources":["../../client/activities/activity-ooc-review-edit.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/dataset/ox-data-sample-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } 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\n@customElement('activity-ooc-review-edit')\nclass OocReviewActivityEdit extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n div[content] {\n flex: 1;\n flex-direction: column;\n\n display: flex;\n overflow: auto;\n }\n\n ox-data-sample-view {\n flex: 1;\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n label[instruction] {\n display: flex;\n flex-direction: column;\n\n padding: var(--spacing-large);\n\n h2 {\n display: flex;\n\n color: var(--title-text-color);\n text-transform: capitalize;\n margin: var(--title-margin);\n align-items: center;\n }\n\n div {\n padding: var(--spacing-large);\n font: var(--input-field-font);\n }\n\n md-icon {\n color: var(--status-danger-color);\n }\n\n textarea {\n border: var(--input-field-border);\n border-radius: var(--spacing-small);\n margin: var(--spacing-medium);\n padding: var(--spacing-medium);\n font: var(--input-field-font);\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-variant);\n\n resize: none;\n outline: none;\n min-height: 200px;\n }\n }\n `\n ]\n\n @property({ type: Object }) input?: any\n @property({ type: Object }) output?: any\n @property({ type: Object }) activityThread?: any\n\n @state() dataOoc?: any\n\n render() {\n const instruction = this.output?.instruction\n const { state } = this.activityThread || {}\n const editable = state == 'unassigned' || state == 'assigned' || state == 'started' || state == 'submitted'\n\n return html`\n <div content>\n <ox-data-sample-view .dataSample=${this.dataOoc}></ox-data-sample-view>\n </div>\n\n <label instruction>\n <h2><md-icon>build_circle</md-icon>&nbsp;<span>${i18next.t('label.corrective instruction')}</span></h2>\n ${editable\n ? html`\n <textarea\n placeholder=${String(i18next.t('text.corrective instruction placeholder'))}\n .value=${instruction || ''}\n @change=${this.onChangeInstruction}\n ></textarea>\n `\n : html`<div>${instruction}</div>`}\n </label>\n `\n }\n\n onChangeInstruction(e: Event) {\n this.output ||= {}\n this.output.instruction = (e.target as HTMLTextAreaElement).value\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.output\n })\n )\n }\n\n updated(changes) {\n if (changes.has('input')) {\n this.fetchDataOoc()\n }\n }\n\n async fetchDataOoc() {\n const id = this.input?.dataOocId\n\n if (id) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataOoc(id: $id) {\n id\n name\n description\n ooc\n oos\n state\n type\n useCase\n data\n judgment\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n workDate\n workShift\n collectedAt\n }\n }\n `,\n variables: {\n id\n }\n })\n\n this.dataOoc = response.data.dataOoc\n }\n }\n}\n"]}
@@ -305,6 +305,13 @@ let DataEntryListPage = class DataEntryListPage extends connect(store)(localize(
305
305
  }
306
306
  return getRenderer(type)(renderedValue, column, record, rowIndex, field);
307
307
  }
308
+ },
309
+ handlers: {
310
+ click: (columns, data, column, record, rowIndex) => {
311
+ if (record === null || record === void 0 ? void 0 : record.isEntryAllowed) {
312
+ showEntryView(columns, data, column, record, rowIndex);
313
+ }
314
+ }
308
315
  }
309
316
  }
310
317
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"data-entry-list-page.js","sourceRoot":"","sources":["../../../client/pages/data-entry/data-entry-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\nimport '@operato/board/ox-board-viewer.js'\nimport '../../components/data-entry-form.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { connect } from 'pwa-helpers/connect-mixin'\n\nimport { ColumnConfig, DataGrist, FetchOption, SortersControl, getRenderer } from '@operato/data-grist'\nimport { OxDataUseCase } from '@operato/dataset'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { openPopup, notify } from '@operato/layout'\nimport { InheritedValueType, navigate, PageView, store } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { provider } from '@things-factory/board-ui/dist-client'\nimport { OxPopup } from '@operato/popup'\n\nconst USECASE_OPTIONS = () => {\n return ['', ...OxDataUseCase.getUseCaseNames()].map(name => {\n return {\n display: name,\n value: name\n }\n })\n}\n\nconst showEntryView = async (columns, data, column, record, rowIndex) => {\n if (!record.isEntryAllowed) {\n notify({\n message: 'You are not allowed to enter data for this dataset',\n level: 'error'\n })\n return\n }\n\n const { name, entryType, entryView } = record\n const title = `${name} - ${i18next.t('title.data-entry-form')}`\n\n switch (entryType) {\n case 'generated':\n openPopup(html` <data-entry-form .dataSet=${record} style=\"background-color: white;\"></data-entry-form> `, {\n closable: true,\n backdrop: true,\n size: 'large',\n title\n })\n break\n\n case 'board':\n const board = {\n id: entryView\n }\n openPopup(\n html`\n <ox-board-viewer\n style=\"background-color: white;\"\n .board=${board}\n .provider=${provider}\n hide-fullscreen\n hide-navigation\n ></ox-board-viewer>\n `,\n {\n closable: true,\n backdrop: true,\n size: 'large',\n title\n }\n )\n\n // navigate(`board-viewer/${entryView}?interactive=true&title=${title}`)\n break\n\n case 'custom-element':\n break\n\n case 'page':\n navigate(entryView)\n break\n\n case 'external':\n window.open(entryView, '_blank')\n break\n }\n}\n\nconst issueDataEntry = async (columns, data, column, record, rowIndex) => {\n if (!record.isSupervisor) {\n notify({\n message: 'You are not allowed to issue data collection for this dataset',\n level: 'error'\n })\n return\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($dataSetId: String!) {\n issueDataCollection(dataSetId: $dataSetId)\n }\n `,\n variables: { dataSetId: record.id }\n })\n\n if (response.errors) {\n notify({\n message: response.errors[0].message,\n level: 'error'\n })\n } else {\n notify({\n message: 'Data entry task issued successfully'\n })\n }\n}\n\n@customElement('data-entry-list-page')\nexport class DataEntryListPage extends connect(store)(localize(i18next)(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n\n .header {\n grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @state() private gristConfig: any\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n return {\n title: i18next.t('title.data-entry list'),\n search: {\n handler: (search: string) => {\n this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: {\n handler: () => {\n this.grist.toggleHeadroom()\n }\n },\n help: 'dataset/data-entry-list',\n toolbar: false\n }\n }\n\n render() {\n return html`\n <ox-grist\n mode=\"CARD\"\n .config=${this.gristConfig}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ?url-params-sensitive=${this.active}\n >\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-filters-form autofocus without-search></ox-filters-form>\n </div>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) {\n this.gristConfig = {\n list: {\n thumbnail: 'entryView',\n fields: ['name', 'description'],\n details: ['schedule', 'type', 'useCase', 'latestCollectedAt', 'prevSchedule', 'nextSchedule']\n },\n columns: [\n {\n type: 'gutter',\n gutterName: 'button',\n icon: record => (record?.isSupervisor ? 'assignment_add' : ''),\n iconOnly: false,\n width: 96,\n fixed: true,\n title: record => (record?.isSupervisor ? i18next.t('button.assign-data-collection') : ''),\n handlers: {\n click: issueDataEntry\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: record => (record?.isEntryAllowed ? 'fact_check' : ''),\n iconOnly: false,\n width: 96,\n fixed: true,\n title: record => (record?.isEntryAllowed ? i18next.t('button.enter-data') : ''),\n handlers: {\n click: showEntryView\n }\n },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: {\n editable: false\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: {\n editable: false\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'select',\n name: 'type',\n label: true,\n header: i18next.t('field.type'),\n record: {\n editable: false,\n options: [\n {},\n {\n display: i18next.t('text.manually collected'),\n value: 'manual'\n },\n {\n display: i18next.t('text.automatically collected'),\n value: 'automatic'\n }\n ]\n },\n sortable: true,\n filter: true,\n width: 60\n },\n {\n type: 'select',\n name: 'useCase',\n label: true,\n header: i18next.t('field.use-case'),\n record: {\n editable: false,\n options: USECASE_OPTIONS\n },\n sortable: true,\n filter: {\n operator: 'eq',\n options: USECASE_OPTIONS /* in case select options type is a function, filter should have its own options */\n },\n width: 80\n },\n {\n type: 'crontab',\n name: 'schedule',\n label: true,\n header: i18next.t('field.schedule'),\n record: {\n editable: false\n },\n width: 80\n },\n {\n type: 'resource-object',\n name: 'entryRole',\n header: i18next.t('field.entry-role'),\n record: {\n editable: false\n },\n width: 120\n },\n {\n type: 'resource-object',\n name: 'supervisoryRole',\n header: i18next.t('field.supervisory-role'),\n record: {\n editable: false\n },\n width: 120\n },\n {\n type: 'datetime',\n name: 'latestCollectedAt',\n label: true,\n header: i18next.t('field.latest-collected-at'),\n record: {\n editable: false\n },\n width: 180\n },\n {\n type: 'datetime',\n name: 'prevSchedule',\n label: true,\n header: i18next.t('field.prev-schedule'),\n record: {\n editable: false\n },\n width: 180\n },\n {\n type: 'datetime',\n name: 'nextSchedule',\n label: true,\n header: i18next.t('field.next-schedule'),\n record: {\n editable: false\n },\n width: 180\n },\n {\n type: 'string',\n name: 'entryView',\n hidden: true,\n record: {\n editable: false,\n renderer: function (value, column, record, rowIndex, field) {\n const type = record.entryType !== 'board' ? 'string' : 'image'\n\n let renderedValue\n\n if (record.entryType === 'board' && record.entryBoard?.thumbnail) {\n renderedValue = record.entryBoard.thumbnail\n } else {\n renderedValue = html`<md-icon style=\"--md-icon-size: 64px;\">assignment</md-icon>`\n }\n\n return getRenderer(type)(renderedValue, column, record, rowIndex, field)\n }\n }\n }\n ],\n rows: {\n appendable: false,\n editable: false,\n selectable: {\n multiple: false\n },\n classifier: function (record, rowIndex) {}\n },\n sorters: [\n {\n name: 'name'\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!], $inherited: InheritedValueType) {\n responses: dataSetsForEntry(\n filters: $filters\n pagination: $pagination\n sortings: $sortings\n inherited: $inherited\n ) {\n items {\n id\n name\n description\n partitionKeys\n active\n type\n useCase\n schedule\n timezone\n isSupervisor\n isEntryAllowed\n entryRole {\n id\n name\n }\n supervisoryRole {\n id\n name\n }\n entryType\n entryView\n entryBoard {\n thumbnail\n }\n monitorType\n monitorView\n updater {\n id\n name\n }\n reportType\n reportView\n updatedAt\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n latestCollectedAt\n nextSchedule\n prevSchedule\n nextSummarySchedule\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination: { page, limit },\n sortings,\n inherited: InheritedValueType.Include\n }\n })\n\n return {\n total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n}\n"]}
1
+ {"version":3,"file":"data-entry-list-page.js","sourceRoot":"","sources":["../../../client/pages/data-entry/data-entry-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\nimport '@operato/board/ox-board-viewer.js'\nimport '../../components/data-entry-form.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { connect } from 'pwa-helpers/connect-mixin'\n\nimport { ColumnConfig, DataGrist, FetchOption, SortersControl, getRenderer } from '@operato/data-grist'\nimport { OxDataUseCase } from '@operato/dataset'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { openPopup, notify } from '@operato/layout'\nimport { InheritedValueType, navigate, PageView, store } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { provider } from '@things-factory/board-ui/dist-client'\nimport { OxPopup } from '@operato/popup'\n\nconst USECASE_OPTIONS = () => {\n return ['', ...OxDataUseCase.getUseCaseNames()].map(name => {\n return {\n display: name,\n value: name\n }\n })\n}\n\nconst showEntryView = async (columns, data, column, record, rowIndex) => {\n if (!record.isEntryAllowed) {\n notify({\n message: 'You are not allowed to enter data for this dataset',\n level: 'error'\n })\n return\n }\n\n const { name, entryType, entryView } = record\n const title = `${name} - ${i18next.t('title.data-entry-form')}`\n\n switch (entryType) {\n case 'generated':\n openPopup(html` <data-entry-form .dataSet=${record} style=\"background-color: white;\"></data-entry-form> `, {\n closable: true,\n backdrop: true,\n size: 'large',\n title\n })\n break\n\n case 'board':\n const board = {\n id: entryView\n }\n openPopup(\n html`\n <ox-board-viewer\n style=\"background-color: white;\"\n .board=${board}\n .provider=${provider}\n hide-fullscreen\n hide-navigation\n ></ox-board-viewer>\n `,\n {\n closable: true,\n backdrop: true,\n size: 'large',\n title\n }\n )\n\n // navigate(`board-viewer/${entryView}?interactive=true&title=${title}`)\n break\n\n case 'custom-element':\n break\n\n case 'page':\n navigate(entryView)\n break\n\n case 'external':\n window.open(entryView, '_blank')\n break\n }\n}\n\nconst issueDataEntry = async (columns, data, column, record, rowIndex) => {\n if (!record.isSupervisor) {\n notify({\n message: 'You are not allowed to issue data collection for this dataset',\n level: 'error'\n })\n return\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($dataSetId: String!) {\n issueDataCollection(dataSetId: $dataSetId)\n }\n `,\n variables: { dataSetId: record.id }\n })\n\n if (response.errors) {\n notify({\n message: response.errors[0].message,\n level: 'error'\n })\n } else {\n notify({\n message: 'Data entry task issued successfully'\n })\n }\n}\n\n@customElement('data-entry-list-page')\nexport class DataEntryListPage extends connect(store)(localize(i18next)(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n\n .header {\n grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @state() private gristConfig: any\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n return {\n title: i18next.t('title.data-entry list'),\n search: {\n handler: (search: string) => {\n this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: {\n handler: () => {\n this.grist.toggleHeadroom()\n }\n },\n help: 'dataset/data-entry-list',\n toolbar: false\n }\n }\n\n render() {\n return html`\n <ox-grist\n mode=\"CARD\"\n .config=${this.gristConfig}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ?url-params-sensitive=${this.active}\n >\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-filters-form autofocus without-search></ox-filters-form>\n </div>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) {\n this.gristConfig = {\n list: {\n thumbnail: 'entryView',\n fields: ['name', 'description'],\n details: ['schedule', 'type', 'useCase', 'latestCollectedAt', 'prevSchedule', 'nextSchedule']\n },\n columns: [\n {\n type: 'gutter',\n gutterName: 'button',\n icon: record => (record?.isSupervisor ? 'assignment_add' : ''),\n iconOnly: false,\n width: 96,\n fixed: true,\n title: record => (record?.isSupervisor ? i18next.t('button.assign-data-collection') : ''),\n handlers: {\n click: issueDataEntry\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: record => (record?.isEntryAllowed ? 'fact_check' : ''),\n iconOnly: false,\n width: 96,\n fixed: true,\n title: record => (record?.isEntryAllowed ? i18next.t('button.enter-data') : ''),\n handlers: {\n click: showEntryView\n }\n },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: {\n editable: false\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: {\n editable: false\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'select',\n name: 'type',\n label: true,\n header: i18next.t('field.type'),\n record: {\n editable: false,\n options: [\n {},\n {\n display: i18next.t('text.manually collected'),\n value: 'manual'\n },\n {\n display: i18next.t('text.automatically collected'),\n value: 'automatic'\n }\n ]\n },\n sortable: true,\n filter: true,\n width: 60\n },\n {\n type: 'select',\n name: 'useCase',\n label: true,\n header: i18next.t('field.use-case'),\n record: {\n editable: false,\n options: USECASE_OPTIONS\n },\n sortable: true,\n filter: {\n operator: 'eq',\n options: USECASE_OPTIONS /* in case select options type is a function, filter should have its own options */\n },\n width: 80\n },\n {\n type: 'crontab',\n name: 'schedule',\n label: true,\n header: i18next.t('field.schedule'),\n record: {\n editable: false\n },\n width: 80\n },\n {\n type: 'resource-object',\n name: 'entryRole',\n header: i18next.t('field.entry-role'),\n record: {\n editable: false\n },\n width: 120\n },\n {\n type: 'resource-object',\n name: 'supervisoryRole',\n header: i18next.t('field.supervisory-role'),\n record: {\n editable: false\n },\n width: 120\n },\n {\n type: 'datetime',\n name: 'latestCollectedAt',\n label: true,\n header: i18next.t('field.latest-collected-at'),\n record: {\n editable: false\n },\n width: 180\n },\n {\n type: 'datetime',\n name: 'prevSchedule',\n label: true,\n header: i18next.t('field.prev-schedule'),\n record: {\n editable: false\n },\n width: 180\n },\n {\n type: 'datetime',\n name: 'nextSchedule',\n label: true,\n header: i18next.t('field.next-schedule'),\n record: {\n editable: false\n },\n width: 180\n },\n {\n type: 'string',\n name: 'entryView',\n hidden: true,\n record: {\n editable: false,\n renderer: function (value, column, record, rowIndex, field) {\n const type = record.entryType !== 'board' ? 'string' : 'image'\n\n let renderedValue\n\n if (record.entryType === 'board' && record.entryBoard?.thumbnail) {\n renderedValue = record.entryBoard.thumbnail\n } else {\n renderedValue = html`<md-icon style=\"--md-icon-size: 64px;\">assignment</md-icon>`\n }\n\n return getRenderer(type)(renderedValue, column, record, rowIndex, field)\n }\n },\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n if (record?.isEntryAllowed) {\n showEntryView(columns, data, column, record, rowIndex)\n }\n }\n }\n }\n ],\n rows: {\n appendable: false,\n editable: false,\n selectable: {\n multiple: false\n },\n classifier: function (record, rowIndex) {}\n },\n sorters: [\n {\n name: 'name'\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!], $inherited: InheritedValueType) {\n responses: dataSetsForEntry(\n filters: $filters\n pagination: $pagination\n sortings: $sortings\n inherited: $inherited\n ) {\n items {\n id\n name\n description\n partitionKeys\n active\n type\n useCase\n schedule\n timezone\n isSupervisor\n isEntryAllowed\n entryRole {\n id\n name\n }\n supervisoryRole {\n id\n name\n }\n entryType\n entryView\n entryBoard {\n thumbnail\n }\n monitorType\n monitorView\n updater {\n id\n name\n }\n reportType\n reportView\n updatedAt\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n latestCollectedAt\n nextSchedule\n prevSchedule\n nextSummarySchedule\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination: { page, limit },\n sortings,\n inherited: InheritedValueType.Include\n }\n })\n\n return {\n total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n}\n"]}
@@ -416,6 +416,15 @@ let DataSetListPage = class DataSetListPage extends connect(store)(p13n(localize
416
416
  sortable: false,
417
417
  width: 140
418
418
  },
419
+ {
420
+ type: 'duration',
421
+ name: 'timeLimit',
422
+ header: i18next.t('field.time-limit'),
423
+ record: {
424
+ editable: true
425
+ },
426
+ width: 80
427
+ },
419
428
  {
420
429
  type: 'resource-object',
421
430
  name: 'normalScenario',
@@ -498,16 +507,21 @@ let DataSetListPage = class DataSetListPage extends connect(store)(p13n(localize
498
507
  width: 120
499
508
  },
500
509
  {
501
- type: 'assignees',
502
- name: 'assignees',
510
+ type: 'resource-object',
511
+ name: 'resolverRole',
503
512
  header: {
504
- renderer: i18next.t('field.assignees'),
513
+ renderer: i18next.t('field.resolver-role'),
505
514
  group: i18next.t('field.role')
506
515
  },
507
516
  record: {
508
- editable: true
517
+ editable: true,
518
+ options: {
519
+ title: i18next.t('title.lookup role'),
520
+ queryName: 'roles'
521
+ }
509
522
  },
510
- width: 80
523
+ filter: false,
524
+ width: 120
511
525
  },
512
526
  {
513
527
  type: 'approval-line',
@@ -718,6 +732,7 @@ let DataSetListPage = class DataSetListPage extends connect(store)(p13n(localize
718
732
  scheduleId
719
733
  summaryPeriod
720
734
  summaryScheduleId
735
+ timeLimit
721
736
  dataKeySet {
722
737
  id
723
738
  name
@@ -730,6 +745,10 @@ let DataSetListPage = class DataSetListPage extends connect(store)(p13n(localize
730
745
  id
731
746
  name
732
747
  }
748
+ resolverRole {
749
+ id
750
+ name
751
+ }
733
752
  normalScenario {
734
753
  id
735
754
  name
@@ -738,16 +757,6 @@ let DataSetListPage = class DataSetListPage extends connect(store)(p13n(localize
738
757
  id
739
758
  name
740
759
  }
741
- assignees {
742
- type
743
- value
744
- assignee {
745
- id
746
- name
747
- description
748
- controlNo
749
- }
750
- }
751
760
  reviewApprovalLine {
752
761
  type
753
762
  value