@things-factory/dataset 7.0.0-alpha.0 → 7.0.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/client/activities/activity-data-collect-edit.ts +1 -7
  2. package/client/activities/activity-data-collect-view.ts +7 -0
  3. package/client/activities/activity-data-review-edit.ts +66 -32
  4. package/client/activities/activity-data-review-view.ts +75 -29
  5. package/client/activities/activity-ooc-resolve-edit.ts +44 -48
  6. package/client/activities/activity-ooc-resolve-view.ts +25 -35
  7. package/client/activities/activity-ooc-review-edit.ts +36 -29
  8. package/client/activities/activity-ooc-review-view.ts +9 -19
  9. package/client/bootstrap.ts +5 -9
  10. package/client/pages/data-entry/data-entry-list-page.ts +8 -23
  11. package/client/pages/data-ooc/data-ooc-list-page.ts +71 -27
  12. package/client/pages/data-ooc/{data-ooc-view-page.ts → data-ooc-page.ts} +45 -1
  13. package/client/pages/data-ooc/data-ooc-view.ts +198 -41
  14. package/client/pages/data-ooc/data-oocs-page.ts +200 -0
  15. package/client/pages/data-sample/data-sample-list-page.ts +53 -31
  16. package/client/pages/data-sample/{data-sample-view-page.ts → data-sample-page.ts} +8 -1
  17. package/client/pages/data-sample/data-sample-search-page.ts +30 -25
  18. package/client/pages/data-sample/data-sample-view.ts +192 -21
  19. package/client/pages/data-sample/data-samples-page.ts +249 -0
  20. package/client/pages/data-sensor/data-sensor-list-page.ts +28 -6
  21. package/client/pages/data-set/data-item-list.ts +14 -8
  22. package/client/pages/data-set/data-set-list-page.ts +11 -21
  23. package/client/pages/data-summary/data-summary-list-page.ts +12 -24
  24. package/client/route.ts +10 -2
  25. package/dist-client/activities/activity-data-collect-edit.js +1 -7
  26. package/dist-client/activities/activity-data-collect-edit.js.map +1 -1
  27. package/dist-client/activities/activity-data-collect-view.js +7 -0
  28. package/dist-client/activities/activity-data-collect-view.js.map +1 -1
  29. package/dist-client/activities/activity-data-review-edit.d.ts +1 -1
  30. package/dist-client/activities/activity-data-review-edit.js +63 -33
  31. package/dist-client/activities/activity-data-review-edit.js.map +1 -1
  32. package/dist-client/activities/activity-data-review-view.d.ts +1 -1
  33. package/dist-client/activities/activity-data-review-view.js +72 -30
  34. package/dist-client/activities/activity-data-review-view.js.map +1 -1
  35. package/dist-client/activities/activity-ooc-resolve-edit.d.ts +1 -1
  36. package/dist-client/activities/activity-ooc-resolve-edit.js +44 -48
  37. package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
  38. package/dist-client/activities/activity-ooc-resolve-view.d.ts +13 -0
  39. package/dist-client/activities/activity-ooc-resolve-view.js +24 -34
  40. package/dist-client/activities/activity-ooc-resolve-view.js.map +1 -1
  41. package/dist-client/activities/activity-ooc-review-edit.js +39 -29
  42. package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
  43. package/dist-client/activities/activity-ooc-review-view.js +9 -19
  44. package/dist-client/activities/activity-ooc-review-view.js.map +1 -1
  45. package/dist-client/bootstrap.d.ts +4 -4
  46. package/dist-client/bootstrap.js +4 -4
  47. package/dist-client/bootstrap.js.map +1 -1
  48. package/dist-client/pages/data-entry/data-entry-list-page.js +3 -15
  49. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  50. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +6 -0
  51. package/dist-client/pages/data-ooc/data-ooc-list-page.js +67 -24
  52. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -1
  53. package/dist-client/pages/data-ooc/{data-ooc-view-page.js → data-ooc-page.js} +46 -2
  54. package/dist-client/pages/data-ooc/data-ooc-page.js.map +1 -0
  55. package/dist-client/pages/data-ooc/data-ooc-view.d.ts +11 -4
  56. package/dist-client/pages/data-ooc/data-ooc-view.js +193 -48
  57. package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -1
  58. package/dist-client/pages/data-ooc/data-oocs-page.d.ts +18 -0
  59. package/dist-client/pages/data-ooc/data-oocs-page.js +200 -0
  60. package/dist-client/pages/data-ooc/data-oocs-page.js.map +1 -0
  61. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +6 -1
  62. package/dist-client/pages/data-sample/data-sample-list-page.js +51 -28
  63. package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -1
  64. package/dist-client/pages/data-sample/{data-sample-view-page.js → data-sample-page.js} +9 -2
  65. package/dist-client/pages/data-sample/data-sample-page.js.map +1 -0
  66. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +6 -1
  67. package/dist-client/pages/data-sample/data-sample-search-page.js +28 -22
  68. package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -1
  69. package/dist-client/pages/data-sample/data-sample-view.d.ts +18 -0
  70. package/dist-client/pages/data-sample/data-sample-view.js +186 -19
  71. package/dist-client/pages/data-sample/data-sample-view.js.map +1 -1
  72. package/dist-client/pages/data-sample/data-samples-page.d.ts +21 -0
  73. package/dist-client/pages/data-sample/data-samples-page.js +249 -0
  74. package/dist-client/pages/data-sample/data-samples-page.js.map +1 -0
  75. package/dist-client/pages/data-sensor/data-sensor-list-page.js +28 -6
  76. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -1
  77. package/dist-client/pages/data-set/data-item-list.js +14 -8
  78. package/dist-client/pages/data-set/data-item-list.js.map +1 -1
  79. package/dist-client/pages/data-set/data-set-list-page.js +3 -10
  80. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  81. package/dist-client/pages/data-summary/data-summary-list-page.js +12 -21
  82. package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -1
  83. package/dist-client/route.js +8 -2
  84. package/dist-client/route.js.map +1 -1
  85. package/dist-client/tsconfig.tsbuildinfo +1 -1
  86. package/dist-server/activities/activity-data-collect.js.map +1 -1
  87. package/dist-server/activities/activity-data-review.js.map +1 -1
  88. package/dist-server/activities/activity-ooc-review.js +3 -2
  89. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  90. package/dist-server/controllers/create-data-sample.js +27 -29
  91. package/dist-server/controllers/create-data-sample.js.map +1 -1
  92. package/dist-server/controllers/{generate-data-summary.js → finalize-data-collection.js} +10 -30
  93. package/dist-server/controllers/finalize-data-collection.js.map +1 -0
  94. package/dist-server/controllers/issue-collect-data.js +55 -0
  95. package/dist-server/controllers/issue-collect-data.js.map +1 -0
  96. package/dist-server/controllers/query-data-summary-by-period.js +4 -9
  97. package/dist-server/controllers/query-data-summary-by-period.js.map +1 -1
  98. package/dist-server/engine/index.js +4 -0
  99. package/dist-server/engine/index.js.map +1 -0
  100. package/dist-server/engine/task/create-data-sample.js +80 -0
  101. package/dist-server/engine/task/create-data-sample.js.map +1 -0
  102. package/dist-server/engine/task/index.js +5 -0
  103. package/dist-server/engine/task/index.js.map +1 -0
  104. package/dist-server/engine/task/issue-collect-data.js +40 -0
  105. package/dist-server/engine/task/issue-collect-data.js.map +1 -0
  106. package/dist-server/index.js +1 -0
  107. package/dist-server/index.js.map +1 -1
  108. package/dist-server/routes.js +36 -65
  109. package/dist-server/routes.js.map +1 -1
  110. package/dist-server/service/data-ooc/data-ooc-query.js +32 -0
  111. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  112. package/dist-server/service/data-ooc/data-ooc-subscription.js +4 -4
  113. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -1
  114. package/dist-server/service/data-ooc/data-ooc.js +44 -37
  115. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  116. package/dist-server/service/data-sample/data-sample-query.js +24 -0
  117. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  118. package/dist-server/service/data-sample/data-sample.js +30 -31
  119. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  120. package/dist-server/service/data-sensor/data-sensor-query.js +16 -1
  121. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  122. package/dist-server/service/data-sensor/data-sensor-type.js +8 -0
  123. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
  124. package/dist-server/service/data-sensor/data-sensor.js +15 -1
  125. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  126. package/dist-server/service/data-set/data-item-type.js +17 -2
  127. package/dist-server/service/data-set/data-item-type.js.map +1 -1
  128. package/dist-server/service/data-set/data-set-mutation.js +2 -2
  129. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  130. package/dist-server/service/data-set/data-set-query.js +2 -2
  131. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  132. package/dist-server/service/data-summary/data-summary-mutation.js +34 -5
  133. package/dist-server/service/data-summary/data-summary-mutation.js.map +1 -1
  134. package/dist-server/service/data-summary/data-summary.js +8 -8
  135. package/dist-server/service/data-summary/data-summary.js.map +1 -1
  136. package/dist-server/tsconfig.tsbuildinfo +1 -1
  137. package/helps/config/dataArchive.md +21 -0
  138. package/helps/config/dataReport.md +34 -0
  139. package/helps/dataset/task/create-data-sample.ja.md +28 -0
  140. package/helps/dataset/task/create-data-sample.ko.md +28 -0
  141. package/helps/dataset/task/create-data-sample.md +28 -0
  142. package/helps/dataset/task/create-data-sample.ms.md +30 -0
  143. package/helps/dataset/task/create-data-sample.zh.md +28 -0
  144. package/helps/dataset/task/issue-collect-data.ja.md +35 -0
  145. package/helps/dataset/task/issue-collect-data.ko.md +32 -0
  146. package/helps/dataset/task/issue-collect-data.md +32 -0
  147. package/helps/dataset/task/issue-collect-data.ms.md +34 -0
  148. package/helps/dataset/task/issue-collect-data.zh.md +32 -0
  149. package/helps/dataset/ui/data-item-list.ko.md +17 -2
  150. package/package.json +14 -11
  151. package/server/activities/activity-data-collect.ts +3 -11
  152. package/server/activities/activity-data-review.ts +1 -5
  153. package/server/activities/activity-ooc-review.ts +6 -16
  154. package/server/controllers/create-data-sample.ts +31 -38
  155. package/server/controllers/{generate-data-summary.ts → finalize-data-collection.ts} +7 -39
  156. package/server/controllers/issue-collect-data.ts +61 -0
  157. package/server/controllers/query-data-summary-by-period.ts +5 -18
  158. package/server/engine/index.ts +1 -0
  159. package/server/engine/task/create-data-sample.ts +92 -0
  160. package/server/engine/task/index.ts +2 -0
  161. package/server/engine/task/issue-collect-data.ts +45 -0
  162. package/server/index.ts +1 -0
  163. package/server/routes.ts +47 -76
  164. package/server/service/data-ooc/data-ooc-query.ts +17 -0
  165. package/server/service/data-ooc/data-ooc-subscription.ts +7 -7
  166. package/server/service/data-ooc/data-ooc.ts +39 -51
  167. package/server/service/data-sample/data-sample-query.ts +17 -17
  168. package/server/service/data-sample/data-sample.ts +29 -52
  169. package/server/service/data-sensor/data-sensor-query.ts +13 -1
  170. package/server/service/data-sensor/data-sensor-type.ts +6 -0
  171. package/server/service/data-sensor/data-sensor.ts +13 -11
  172. package/server/service/data-set/data-item-type.ts +19 -10
  173. package/server/service/data-set/data-set-mutation.ts +9 -31
  174. package/server/service/data-set/data-set-query.ts +7 -7
  175. package/server/service/data-summary/data-summary-mutation.ts +24 -7
  176. package/server/service/data-summary/data-summary.ts +10 -23
  177. package/things-factory.config.js +10 -2
  178. package/translations/en.json +17 -3
  179. package/translations/ja.json +14 -2
  180. package/translations/ko.json +16 -2
  181. package/translations/ms.json +13 -1
  182. package/translations/zh.json +14 -2
  183. package/dist-client/pages/data-ooc/data-ooc-view-page.js.map +0 -1
  184. package/dist-client/pages/data-sample/data-sample-view-page.js.map +0 -1
  185. package/dist-server/controllers/generate-data-summary.js.map +0 -1
  186. /package/dist-client/pages/data-ooc/{data-ooc-view-page.d.ts → data-ooc-page.d.ts} +0 -0
  187. /package/dist-client/pages/data-sample/{data-sample-view-page.d.ts → data-sample-page.d.ts} +0 -0
