@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.
Files changed (115) hide show
  1. package/client/activities/activity-ooc-resolve-edit.ts +3 -3
  2. package/client/activities/activity-ooc-review-edit.ts +3 -2
  3. package/client/components/data-entry-form.ts +6 -13
  4. package/client/pages/data-archive/data-archive-list-page.ts +5 -17
  5. package/client/pages/data-archive/data-archive-request-popup.ts +8 -11
  6. package/client/pages/data-entry/data-entry-list-page.ts +2 -4
  7. package/client/pages/data-key-set/data-key-item-list.ts +8 -22
  8. package/client/pages/data-key-set/data-key-set-importer.ts +4 -11
  9. package/client/pages/data-key-set/data-key-set-list-page.ts +6 -5
  10. package/client/pages/data-ooc/data-ooc-list-page.ts +26 -17
  11. package/client/pages/data-ooc/data-ooc-view.ts +7 -6
  12. package/client/pages/data-report/data-report-list-page.ts +9 -27
  13. package/client/pages/data-report/data-report-samples-page.ts +1 -1
  14. package/client/pages/data-sample/data-sample-list-page.ts +30 -14
  15. package/client/pages/data-sample/data-sample-search-page.ts +22 -14
  16. package/client/pages/data-sample/data-sample-view.ts +7 -5
  17. package/client/pages/data-sensor/data-sensor-list-page.ts +20 -17
  18. package/client/pages/data-set/data-item-list.ts +7 -15
  19. package/client/pages/data-set/data-set-importer.ts +5 -17
  20. package/client/pages/data-set/data-set-list-page.ts +33 -15
  21. package/client/pages/data-summary/data-summary-list-page.ts +9 -10
  22. package/client/pages/data-summary/data-summary-period-page.ts +5 -23
  23. package/client/pages/data-summary/data-summary-search-page.ts +12 -35
  24. package/dist-client/activities/activity-ooc-resolve-edit.d.ts +1 -0
  25. package/dist-client/activities/activity-ooc-resolve-edit.js +3 -3
  26. package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
  27. package/dist-client/activities/activity-ooc-review-edit.d.ts +1 -0
  28. package/dist-client/activities/activity-ooc-review-edit.js +3 -2
  29. package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
  30. package/dist-client/components/data-entry-form.d.ts +1 -0
  31. package/dist-client/components/data-entry-form.js +5 -10
  32. package/dist-client/components/data-entry-form.js.map +1 -1
  33. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +1 -0
  34. package/dist-client/pages/data-archive/data-archive-list-page.js +5 -17
  35. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -1
  36. package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +1 -1
  37. package/dist-client/pages/data-archive/data-archive-request-popup.js +7 -11
  38. package/dist-client/pages/data-archive/data-archive-request-popup.js.map +1 -1
  39. package/dist-client/pages/data-entry/data-entry-list-page.d.ts +1 -0
  40. package/dist-client/pages/data-entry/data-entry-list-page.js +2 -4
  41. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  42. package/dist-client/pages/data-key-set/data-key-item-list.d.ts +1 -0
  43. package/dist-client/pages/data-key-set/data-key-item-list.js +7 -22
  44. package/dist-client/pages/data-key-set/data-key-item-list.js.map +1 -1
  45. package/dist-client/pages/data-key-set/data-key-set-importer.d.ts +1 -0
  46. package/dist-client/pages/data-key-set/data-key-set-importer.js +4 -11
  47. package/dist-client/pages/data-key-set/data-key-set-importer.js.map +1 -1
  48. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +11 -2
  49. package/dist-client/pages/data-key-set/data-key-set-list-page.js +6 -5
  50. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -1
  51. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +6 -0
  52. package/dist-client/pages/data-ooc/data-ooc-list-page.js +17 -10
  53. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -1
  54. package/dist-client/pages/data-ooc/data-ooc-view.d.ts +2 -1
  55. package/dist-client/pages/data-ooc/data-ooc-view.js +7 -6
  56. package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -1
  57. package/dist-client/pages/data-report/data-report-list-page.d.ts +1 -0
  58. package/dist-client/pages/data-report/data-report-list-page.js +4 -19
  59. package/dist-client/pages/data-report/data-report-list-page.js.map +1 -1
  60. package/dist-client/pages/data-report/data-report-samples-page.js +1 -1
  61. package/dist-client/pages/data-report/data-report-samples-page.js.map +1 -1
  62. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +6 -0
  63. package/dist-client/pages/data-sample/data-sample-list-page.js +22 -10
  64. package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -1
  65. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +1 -0
  66. package/dist-client/pages/data-sample/data-sample-search-page.js +15 -9
  67. package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -1
  68. package/dist-client/pages/data-sample/data-sample-view.d.ts +2 -0
  69. package/dist-client/pages/data-sample/data-sample-view.js +7 -5
  70. package/dist-client/pages/data-sample/data-sample-view.js.map +1 -1
  71. package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +16 -2
  72. package/dist-client/pages/data-sensor/data-sensor-list-page.js +19 -17
  73. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -1
  74. package/dist-client/pages/data-set/data-item-list.d.ts +1 -1
  75. package/dist-client/pages/data-set/data-item-list.js +6 -15
  76. package/dist-client/pages/data-set/data-item-list.js.map +1 -1
  77. package/dist-client/pages/data-set/data-set-importer.d.ts +1 -0
  78. package/dist-client/pages/data-set/data-set-importer.js +5 -16
  79. package/dist-client/pages/data-set/data-set-importer.js.map +1 -1
  80. package/dist-client/pages/data-set/data-set-list-page.d.ts +16 -2
  81. package/dist-client/pages/data-set/data-set-list-page.js +23 -10
  82. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  83. package/dist-client/pages/data-summary/data-summary-list-page.d.ts +1 -0
  84. package/dist-client/pages/data-summary/data-summary-list-page.js +9 -10
  85. package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -1
  86. package/dist-client/pages/data-summary/data-summary-period-page.d.ts +1 -0
  87. package/dist-client/pages/data-summary/data-summary-period-page.js +5 -23
  88. package/dist-client/pages/data-summary/data-summary-period-page.js.map +1 -1
  89. package/dist-client/pages/data-summary/data-summary-search-page.d.ts +1 -0
  90. package/dist-client/pages/data-summary/data-summary-search-page.js +7 -19
  91. package/dist-client/pages/data-summary/data-summary-search-page.js.map +1 -1
  92. package/dist-client/tsconfig.tsbuildinfo +1 -1
  93. package/dist-server/service/data-archive/data-archive.js +1 -1
  94. package/dist-server/service/data-archive/data-archive.js.map +1 -1
  95. package/dist-server/service/data-key-set/data-key-set.js +1 -1
  96. package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
  97. package/dist-server/service/data-ooc/data-ooc.js +16 -4
  98. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  99. package/dist-server/service/data-sample/data-sample.js +13 -3
  100. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  101. package/dist-server/service/data-sensor/data-sensor.js +1 -1
  102. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  103. package/dist-server/service/data-set-history/data-set-history.js +1 -1
  104. package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
  105. package/dist-server/service/data-summary/data-summary.js +1 -1
  106. package/dist-server/service/data-summary/data-summary.js.map +1 -1
  107. package/dist-server/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +16 -15
  109. package/server/service/data-archive/data-archive.ts +1 -1
  110. package/server/service/data-key-set/data-key-set.ts +1 -1
  111. package/server/service/data-ooc/data-ooc.ts +31 -5
  112. package/server/service/data-sample/data-sample.ts +37 -7
  113. package/server/service/data-sensor/data-sensor.ts +11 -2
  114. package/server/service/data-set-history/data-set-history.ts +3 -3
  115. 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(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
- })
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(dataSetId: $dataSetId, filters: $filters, pagination: $pagination, sortings: $sortings) {
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.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
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
- mwc-fab {
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
- mwc-fab {
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
- <mwc-fab
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 .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)} ?url-params-sensitive=${this.active}>
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
- <mwc-button raised danger @click=${this._deleteDataItems.bind(this)}>${i18next.t('button.delete')}</mwc-button>
54
- <mwc-button raised @click=${this._updateDataItems.bind(this)}>${i18next.t('button.save')}</mwc-button>
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
- <mwc-button raised @click=${this.save.bind(this)}>${i18next.t('button.save')}</mwc-button>
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 .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)} ?url-params-sensitive=${this.active}>
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(html` <data-entry-form .dataSet=${record} style="background-color: white;"></data-entry-form> `, {
228
- backdrop: true,
229
- size: 'large',
230
- title: i18next.t('title.data-entry-form')
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.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
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
- width: 100%;
29
-
30
- --grid-record-emphasized-background-color: #8b0000;
31
- --grid-record-emphasized-color: #ff6b6b;
30
+ overflow: hidden;
31
+ }
32
32
 
33
- --grid-header-padding: 2px 0 2px 9px;
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: String!
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
- html`
226
- <data-summary-view data-summary-id=${record.id} style="background-color: white;"></data-summary-view>
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 +1,2 @@
1
+ import '@material/web/icon/icon.js';
1
2
  import '@operato/dataset/ox-data-ooc-brief-view.js';
@@ -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><mwc-icon>build_circle</mwc-icon>&nbsp;<span>${i18next.t('label.corrective action')}</span></h2>
26
+ <h2><md-icon>build_circle</md-icon>&nbsp;<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
- mwc-icon {
150
+ md-icon {
151
151
  color: var(--status-danger-color);
152
152
  }
153
153