@things-factory/dataset 7.0.1-alpha.9 → 7.0.1-alpha.92

Sign up to get free protection for your applications and to get access to all the features.
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 +7 -10
  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 +6 -10
  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 +7 -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 +7 -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 +17 -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 +17 -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