@@ -0,0 +1,200 @@
1
+ import '@operato/dataset/ox-data-ooc-brief-view.js'
2
+ import '@things-factory/worklist/dist-client/components/activity-thread-timeline.js'
3
+
4
+ import gql from 'graphql-tag'
5
+ import { PropertyValues, html, css, nothing } from 'lit'
6
+ import { customElement, state } from 'lit/decorators.js'
7
+ import { PageView } from '@operato/shell'
8
+ import { i18next, localize } from '@operato/i18n'
9
+ import { client } from '@operato/graphql'
10
+
11
+ /**
12
+ * 이 페이지는 여러개의 Data OOC를 한번에 프린트하기 위한 용도로 사용되는 페이지이다.
13
+ */
14
+ @customElement('data-oocs-page')
15
+ export class DataOocsPage extends localize(i18next)(PageView) {
16
+ static styles = [
17
+ css`
18
+ :host {
19
+ display: block;
20
+ overflow: auto;
21
+ }
22
+
23
+ activity-thread-timeline {
24
+ margin: var(--margin-default);
25
+ }
26
+
27
+ .end {
28
+ page-break-after: always;
29
+ break-after: always;
30
+ }
31
+ `
32
+ ]
33
+
34
+ @state() dataOocs?: any[]
35
+
36
+ get context() {
37
+ return {
38
+ title: i18next.t('title.data-ooc view')
39
+ }
40
+ }
41
+
42
+ render() {
43
+ return this.dataOocs?.map(dataOoc => {
44
+ const reviewActivityThread = dataOoc?.reviewActivityInstance?.activityThreads?.[0]
45
+ const resolveActivityThread = dataOoc?.resolveActivityInstance?.activityThreads?.[0]
46
+
47
+ return html`
48
+ <ox-data-ooc-brief-view .dataOoc=${dataOoc}></ox-data-ooc-brief-view>
49
+ ${reviewActivityThread
50
+ ? html`
51
+ <activity-thread-timeline
52
+ subtitle=${String(i18next.t('label.ooc review timeline'))}
53
+ .activityThread=${reviewActivityThread}
54
+ short-form
55
+ ></activity-thread-timeline>
56
+ `
57
+ : nothing}
58
+ ${resolveActivityThread
59
+ ? html`
60
+ <activity-thread-timeline
61
+ subtitle=${String(i18next.t('label.ooc resolve timeline'))}
62
+ .activityThread=${resolveActivityThread}
63
+ short-form
64
+ ></activity-thread-timeline>
65
+ `
66
+ : nothing}
67
+ <div class="end"></div>
68
+ `
69
+ })
70
+ }
71
+
72
+ pageUpdated(changes: any, lifecycle: any, before: any) {
73
+ if (this.active) {
74
+ /*
75
+ * this page is activated
76
+ */
77
+ const { ids = '' } = lifecycle.params
78
+
79
+ this.fetchOocs(ids.split('|').map(id => id.trim()))
80
+ } else {
81
+ /* this page is deactivated */
82
+ }
83
+ }
84
+
85
+ async fetchOocs(ids: string[]) {
86
+ const filters = [
87
+ {
88
+ name: 'id',
89
+ operator: 'in',
90
+ value: ids
91
+ }
92
+ ]
93
+
94
+ const response = await client.query({
95
+ query: gql`
96
+ query ($filters: [Filter!]) {
97
+ dataOocs(filters: $filters) {
98
+ items {
99
+ id
100
+ name
101
+ description
102
+ useCase
103
+ dataSet {
104
+ id
105
+ name
106
+ }
107
+ key01
108
+ key02
109
+ key03
110
+ key04
111
+ key05
112
+ partitionKeys
113
+ dataItems {
114
+ name
115
+ description
116
+ active
117
+ hidden
118
+ tag
119
+ group
120
+ type
121
+ unit
122
+ options
123
+ quota
124
+ spec
125
+ stat
126
+ }
127
+ data
128
+ rawData
129
+ judgment
130
+ ooc
131
+ oos
132
+ state
133
+ history
134
+ workDate
135
+ workShift
136
+ correctiveInstruction
137
+ correctiveAction
138
+ reviewedAt
139
+ reviewer {
140
+ id
141
+ name
142
+ }
143
+ correctedAt
144
+ corrector {
145
+ id
146
+ name
147
+ }
148
+ updater {
149
+ id
150
+ name
151
+ }
152
+ updatedAt
153
+ collectedAt
154
+ reviewActivityInstance {
155
+ ...ActivityInstanceFragment
156
+ }
157
+ resolveActivityInstance {
158
+ ...ActivityInstanceFragment
159
+ }
160
+ }
161
+ }
162
+ }
163
+
164
+ fragment ActivityInstanceFragment on ActivityInstance {
165
+ activityThreads {
166
+ assignee {
167
+ name
168
+ }
169
+ output
170
+ activityApprovals {
171
+ judgment
172
+ approver {
173
+ name
174
+ }
175
+ comment
176
+ createdAt
177
+ updatedAt
178
+ terminatedAt
179
+ }
180
+ activityThreadHistories {
181
+ transaction
182
+ reason
183
+ updater {
184
+ name
185
+ }
186
+ updatedAt
187
+ state
188
+ output
189
+ }
190
+ }
191
+ }
192
+ `,
193
+ variables: {
194
+ filters
195
+ }
196
+ })
197
+
198
+ this.dataOocs = response.data.dataOocs.items
199
+ }
200
+ }
@@ -15,6 +15,7 @@ import { openPopup } from '@operato/layout'
15
15
  import { PageView, store } from '@operato/shell'
