@things-factory/dataset 7.0.1-alpha.10 → 7.0.1-alpha.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/activities/activity-ooc-resolve-edit.ts +3 -3
- package/client/activities/activity-ooc-review-edit.ts +3 -2
- package/client/components/data-entry-form.ts +6 -13
- package/client/pages/data-archive/data-archive-list-page.ts +5 -17
- package/client/pages/data-archive/data-archive-request-popup.ts +8 -11
- package/client/pages/data-entry/data-entry-list-page.ts +2 -4
- package/client/pages/data-key-set/data-key-item-list.ts +8 -22
- package/client/pages/data-key-set/data-key-set-importer.ts +4 -11
- package/client/pages/data-key-set/data-key-set-list-page.ts +6 -5
- package/client/pages/data-ooc/data-ooc-list-page.ts +26 -17
- package/client/pages/data-ooc/data-ooc-view.ts +7 -6
- package/client/pages/data-report/data-report-list-page.ts +9 -27
- package/client/pages/data-report/data-report-samples-page.ts +1 -1
- package/client/pages/data-sample/data-sample-list-page.ts +30 -14
- package/client/pages/data-sample/data-sample-search-page.ts +22 -14
- package/client/pages/data-sample/data-sample-view.ts +7 -5
- package/client/pages/data-sensor/data-sensor-list-page.ts +20 -17
- package/client/pages/data-set/data-item-list.ts +7 -15
- package/client/pages/data-set/data-set-importer.ts +5 -17
- package/client/pages/data-set/data-set-list-page.ts +33 -15
- package/client/pages/data-summary/data-summary-list-page.ts +9 -10
- package/client/pages/data-summary/data-summary-period-page.ts +5 -23
- package/client/pages/data-summary/data-summary-search-page.ts +12 -35
- package/dist-client/activities/activity-ooc-resolve-edit.d.ts +1 -0
- package/dist-client/activities/activity-ooc-resolve-edit.js +3 -3
- package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
- package/dist-client/activities/activity-ooc-review-edit.d.ts +1 -0
- package/dist-client/activities/activity-ooc-review-edit.js +3 -2
- package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
- package/dist-client/components/data-entry-form.d.ts +1 -0
- package/dist-client/components/data-entry-form.js +5 -10
- package/dist-client/components/data-entry-form.js.map +1 -1
- package/dist-client/pages/data-archive/data-archive-list-page.d.ts +1 -0
- package/dist-client/pages/data-archive/data-archive-list-page.js +5 -17
- package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -1
- package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +1 -1
- package/dist-client/pages/data-archive/data-archive-request-popup.js +7 -11
- package/dist-client/pages/data-archive/data-archive-request-popup.js.map +1 -1
- package/dist-client/pages/data-entry/data-entry-list-page.d.ts +1 -0
- package/dist-client/pages/data-entry/data-entry-list-page.js +2 -4
- package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
- package/dist-client/pages/data-key-set/data-key-item-list.d.ts +1 -0
- package/dist-client/pages/data-key-set/data-key-item-list.js +7 -22
- package/dist-client/pages/data-key-set/data-key-item-list.js.map +1 -1
- package/dist-client/pages/data-key-set/data-key-set-importer.d.ts +1 -0
- package/dist-client/pages/data-key-set/data-key-set-importer.js +4 -11
- package/dist-client/pages/data-key-set/data-key-set-importer.js.map +1 -1
- package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +11 -2
- package/dist-client/pages/data-key-set/data-key-set-list-page.js +6 -5
- package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -1
- package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +6 -0
- package/dist-client/pages/data-ooc/data-ooc-list-page.js +17 -10
- package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -1
- package/dist-client/pages/data-ooc/data-ooc-view.d.ts +2 -1
- package/dist-client/pages/data-ooc/data-ooc-view.js +7 -6
- package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -1
- package/dist-client/pages/data-report/data-report-list-page.d.ts +1 -0
- package/dist-client/pages/data-report/data-report-list-page.js +4 -19
- package/dist-client/pages/data-report/data-report-list-page.js.map +1 -1
- package/dist-client/pages/data-report/data-report-samples-page.js +1 -1
- package/dist-client/pages/data-report/data-report-samples-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-list-page.d.ts +6 -0
- package/dist-client/pages/data-sample/data-sample-list-page.js +22 -10
- package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-search-page.d.ts +1 -0
- package/dist-client/pages/data-sample/data-sample-search-page.js +15 -9
- package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-view.d.ts +2 -0
- package/dist-client/pages/data-sample/data-sample-view.js +7 -5
- package/dist-client/pages/data-sample/data-sample-view.js.map +1 -1
- package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +16 -2
- package/dist-client/pages/data-sensor/data-sensor-list-page.js +19 -17
- package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -1
- package/dist-client/pages/data-set/data-item-list.d.ts +1 -1
- package/dist-client/pages/data-set/data-item-list.js +6 -15
- package/dist-client/pages/data-set/data-item-list.js.map +1 -1
- package/dist-client/pages/data-set/data-set-importer.d.ts +1 -0
- package/dist-client/pages/data-set/data-set-importer.js +5 -16
- package/dist-client/pages/data-set/data-set-importer.js.map +1 -1
- package/dist-client/pages/data-set/data-set-list-page.d.ts +16 -2
- package/dist-client/pages/data-set/data-set-list-page.js +23 -10
- package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
- package/dist-client/pages/data-summary/data-summary-list-page.d.ts +1 -0
- package/dist-client/pages/data-summary/data-summary-list-page.js +9 -10
- package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -1
- package/dist-client/pages/data-summary/data-summary-period-page.d.ts +1 -0
- package/dist-client/pages/data-summary/data-summary-period-page.js +5 -23
- package/dist-client/pages/data-summary/data-summary-period-page.js.map +1 -1
- package/dist-client/pages/data-summary/data-summary-search-page.d.ts +1 -0
- package/dist-client/pages/data-summary/data-summary-search-page.js +7 -19
- package/dist-client/pages/data-summary/data-summary-search-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/data-archive/data-archive.js +1 -1
- package/dist-server/service/data-archive/data-archive.js.map +1 -1
- package/dist-server/service/data-key-set/data-key-set.js +1 -1
- package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc.js +16 -4
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +13 -3
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor.js +1 -1
- package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history.js +1 -1
- package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
- package/dist-server/service/data-summary/data-summary.js +1 -1
- package/dist-server/service/data-summary/data-summary.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -15
- package/server/service/data-archive/data-archive.ts +1 -1
- package/server/service/data-key-set/data-key-set.ts +1 -1
- package/server/service/data-ooc/data-ooc.ts +31 -5
- package/server/service/data-sample/data-sample.ts +37 -7
- package/server/service/data-sensor/data-sensor.ts +11 -2
- package/server/service/data-set-history/data-set-history.ts +3 -3
- package/server/service/data-summary/data-summary.ts +16 -3
@@ -1,3 +1,4 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
1
2
|
import '@operato/data-grist'
|
2
3
|
import '@operato/context/ox-context-page-toolbar.js'
|
3
4
|
import './data-sample-view.js'
|
@@ -6,7 +7,7 @@ import gql from 'graphql-tag'
|
|
6
7
|
import { css, html } from 'lit'
|
7
8
|
import { customElement, property, query, state } from 'lit/decorators.js'
|
8
9
|
import { connect } from 'pwa-helpers/connect-mixin'
|
9
|
-
import moment from 'moment-timezone'
|
10
|
+
import moment from '@operato/moment-timezone-es'
|
10
11
|
|
11
12
|
import { DataGrist, FetchOption, GristRecord } from '@operato/data-grist'
|
12
13
|
import { client } from '@operato/graphql'
|
@@ -82,10 +83,7 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
|
|
82
83
|
return html`
|
83
84
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
|
84
85
|
<div slot="headroom" class="header">
|
85
|
-
<div class="title">
|
86
|
-
<mwc-icon>summarize</mwc-icon>
|
87
|
-
${i18next.t('title.data-sample search')}
|
88
|
-
</div>
|
86
|
+
<div class="title">${i18next.t('title.data-sample search')}</div>
|
89
87
|
|
90
88
|
<div class="filters">
|
91
89
|
<ox-filters-form class="filter" autofocus without-search></ox-filters-form>
|
@@ -136,8 +134,6 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
|
|
136
134
|
this.dataKeySet = this.dataSet.dataKeySet
|
137
135
|
|
138
136
|
this.refreshGristConfig()
|
139
|
-
|
140
|
-
this.grist.fetch()
|
141
137
|
}
|
142
138
|
}
|
143
139
|
|
@@ -296,11 +292,16 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
|
|
296
292
|
},
|
297
293
|
handlers: {
|
298
294
|
click: (columns, data, column, record, rowIndex) => {
|
299
|
-
openPopup(
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
295
|
+
openPopup(
|
296
|
+
html`
|
297
|
+
<data-sample-view data-sample-id=${record.id} style="background-color: white;"></data-sample-view>
|
298
|
+
`,
|
299
|
+
{
|
300
|
+
backdrop: true,
|
301
|
+
size: 'large',
|
302
|
+
title: i18next.t('title.data-sample view')
|
303
|
+
}
|
304
|
+
)
|
304
305
|
}
|
305
306
|
}
|
306
307
|
},
|
@@ -321,7 +322,12 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
|
|
321
322
|
const response = await client.query({
|
322
323
|
query: gql`
|
323
324
|
query ($dataSetId: String!, $filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
|
324
|
-
responses: dataSamplesByDataSet(
|
325
|
+
responses: dataSamplesByDataSet(
|
326
|
+
dataSetId: $dataSetId
|
327
|
+
filters: $filters
|
328
|
+
pagination: $pagination
|
329
|
+
sortings: $sortings
|
330
|
+
) {
|
325
331
|
items {
|
326
332
|
id
|
327
333
|
name
|
@@ -391,7 +397,9 @@ export class DataSampleSearchPage extends connect(store)(localize(i18next)(PageV
|
|
391
397
|
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
392
398
|
.reduce((record, column) => {
|
393
399
|
const key = column.imex === true ? column.name : column.imex.key
|
394
|
-
record[key] = key
|
400
|
+
record[key] = key
|
401
|
+
.split('.')
|
402
|
+
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
395
403
|
return record
|
396
404
|
}, {})
|
397
405
|
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
2
|
+
import '@material/web/fab/fab.js'
|
1
3
|
import '@operato/dataset/ox-data-sample-view.js'
|
2
4
|
import '@operato/dataset/ox-data-ooc-brief-view.js'
|
3
5
|
import '@things-factory/worklist/dist-client/components/activity-thread-timeline.js'
|
@@ -33,7 +35,7 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
33
35
|
margin: var(--margin-default);
|
34
36
|
}
|
35
37
|
|
36
|
-
|
38
|
+
md-fab {
|
37
39
|
position: fixed;
|
38
40
|
bottom: 15px;
|
39
41
|
right: 16px;
|
@@ -42,7 +44,7 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
42
44
|
}
|
43
45
|
|
44
46
|
@media print {
|
45
|
-
|
47
|
+
md-fab {
|
46
48
|
display: none;
|
47
49
|
}
|
48
50
|
}
|
@@ -96,15 +98,15 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
96
98
|
`
|
97
99
|
: nothing}
|
98
100
|
|
99
|
-
<
|
100
|
-
icon="print"
|
101
|
+
<md-fab
|
101
102
|
title="print"
|
102
103
|
@click=${() =>
|
103
104
|
GhostPrint.print({
|
104
105
|
src: `./data-sample/${this.dataSampleId}`
|
105
106
|
})}
|
106
|
-
>print</mwc-fab
|
107
107
|
>
|
108
|
+
<md-icon slot="icon">print</md-icon>
|
109
|
+
</md-fab>
|
108
110
|
`
|
109
111
|
}
|
110
112
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
1
2
|
import '@operato/data-grist'
|
2
3
|
import '@operato/context/ox-context-page-toolbar.js'
|
3
4
|
|
@@ -11,15 +12,18 @@ import { client } from '@operato/graphql'
|
|
11
12
|
import { i18next, localize } from '@operato/i18n'
|
12
13
|
import { notify } from '@operato/layout'
|
13
14
|
import { PageView, store } from '@operato/shell'
|
14
|
-
import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
|
15
|
+
import { CommonGristStyles, CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
|
15
16
|
import { isMobileDevice } from '@operato/utils'
|
16
17
|
import { DataGrist, FetchOption } from '@operato/data-grist'
|
17
18
|
import { OxPrompt } from '@operato/popup/ox-prompt.js'
|
18
19
|
|
20
|
+
import { p13n } from '@operato/p13n'
|
21
|
+
|
19
22
|
@customElement('data-sensor-list-page')
|
20
|
-
export class DataSensorListPage extends connect(store)(localize(i18next)(PageView)) {
|
23
|
+
export class DataSensorListPage extends connect(store)(p13n(localize(i18next)(PageView))) {
|
21
24
|
static styles = [
|
22
25
|
ScrollbarStyles,
|
26
|
+
CommonGristStyles,
|
23
27
|
CommonHeaderStyles,
|
24
28
|
css`
|
25
29
|
:host {
|
@@ -33,15 +37,6 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
|
|
33
37
|
overflow-y: auto;
|
34
38
|
flex: 1;
|
35
39
|
}
|
36
|
-
|
37
|
-
@media (max-width: 450px) {
|
38
|
-
.header {
|
39
|
-
display: grid;
|
40
|
-
grid-template-areas:
|
41
|
-
'title actions'
|
42
|
-
'filters filters';
|
43
|
-
}
|
44
|
-
}
|
45
40
|
`
|
46
41
|
]
|
47
42
|
|
@@ -79,7 +74,10 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
|
|
79
74
|
{
|
80
75
|
icon: 'delete',
|
81
76
|
title: i18next.t('button.delete'),
|
82
|
-
action: this._deleteDataSensor.bind(this)
|
77
|
+
action: this._deleteDataSensor.bind(this),
|
78
|
+
emphasis: {
|
79
|
+
danger: true
|
80
|
+
}
|
83
81
|
}
|
84
82
|
],
|
85
83
|
toolbar: false
|
@@ -90,12 +88,15 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
|
|
90
88
|
const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')
|
91
89
|
|
92
90
|
return html`
|
93
|
-
<ox-grist
|
91
|
+
<ox-grist
|
92
|
+
.mode=${mode}
|
93
|
+
.config=${this.gristConfig}
|
94
|
+
.fetchHandler=${this.fetchHandler.bind(this)}
|
95
|
+
.personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')}
|
96
|
+
?url-params-sensitive=${this.active}
|
97
|
+
>
|
94
98
|
<div slot="headroom" class="header">
|
95
|
-
<div class="title">
|
96
|
-
<mwc-icon>summarize</mwc-icon>
|
97
|
-
${i18next.t('title.data-sensor list')}
|
98
|
-
</div>
|
99
|
+
<div class="title">${i18next.t('title.data-sensor list')}</div>
|
99
100
|
|
100
101
|
<div class="filters">
|
101
102
|
<ox-filters-form class="filter" autofocus without-search></ox-filters-form>
|
@@ -103,6 +104,8 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
|
|
103
104
|
|
104
105
|
<ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
|
105
106
|
</div>
|
107
|
+
|
108
|
+
<ox-grist-personalizer slot="setting"></ox-grist-personalizer>
|
106
109
|
</ox-grist>
|
107
110
|
`
|
108
111
|
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
2
|
+
|
1
3
|
import gql from 'graphql-tag'
|
2
4
|
|
3
5
|
import { css, html, LitElement } from 'lit'
|
@@ -7,6 +9,7 @@ import { client } from '@operato/graphql'
|
|
7
9
|
import { i18next, localize } from '@operato/i18n'
|
8
10
|
import { isMobileDevice } from '@operato/utils'
|
9
11
|
import { DataGrist, FetchOption } from '@operato/data-grist'
|
12
|
+
import { ButtonContainerStyles } from '@operato/styles'
|
10
13
|
|
11
14
|
const DataItemStats = ['sum', 'mean', 'stddev', 'variance', 'min', 'max', 'range', 'median', 'mode']
|
12
15
|
|
@@ -17,6 +20,7 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
17
20
|
@state() gristConfig: any
|
18
21
|
|
19
22
|
static styles = [
|
23
|
+
ButtonContainerStyles,
|
20
24
|
css`
|
21
25
|
:host {
|
22
26
|
display: flex;
|
@@ -28,19 +32,6 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
28
32
|
ox-grist {
|
29
33
|
flex: 1;
|
30
34
|
}
|
31
|
-
|
32
|
-
.button-container {
|
33
|
-
display: flex;
|
34
|
-
margin-left: auto;
|
35
|
-
padding: var(--padding-default);
|
36
|
-
}
|
37
|
-
|
38
|
-
[danger] {
|
39
|
-
--mdc-theme-primary: var(--mdc-danger-button-primary-color);
|
40
|
-
}
|
41
|
-
mwc-button {
|
42
|
-
margin-left: var(--margin-default);
|
43
|
-
}
|
44
35
|
`
|
45
36
|
]
|
46
37
|
|
@@ -49,9 +40,10 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
49
40
|
render() {
|
50
41
|
return html`
|
51
42
|
<ox-grist .mode=${isMobileDevice() ? 'LIST' : 'GRID'} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}></ox-grist>
|
43
|
+
|
52
44
|
<div class="button-container">
|
53
|
-
<
|
54
|
-
<
|
45
|
+
<button danger @click=${this._deleteDataItems.bind(this)}><md-icon>delete_forever</md-icon>${i18next.t('button.delete')}</button>
|
46
|
+
<button @click=${this._updateDataItems.bind(this)}><md-icon>save</md-icon>${i18next.t('button.save')}</button>
|
55
47
|
</div>
|
56
48
|
`
|
57
49
|
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
1
2
|
import '@operato/data-grist'
|
2
3
|
|
3
4
|
import gql from 'graphql-tag'
|
@@ -8,10 +9,11 @@ import { client } from '@operato/graphql'
|
|
8
9
|
import { i18next } from '@operato/i18n'
|
9
10
|
import { isMobileDevice } from '@operato/utils'
|
10
11
|
import { DataSet } from '@operato/dataset'
|
11
|
-
|
12
|
+
import { ButtonContainerStyles } from '@operato/styles'
|
12
13
|
@customElement('data-set-importer')
|
13
14
|
export class DataSetImporter extends LitElement {
|
14
15
|
static styles = [
|
16
|
+
ButtonContainerStyles,
|
15
17
|
css`
|
16
18
|
:host {
|
17
19
|
display: flex;
|
@@ -23,16 +25,6 @@ export class DataSetImporter extends LitElement {
|
|
23
25
|
ox-grist {
|
24
26
|
flex: 1;
|
25
27
|
}
|
26
|
-
|
27
|
-
.button-container {
|
28
|
-
display: flex;
|
29
|
-
margin-left: auto;
|
30
|
-
padding: var(--padding-default);
|
31
|
-
}
|
32
|
-
|
33
|
-
mwc-button {
|
34
|
-
margin-left: var(--margin-default);
|
35
|
-
}
|
36
28
|
`
|
37
29
|
]
|
38
30
|
|
@@ -65,14 +57,10 @@ export class DataSetImporter extends LitElement {
|
|
65
57
|
|
66
58
|
render() {
|
67
59
|
return html`
|
68
|
-
<ox-grist
|
69
|
-
.mode=${isMobileDevice() ? 'LIST' : 'GRID'}
|
70
|
-
.config=${this.columns}
|
71
|
-
.data=${{ records: this.dataSets }}
|
72
|
-
></ox-grist>
|
60
|
+
<ox-grist .mode=${isMobileDevice() ? 'LIST' : 'GRID'} .config=${this.columns} .data=${{ records: this.dataSets }}></ox-grist>
|
73
61
|
|
74
62
|
<div class="button-container">
|
75
|
-
<
|
63
|
+
<button @click=${this.save.bind(this)}><md-icon>save</md-icon>${i18next.t('button.save')}</button>
|
76
64
|
</div>
|
77
65
|
`
|
78
66
|
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
1
2
|
import '@operato/data-grist'
|
2
3
|
import '@operato/context/ox-context-page-toolbar.js'
|
3
4
|
import './data-item-list.js'
|
@@ -8,7 +9,7 @@ import gql from 'graphql-tag'
|
|
8
9
|
import { css, html } from 'lit'
|
9
10
|
import { customElement, query, state } from 'lit/decorators.js'
|
10
11
|
import { asyncReplace } from 'lit/directives/async-replace.js'
|
11
|
-
import moment from 'moment-timezone'
|
12
|
+
import moment from '@operato/moment-timezone-es'
|
12
13
|
import { connect } from 'pwa-helpers/connect-mixin'
|
13
14
|
|
14
15
|
import { DataGrist, FetchOption, getEditor, getRenderer, ImexConfig } from '@operato/data-grist'
|
@@ -17,9 +18,11 @@ import { client } from '@operato/graphql'
|
|
17
18
|
import { i18next, localize } from '@operato/i18n'
|
18
19
|
import { notify, openPopup } from '@operato/layout'
|
19
20
|
import { PageView, store } from '@operato/shell'
|
20
|
-
import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
|
21
|
+
import { CommonGristStyles, CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
|
21
22
|
import { isMobileDevice, sleep } from '@operato/utils'
|
22
23
|
|
24
|
+
import { p13n } from '@operato/p13n'
|
25
|
+
|
23
26
|
const MIN = 60
|
24
27
|
const HOUR = 60 * MIN
|
25
28
|
const DAY = 24 * HOUR
|
@@ -74,9 +77,10 @@ const USECASE_OPTIONS = () => {
|
|
74
77
|
}
|
75
78
|
|
76
79
|
@customElement('data-set-list-page')
|
77
|
-
export class DataSetListPage extends connect(store)(localize(i18next)(PageView)) {
|
80
|
+
export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageView))) {
|
78
81
|
static styles = [
|
79
82
|
ScrollbarStyles,
|
83
|
+
CommonGristStyles,
|
80
84
|
CommonHeaderStyles,
|
81
85
|
css`
|
82
86
|
:host {
|
@@ -98,6 +102,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
98
102
|
]
|
99
103
|
|
100
104
|
@state() gristConfig: any
|
105
|
+
|
101
106
|
@state() mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'
|
102
107
|
|
103
108
|
@query('ox-grist') private grist!: DataGrist
|
@@ -138,7 +143,10 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
138
143
|
{
|
139
144
|
title: i18next.t('button.delete'),
|
140
145
|
action: this._deleteDataSet.bind(this),
|
141
|
-
icon: 'delete'
|
146
|
+
icon: 'delete',
|
147
|
+
emphasis: {
|
148
|
+
danger: true
|
149
|
+
}
|
142
150
|
}
|
143
151
|
],
|
144
152
|
toolbar: false
|
@@ -149,12 +157,15 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
149
157
|
const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
|
150
158
|
|
151
159
|
return html`
|
152
|
-
<ox-grist
|
160
|
+
<ox-grist
|
161
|
+
.mode=${mode}
|
162
|
+
.config=${this.gristConfig}
|
163
|
+
.personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')}
|
164
|
+
.fetchHandler=${this.fetchHandler.bind(this)}
|
165
|
+
?url-params-sensitive=${this.active}
|
166
|
+
>
|
153
167
|
<div slot="headroom" class="header">
|
154
|
-
<div class="title">
|
155
|
-
<mwc-icon>summarize</mwc-icon>
|
156
|
-
${i18next.t('title.data-set list')}
|
157
|
-
</div>
|
168
|
+
<div class="title">${i18next.t('title.data-set list')}</div>
|
158
169
|
|
159
170
|
<div class="filters">
|
160
171
|
<ox-filters-form autofocus without-search></ox-filters-form>
|
@@ -162,6 +173,8 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
162
173
|
|
163
174
|
<ox-context-page-toolbar class="actions" .context=${this.context}> </ox-context-page-toolbar>
|
164
175
|
</div>
|
176
|
+
|
177
|
+
<ox-grist-personalizer slot="setting"></ox-grist-personalizer>
|
165
178
|
</ox-grist>
|
166
179
|
`
|
167
180
|
}
|
@@ -224,11 +237,14 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
224
237
|
title: i18next.t('title.data collecting editor'),
|
225
238
|
handlers: {
|
226
239
|
click: (columns, data, column, record, rowIndex) => {
|
227
|
-
openPopup(
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
240
|
+
openPopup(
|
241
|
+
html` <data-entry-form .dataSet=${record} style="background-color: white;"></data-entry-form> `,
|
242
|
+
{
|
243
|
+
backdrop: true,
|
244
|
+
size: 'large',
|
245
|
+
title: i18next.t('title.data-entry-form')
|
246
|
+
}
|
247
|
+
)
|
232
248
|
}
|
233
249
|
}
|
234
250
|
},
|
@@ -982,7 +998,9 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
982
998
|
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
983
999
|
.reduce((record, column) => {
|
984
1000
|
var imexKey = (column.imex as ImexConfig)!.key
|
985
|
-
record[imexKey] = imexKey
|
1001
|
+
record[imexKey] = imexKey
|
1002
|
+
.split('.')
|
1003
|
+
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
986
1004
|
return record
|
987
1005
|
}, {})
|
988
1006
|
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
1
2
|
import '@operato/data-grist'
|
2
3
|
import '@operato/context/ox-context-page-toolbar.js'
|
3
4
|
import './data-summary-view.js'
|
@@ -6,7 +7,7 @@ import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
|
|
6
7
|
import { PageView, store } from '@operato/shell'
|
7
8
|
import { css, html } from 'lit'
|
8
9
|
import { customElement, property, query, state } from 'lit/decorators.js'
|
9
|
-
import moment from 'moment-timezone'
|
10
|
+
import moment from '@operato/moment-timezone-es'
|
10
11
|
import { DataGrist, GristRecord, FetchOption } from '@operato/data-grist'
|
11
12
|
import { client } from '@operato/graphql'
|
12
13
|
import { i18next, localize } from '@operato/i18n'
|
@@ -24,13 +25,14 @@ export class DataSummaryListPage extends connect(store)(localize(i18next)(PageVi
|
|
24
25
|
css`
|
25
26
|
:host {
|
26
27
|
display: flex;
|
28
|
+
flex-direction: column;
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
--grid-record-emphasized-background-color: #8b0000;
|
31
|
-
--grid-record-emphasized-color: #ff6b6b;
|
30
|
+
overflow: hidden;
|
31
|
+
}
|
32
32
|
|
33
|
-
|
33
|
+
ox-grist {
|
34
|
+
overflow-y: auto;
|
35
|
+
flex: 1;
|
34
36
|
}
|
35
37
|
`
|
36
38
|
]
|
@@ -69,10 +71,7 @@ export class DataSummaryListPage extends connect(store)(localize(i18next)(PageVi
|
|
69
71
|
return html`
|
70
72
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)} ?url-params-sensitive=${false /* this.active */}>
|
71
73
|
<div slot="headroom" class="header">
|
72
|
-
<div class="title">
|
73
|
-
<mwc-icon>summarize</mwc-icon>
|
74
|
-
${i18next.t('title.data-summary list')}
|
75
|
-
</div>
|
74
|
+
<div class="title">${i18next.t('title.data-summary list')}</div>
|
76
75
|
|
77
76
|
<div class="filters">
|
78
77
|
<ox-filters-form autofocus without-search></ox-filters-form>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
1
2
|
import '@operato/input/ox-input-select-buttons.js'
|
2
3
|
import '@operato/data-grist'
|
3
4
|
import '@operato/context/ox-context-page-toolbar.js'
|
@@ -83,10 +84,7 @@ export class DataSummaryGroupPage extends connect(store)(localize(i18next)(PageV
|
|
83
84
|
return html`
|
84
85
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
|
85
86
|
<div slot="headroom" class="header">
|
86
|
-
<div class="title">
|
87
|
-
<mwc-icon>summarize</mwc-icon>
|
88
|
-
${i18next.t('title.data-summary period')}
|
89
|
-
</div>
|
87
|
+
<div class="title">${i18next.t('title.data-summary period')}</div>
|
90
88
|
|
91
89
|
<div
|
92
90
|
class="filters"
|
@@ -348,22 +346,8 @@ export class DataSummaryGroupPage extends connect(store)(localize(i18next)(PageV
|
|
348
346
|
|
349
347
|
const response = await client.query({
|
350
348
|
query: gql`
|
351
|
-
query (
|
352
|
-
$dataSetName:
|
353
|
-
$period: String!
|
354
|
-
$dataKeys: [String!]
|
355
|
-
$filters: [Filter!]
|
356
|
-
$pagination: Pagination
|
357
|
-
$sortings: [Sorting!]
|
358
|
-
) {
|
359
|
-
dataSummaryByPeriod(
|
360
|
-
dataSetName: $dataSetName
|
361
|
-
period: $period
|
362
|
-
dataKeys: $dataKeys
|
363
|
-
filters: $filters
|
364
|
-
pagination: $pagination
|
365
|
-
sortings: $sortings
|
366
|
-
) {
|
349
|
+
query ($dataSetName: String!, $period: String!, $dataKeys: [String!], $filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
|
350
|
+
dataSummaryByPeriod(dataSetName: $dataSetName, period: $period, dataKeys: $dataKeys, filters: $filters, pagination: $pagination, sortings: $sortings) {
|
367
351
|
month
|
368
352
|
date
|
369
353
|
period
|
@@ -426,9 +410,7 @@ export class DataSummaryGroupPage extends connect(store)(localize(i18next)(PageV
|
|
426
410
|
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
427
411
|
.reduce((record, column) => {
|
428
412
|
const key = column.imex === true ? column.name : column.imex.key
|
429
|
-
record[key] = key
|
430
|
-
.split('.')
|
431
|
-
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
413
|
+
record[key] = key.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
432
414
|
return record
|
433
415
|
}, {})
|
434
416
|
}
|
@@ -1,22 +1,15 @@
|
|
1
|
+
import '@material/web/icon/icon.js'
|
1
2
|
import '@operato/data-grist'
|
2
3
|
import '@operato/context/ox-context-page-toolbar.js'
|
3
4
|
import './data-summary-view.js'
|
4
|
-
import moment from 'moment-timezone'
|
5
|
+
import moment from '@operato/moment-timezone-es'
|
5
6
|
|
6
7
|
import gql from 'graphql-tag'
|
7
8
|
import { css, html } from 'lit'
|
8
9
|
import { customElement, property, query, state } from 'lit/decorators.js'
|
9
10
|
import { connect } from 'pwa-helpers/connect-mixin'
|
10
11
|
|
11
|
-
import {
|
12
|
-
getEditor,
|
13
|
-
getRenderer,
|
14
|
-
ColumnConfig,
|
15
|
-
DataGrist,
|
16
|
-
FetchOption,
|
17
|
-
SortersControl,
|
18
|
-
GristRecord
|
19
|
-
} from '@operato/data-grist'
|
12
|
+
import { getEditor, getRenderer, ColumnConfig, DataGrist, FetchOption, SortersControl, GristRecord } from '@operato/data-grist'
|
20
13
|
import { client } from '@operato/graphql'
|
21
14
|
import { i18next, localize } from '@operato/i18n'
|
22
15
|
import { openPopup } from '@operato/layout'
|
@@ -94,10 +87,7 @@ export class DataSummarySearchPage extends connect(store)(localize(i18next)(Page
|
|
94
87
|
return html`
|
95
88
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
|
96
89
|
<div slot="headroom" class="header">
|
97
|
-
<div class="title">
|
98
|
-
<mwc-icon>summarize</mwc-icon>
|
99
|
-
${i18next.t('title.data-summary search')}
|
100
|
-
</div>
|
90
|
+
<div class="title">${i18next.t('title.data-summary search')}</div>
|
101
91
|
|
102
92
|
<div class="filters">
|
103
93
|
<ox-filters-form autofocus without-search></ox-filters-form>
|
@@ -221,16 +211,11 @@ export class DataSummarySearchPage extends connect(store)(localize(i18next)(Page
|
|
221
211
|
title: i18next.t('title.open data summary view'),
|
222
212
|
handlers: {
|
223
213
|
click: (columns, data, column, record, rowIndex) => {
|
224
|
-
openPopup(
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
backdrop: true,
|
230
|
-
size: 'large',
|
231
|
-
title: i18next.t('title.data-summary view')
|
232
|
-
}
|
233
|
-
)
|
214
|
+
openPopup(html` <data-summary-view data-summary-id=${record.id} style="background-color: white;"></data-summary-view> `, {
|
215
|
+
backdrop: true,
|
216
|
+
size: 'large',
|
217
|
+
title: i18next.t('title.data-summary view')
|
218
|
+
})
|
234
219
|
}
|
235
220
|
}
|
236
221
|
},
|
@@ -247,8 +232,7 @@ export class DataSummarySearchPage extends connect(store)(localize(i18next)(Page
|
|
247
232
|
width: 80,
|
248
233
|
imex: true
|
249
234
|
},
|
250
|
-
(this.dataSet.summaryPeriod == DataSetSummaryPeriodType.Hour ||
|
251
|
-
this.dataSet.summaryPeriod == DataSetSummaryPeriodType.WorkShift) && {
|
235
|
+
(this.dataSet.summaryPeriod == DataSetSummaryPeriodType.Hour || this.dataSet.summaryPeriod == DataSetSummaryPeriodType.WorkShift) && {
|
252
236
|
type: 'string',
|
253
237
|
name: 'period',
|
254
238
|
header: i18next.t('field.time-period'),
|
@@ -335,12 +319,7 @@ export class DataSummarySearchPage extends connect(store)(localize(i18next)(Page
|
|
335
319
|
const response = await client.query({
|
336
320
|
query: gql`
|
337
321
|
query ($dataSetId: String!, $filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
|
338
|
-
dataSummariesByDataSet(
|
339
|
-
dataSetId: $dataSetId
|
340
|
-
filters: $filters
|
341
|
-
pagination: $pagination
|
342
|
-
sortings: $sortings
|
343
|
-
) {
|
322
|
+
dataSummariesByDataSet(dataSetId: $dataSetId, filters: $filters, pagination: $pagination, sortings: $sortings) {
|
344
323
|
items {
|
345
324
|
id
|
346
325
|
name
|
@@ -413,9 +392,7 @@ export class DataSummarySearchPage extends connect(store)(localize(i18next)(Page
|
|
413
392
|
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
414
393
|
.reduce((record, column) => {
|
415
394
|
const key = column.imex === true ? column.name : column.imex.key
|
416
|
-
record[key] = key
|
417
|
-
.split('.')
|
418
|
-
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
395
|
+
record[key] = key.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
419
396
|
return record
|
420
397
|
}, {})
|
421
398
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
2
|
+
import '@material/web/icon/icon.js';
|
2
3
|
import '@operato/dataset/ox-data-ooc-brief-view.js';
|
3
|
-
// import '@operato/dataset/ox-data-ooc-correction-part.js'
|
4
4
|
import gql from 'graphql-tag';
|
5
5
|
import { css, html, LitElement, nothing } from 'lit';
|
6
6
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
@@ -23,7 +23,7 @@ let OocResolveActivityEdit = class OocResolveActivityEdit extends localize(i18ne
|
|
23
23
|
${editable
|
24
24
|
? html `
|
25
25
|
<label action>
|
26
|
-
<h2><
|
26
|
+
<h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.corrective action')}</span></h2>
|
27
27
|
<textarea placeholder=${String(i18next.t('text.corrective action placeholder'))} .value=${action || ''} @change=${this.onChangeAction}></textarea>
|
28
28
|
</label>
|
29
29
|
`
|
@@ -147,7 +147,7 @@ OocResolveActivityEdit.styles = [
|
|
147
147
|
align-items: center;
|
148
148
|
}
|
149
149
|
|
150
|
-
|
150
|
+
md-icon {
|
151
151
|
color: var(--status-danger-color);
|
152
152
|
}
|
153
153
|
|