16
16
  import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
17
17
  import { isMobileDevice } from '@operato/utils'
18
+ import { GhostPrint } from '@operato/ghost-print'
18
19
 
19
20
  @customElement('data-sample-list-page')
20
21
  export class DataSampleListPage extends connect(store)(localize(i18next)(PageView)) {
@@ -27,6 +28,8 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
27
28
  flex-direction: column;
28
29
 
29
30
  overflow: hidden;
31
+
32
+ --grid-header-padding: 2px 0 2px 9px;
30
33
  }
31
34
 
32
35
  ox-grist {
@@ -56,7 +59,13 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
56
59
  }
57
60
  },
58
61
  help: 'dataset/data-sample',
59
- actions: [],
62
+ actions: [
63
+ {
64
+ title: i18next.t('button.print'),
65
+ action: this.printSamples.bind(this),
66
+ icon: 'print'
67
+ }
68
+ ],
60
69
  exportable: {
61
70
  name: i18next.t('title.data-sample list'),
62
71
  data: this._exportableData.bind(this)
@@ -69,12 +78,7 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
69
78
  const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')
70
79
 
71
80
  return html`
72
- <ox-grist
73
- .mode=${mode}
74
- .config=${this.gristConfig}
75
- .fetchHandler=${this.fetchHandler.bind(this)}
76
- ?url-params-sensitive=${false /* this.active */}
77
- >
81
+ <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)} ?url-params-sensitive=${false /* this.active */}>
78
82
  <div slot="headroom" class="header">
79
83
  <div class="title">
80
84
  <mwc-icon>summarize</mwc-icon>
@@ -105,21 +109,7 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
105
109
  gutterName: 'button',
106
110
  fixed: true,
107
111
  icon: 'assignment',
108
- title: i18next.t('title.open data sample view'),
109
- handlers: {
110
- click: (columns, data, column, record, rowIndex) => {
111
- openPopup(
112
- html`
113
- <data-sample-view data-sample-id=${record.id} style="background-color: white;"></data-sample-view>
114
- `,
115
- {
116
- backdrop: true,
117
- size: 'large',
118
- title: i18next.t('title.data-sample view')
119
- }
120
- )
121
- }
122
- }
112
+ title: i18next.t('title.open data sample view')
123
113
  },
124
114
  {
125
115
  type: 'string',
@@ -150,7 +140,10 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
150
140
  {
151
141
  type: 'string',
152
142
  name: 'key01',
153
- header: i18next.t('field.key-01'),
143
+ header: {
144
+ renderer: i18next.t('field.key-01'),
145
+ group: i18next.t('field.key')
146
+ },
154
147
  record: {
155
148
  editable: false
156
149
  },
@@ -161,7 +154,10 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
161
154
  {
162
155
  type: 'string',
163
156
  name: 'key02',
164
- header: i18next.t('field.key-02'),
157
+ header: {
158
+ renderer: i18next.t('field.key-02'),
159
+ group: i18next.t('field.key')
160
+ },
165
161
  record: {
166
162
  editable: false
167
163
  },
@@ -172,7 +168,10 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
172
168
  {
173
169
  type: 'string',
174
170
  name: 'key03',
175
- header: i18next.t('field.key-03'),
171
+ header: {
172
+ renderer: i18next.t('field.key-03'),
173
+ group: i18next.t('field.key')
174
+ },
176
175
  record: {
177
176
  editable: false
178
177
  },
@@ -183,7 +182,10 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
183
182
  {
184
183
  type: 'string',
185
184
  name: 'key04',
186
- header: i18next.t('field.key-04'),
185
+ header: {
186
+ renderer: i18next.t('field.key-04'),
187
+ group: i18next.t('field.key')
188
+ },
187
189
  record: {
188
190
  editable: false
189
191
  },
@@ -194,7 +196,10 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
194
196
  {
195
197
  type: 'string',
196
198
  name: 'key05',
197
- header: i18next.t('field.key-05'),
199
+ header: {
200
+ renderer: i18next.t('field.key-05'),
201
+ group: i18next.t('field.key')
202
+ },
198
203
  record: {
199
204
  editable: false
200
205
  },
@@ -231,7 +236,7 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
231
236
  imex: true
232
237
  },
233
238
  {
234
- type: 'text',
239
+ type: 'json5',
235
240
  name: 'rawData',
236
241
  header: i18next.t('field.raw-data'),
237
242
  record: {
@@ -302,6 +307,15 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
302
307
  return {
303
308
  emphasized
304
309
  }
310
+ },
311
+ handlers: {
312
+ click: (columns, data, column, record, rowIndex) => {
313
+ openPopup(html` <data-sample-view data-sample-id=${record.id} style="background-color: white;"></data-sample-view> `, {
314
+ backdrop: true,
315
+ size: 'large',
316
+ title: i18next.t('title.data-sample view')
317
+ })
318
+ }
305
319
  }
306
320
  },
307
321
  sorters: [
@@ -387,9 +401,7 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
387
401
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
388
402
  .reduce((record, column) => {
389
403
  const key = column.imex === true ? column.name : column.imex.key
390
- record[key] = key
391
- .split('.')
392
- .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
404
+ record[key] = key.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
393
405
  return record
394
406
  }, {})
395
407
  }
@@ -397,4 +409,14 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
397
409
 
398
410
  return { header: headerSetting, data: data }
399
411
  }
412
+
413
+ printSamples() {
414
+ const selected = this.grist.selected
415
+ const ids = selected.map(record => record.id).join('|')
416
+
417
+ GhostPrint.print({
418
+ src: `./data-samples?ids=${ids}`
419
+ // pending: 200 * selected.length
420
+ })
421
+ }
400
422
  }
@@ -5,7 +5,7 @@ import { i18next, localize } from '@operato/i18n'
5
5
 
6
6
  import './data-sample-view.js'
7
7
 
8
- @customElement('data-sample-view-page')
8
+ @customElement('data-sample-page')
9
9
  export class DataSampleViewPage extends localize(i18next)(PageView) {
10
10
  static styles = [
11
11
  css`
@@ -16,6 +16,13 @@ export class DataSampleViewPage extends localize(i18next)(PageView) {
16
16
  data-sample-view {
17
17
  flex: 1;
18
18
  }
19
+
20
+ @media print {
21
+ :host {
22
+ display: block;
23
+ overflow: visible;
24
+ }
25
+ }
19
26
  `
20
27
  ]
21
28
 
@@ -15,6 +15,7 @@ import { openPopup } from '@operato/layout'
15
15
  import { PageView, store } from '@operato/shell'
16
16
  import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
17
17
  import { isMobileDevice } from '@operato/utils'
18
+ import { GhostPrint } from '@operato/ghost-print'
18
19
 
19
20
  @customElement('data-sample-search-page')
20
21
  export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageView)) {
@@ -60,7 +61,13 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
60
61
  }
61
62
  },
62
63
  help: 'dataset/data-sample-search',
63
- actions: [],
64
+ actions: [
65
+ {
66
+ title: i18next.t('button.print'),
67
+ action: this.printSamples.bind(this),
68
+ icon: 'print'
69
+ }
70
+ ],
64
71
  exportable: {
65
72
  name: i18next.t('title.data-sample search'),
66
73
  data: this._exportableData.bind(this)
@@ -167,21 +174,7 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
167
174
  gutterName: 'button',
168
175
  fixed: true,
169
176
  icon: 'assignment',
170
- title: i18next.t('title.open data sample view'),
171
- handlers: {
172
- click: (columns, data, column, record, rowIndex) => {
173
- openPopup(
174
- html`
175
- <data-sample-view data-sample-id=${record.id} style="background-color: white;"></data-sample-view>
176
- `,
177
- {
178
- backdrop: true,
179
- size: 'large',
180
- title: i18next.t('title.data-sample view')
181
- }
182
- )
183
- }
184
- }
177
+ title: i18next.t('title.open data sample view')
185
178
  },
186
179
  {
187
180
  type: 'string',
@@ -300,6 +293,15 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
300
293
  return {
301
294
  emphasized
302
295
  }
296
+ },
297
+ handlers: {
298
+ click: (columns, data, column, record, rowIndex) => {
299
+ openPopup(html` <data-sample-view data-sample-id=${record.id} style="background-color: white;"></data-sample-view> `, {
300
+ backdrop: true,
301
+ size: 'large',
302
+ title: i18next.t('title.data-sample view')
303
+ })
304
+ }
303
305
  }
304
306
  },
305
307
  sorters: [
@@ -319,12 +321,7 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
319
321
  const response = await client.query({
320
322
  query: gql`
321
323
  query ($dataSetId: String!, $filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
322
- responses: dataSamplesByDataSet(
323
- dataSetId: $dataSetId
324
- filters: $filters
325
- pagination: $pagination
326
- sortings: $sortings
327
- ) {
324
+ responses: dataSamplesByDataSet(dataSetId: $dataSetId, filters: $filters, pagination: $pagination, sortings: $sortings) {
328
325
  items {
329
326
  id
330
327
  name
@@ -394,9 +391,7 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
394
391
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
395
392
  .reduce((record, column) => {
396
393
  const key = column.imex === true ? column.name : column.imex.key
397
- record[key] = key
398
- .split('.')
399
- .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
394
+ record[key] = key.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
400
395
  return record
401
396
  }, {})
402
397
  }
@@ -404,4 +399,14 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
404
399
 
405
400
  return { header: headerSetting, data: data }
406
401
  }
402
+
403
+ printSamples() {
404
+ const selected = this.grist.selected
405
+ const ids = selected.map(record => record.id).join('|')
406
+
407
+ GhostPrint.print({
408
+ src: `./data-samples?ids=${ids}`
409
+ // pending: 200 * selected.length
410
+ })
411
+ }
407
412
  }