@things-factory/operato-board 6.1.80 → 6.1.82

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.
@@ -2,43 +2,41 @@ import '@material/mwc-icon'
2
2
 
3
3
  import gql from 'graphql-tag'
4
4
  import { css, html, LitElement } from 'lit'
5
+ import { customElement, property, state } from 'lit/decorators.js'
5
6
  import { connect } from 'pwa-helpers/connect-mixin.js'
6
7
 
7
8
  import { store } from '@operato/shell'
8
9
  import { client } from '@operato/graphql'
9
10
  import { UPDATE_FAVORITES } from '@things-factory/fav-base'
10
11
 
12
+ @customElement('favorite-tool')
11
13
  export class FavoriteTool extends connect(store)(LitElement) {
12
- static get properties() {
13
- return {
14
- favorites: Array,
15
- user: Object,
16
- resourceId: String,
17
- favored: Boolean,
18
- acceptedPages: Array
14
+ static styles = css`
15
+ :host {
16
+ display: inline-block;
17
+ vertical-align: middle;
18
+ line-height: 0;
19
19
  }
20
- }
21
20
 
22
- static get styles() {
23
- return css`
24
- :host {
25
- display: inline-block;
26
- vertical-align: middle;
27
- line-height: 0;
28
- }
29
-
30
- [favorable] {
31
- opacity: 0.5;
32
- }
33
- `
34
- }
21
+ [favorable] {
22
+ opacity: 0.5;
23
+ }
24
+ `
25
+
26
+ @property({ type: Array }) favorites: any[] = []
27
+ @property({ type: Object }) user: any
28
+ @property({ type: String }) resourceId?: string
29
+ @property({ type: Boolean }) favored?: boolean
30
+ @property({ type: Array }) acceptedPages: any[] = []
31
+
32
+ page: any
35
33
 
36
34
  render() {
37
35
  var renderable = (this.acceptedPages || []).indexOf(this.page) !== -1
38
36
 
39
37
  return renderable
40
38
  ? html`
41
- <mwc-icon @click=${this.onclick.bind(this)} ?favorable=${!this.favored}
39
+ <mwc-icon @click=${this.onClick.bind(this)} ?favorable=${!this.favored}
42
40
  >${this.favored ? 'star' : 'star_border'}</mwc-icon
43
41
  >
44
42
  `
@@ -60,7 +58,7 @@ export class FavoriteTool extends connect(store)(LitElement) {
60
58
  this.resourceId = state.route.resourceId
61
59
  }
62
60
 
63
- onclick(event) {
61
+ onClick(event) {
64
62
  if (!this.resourceId) {
65
63
  return
66
64
  }
@@ -123,5 +121,3 @@ export class FavoriteTool extends connect(store)(LitElement) {
123
121
  this.refreshFavorites()
124
122
  }
125
123
  }
126
-
127
- customElements.define('favorite-tool', FavoriteTool)
@@ -1,5 +1,7 @@
1
1
  import '@operato/board/ox-board-viewer.js'
2
2
 
3
+ import { BoardViewer } from '@operato/board/ox-board-viewer.js'
4
+
3
5
  function setHighlightStyle(dropArea) {
4
6
  var style = document.createElement('style')
5
7
 
@@ -18,7 +20,7 @@ export default class BoardImporter {
18
20
  reader.readAsText(file)
19
21
  reader.onloadend = () => {
20
22
  try {
21
- let model = JSON.parse(reader.result)
23
+ let model = JSON.parse(reader.result as any)
22
24
  importer(file.name.replace(/\.[^/.]+$/, ''), model)
23
25
  } catch (e) {
24
26
  console.error('board import failed', e)
@@ -31,20 +33,22 @@ export default class BoardImporter {
31
33
  reader.readAsText(file)
32
34
  reader.onloadend = () => {
33
35
  try {
34
- let previewModel = JSON.parse(reader.result)
36
+ let previewModel = JSON.parse(reader.result as any)
35
37
 
36
- var preview = document.createElement('ox-board-viewer')
38
+ var preview = document.createElement('ox-board-viewer') as BoardViewer
37
39
 
38
40
  preview.style.width = '100%'
39
41
  preview.style.height = '80%'
40
42
  preview.style.margin = '0'
41
43
  preview.style.padding = '0'
42
- preview.model = previewModel
44
+
45
+ // TODO how to hand over model to previewer
46
+ // preview.model = previewModel
43
47
  // preview.provider = provider;
44
48
 
45
49
  var buttons = document.createElement('div')
46
50
 
47
- buttons.style.classList = 'buttons'
51
+ buttons.className = 'buttons'
48
52
  buttons.innerHTML = `
49
53
  <paper-button dialog-dismiss>Cancel</paper-button>
50
54
  <paper-button dialog-confirm autofocus>Accept</paper-button>
@@ -54,11 +58,11 @@ export default class BoardImporter {
54
58
 
55
59
  dialog.style.width = '100%'
56
60
  dialog.style.height = '100%'
57
- dialog.setAttribute('with-backdrop', true)
58
- dialog.setAttribute('auto-fit-on-attach', true)
59
- dialog.setAttribute('always-on-top', true)
61
+ dialog.setAttribute('with-backdrop', 'true')
62
+ dialog.setAttribute('auto-fit-on-attach', 'true')
63
+ dialog.setAttribute('always-on-top', 'true')
60
64
  dialog.addEventListener('iron-overlay-closed', () => {
61
- dialog.parentNode.removeChild(dialog)
65
+ dialog.parentNode!.removeChild(dialog)
62
66
  })
63
67
 
64
68
  dialog.appendChild(preview)
@@ -66,7 +70,7 @@ export default class BoardImporter {
66
70
  document.body.appendChild(dialog)
67
71
 
68
72
  requestAnimationFrame(() => {
69
- dialog.open()
73
+ ;(dialog as any).open()
70
74
  })
71
75
  } catch (e) {
72
76
  console.error('board preview failed', e)
@@ -16,14 +16,15 @@ import {
16
16
  VIEWPART_LEVEL,
17
17
  VIEWPART_POSITION
18
18
  } from '@operato/layout'
19
+
19
20
  import { APPEND_APP_TOOL } from '@things-factory/apptool-base'
20
21
  import { setupAppToolPart } from '@things-factory/apptool-ui'
21
- import { auth } from '@things-factory/auth-base'
22
+ import { auth } from '@things-factory/auth-base/dist-client'
22
23
  import { setAuthManagementMenus } from '@things-factory/auth-ui'
23
24
  import { setupContextUIPart } from '@things-factory/context-ui'
24
25
  import { ADD_MORENDA } from '@things-factory/more-base'
25
26
  import { ADD_SETTING } from '@things-factory/setting-base'
26
- import { navigate, store, UPDATE_BASE_URL } from '@things-factory/shell'
27
+ import { navigate, store, UPDATE_BASE_URL } from '@operato/shell'
27
28
 
28
29
  import permissions from './reducers/permissions'
29
30
 
@@ -133,7 +134,7 @@ export default async function bootstrap() {
133
134
  })
134
135
 
135
136
  store.subscribe(async () => {
136
- var state = store.getState()
137
+ var state = store.getState() as any
137
138
 
138
139
  if (state.layout.width == width) {
139
140
  return
@@ -1,6 +1,6 @@
1
1
  import gql from 'graphql-tag'
2
2
 
3
- import { client } from '@things-factory/shell'
3
+ import { client } from '@operato/graphql'
4
4
  import { gqlBuilder } from '@things-factory/utils'
5
5
 
6
6
  export async function fetchBoardList(listParam = {}) {
@@ -1,5 +1,5 @@
1
1
  import gql from 'graphql-tag'
2
- import { client } from '@things-factory/shell'
2
+ import { client } from '@operato/graphql'
3
3
  import { gqlBuilder } from '@things-factory/utils'
4
4
 
5
5
  export async function fetchFavoriteBoardList(listParam = {}) {
@@ -1,6 +1,6 @@
1
1
  import gql from 'graphql-tag'
2
2
 
3
- import { client } from '@things-factory/shell'
3
+ import { client } from '@operato/graphql'
4
4
 
5
5
  export async function fetchGroup(id) {
6
6
  const response = await client.query({
@@ -56,7 +56,7 @@ export async function updateGroup(group) {
56
56
  export async function deleteGroup(id) {
57
57
  const response = await client.mutate({
58
58
  mutation: gql`
59
- mutation($id: String!) {
59
+ mutation ($id: String!) {
60
60
  deleteGroup(id: $id)
61
61
  }
62
62
  `,
@@ -1,6 +1,6 @@
1
1
  import gql from 'graphql-tag'
2
2
 
3
- import { client } from '@things-factory/shell'
3
+ import { client } from '@operato/graphql'
4
4
 
5
5
  export async function fetchPlayGroupList() {
6
6
  const response = await client.query({
@@ -117,7 +117,7 @@ export async function updatePlayGroup(group) {
117
117
  export async function deletePlayGroup(id) {
118
118
  const response = await client.mutate({
119
119
  mutation: gql`
120
- mutation($id: String!) {
120
+ mutation ($id: String!) {
121
121
  deletePlayGroup(id: $id)
122
122
  }
123
123
  `,
@@ -162,7 +162,7 @@ export async function joinPlayGroup(boardId, group) {
162
162
  export async function leavePlayGroup(boardId, groupId) {
163
163
  const response = await client.mutate({
164
164
  mutation: gql`
165
- mutation($id: String!, $boardIds: [String]!) {
165
+ mutation ($id: String!, $boardIds: [String]!) {
166
166
  leavePlayGroup(id: $id, boardIds: $boardIds) {
167
167
  id
168
168
  name
@@ -34,6 +34,8 @@ body {
34
34
  --grid-header-color: rgba(var(--secondary-color-rgb), 0.8);
35
35
  --grid-header-font: bold var(--fontsize-small) var(--theme-font);
36
36
 
37
+ --grid-gutter-padding:var(--padding-default) 0;
38
+
37
39
  --grid-record-background-color: var(--theme-white-color);
38
40
  --grid-record-odd-background-color: rgba(255, 255, 255, 0.4);
39
41
  --grid-record-padding: 0 0 0 var(--padding-default);
@@ -2,149 +2,145 @@ import '@material/mwc-icon'
2
2
 
3
3
  import gql from 'graphql-tag'
4
4
  import { css, html, LitElement } from 'lit'
5
+ import { customElement, property, state } from 'lit/decorators.js'
5
6
 
6
- import { i18next } from '@things-factory/i18n-base'
7
- import { client, navigate } from '@things-factory/shell'
7
+ import { i18next } from '@operato/i18n'
8
+ import { client } from '@operato/graphql'
9
+ import { navigate } from '@operato/shell'
8
10
 
11
+ @customElement('board-info')
9
12
  export class BoardInfo extends LitElement {
10
- static get properties() {
11
- return {
12
- boardId: String,
13
- board: Object,
14
- groupId: String,
15
- boardGroupList: Array,
16
- enableModeller: {
17
- type: Boolean,
18
- attribute: 'enable-modeller'
13
+ static styles = [
14
+ css`
15
+ :host {
16
+ display: block;
17
+ background-color: var(--main-section-background-color);
18
+ height: 100%;
19
+ min-width: 350px;
20
+ overflow: auto;
21
+ position: relative;
22
+
23
+ --form-grid-gap: 2px 0;
24
+ --input-field-padding: var(--padding-default);
25
+ --legend-padding: var(--padding-default) 0 var(--padding-narrow) 0;
26
+ --mdc-button-horizontal-padding: var(--padding-default);
19
27
  }
20
- }
21
- }
22
28
 
23
- static get styles() {
24
- return [
25
- css`
26
- :host {
27
- display: block;
28
- background-color: var(--main-section-background-color);
29
- height: 100%;
30
- min-width: 350px;
31
- overflow: auto;
32
- position: relative;
33
-
34
- --form-grid-gap: 2px 0;
35
- --input-field-padding: var(--padding-default);
36
- --legend-padding: var(--padding-default) 0 var(--padding-narrow) 0;
37
- --mdc-button-horizontal-padding: var(--padding-default);
38
- }
29
+ img {
30
+ display: block;
39
31
 
40
- img {
41
- display: block;
32
+ margin: auto;
33
+ max-width: 100%;
34
+ max-height: 100%;
35
+ border-bottom: 2px solid rgba(0, 0, 0, 0.1);
36
+ }
42
37
 
43
- margin: auto;
44
- max-width: 100%;
45
- max-height: 100%;
46
- border-bottom: 2px solid rgba(0, 0, 0, 0.1);
47
- }
38
+ form {
39
+ display: grid;
40
+ grid-template-columns: repeat(12, 1fr);
41
+ grid-gap: var(--form-grid-gap);
42
+ grid-auto-rows: minmax(24px, auto);
43
+ padding: var(--padding-wide);
44
+ align-items: center;
45
+ }
48
46
 
49
- form {
50
- display: grid;
51
- grid-template-columns: repeat(12, 1fr);
52
- grid-gap: var(--form-grid-gap);
53
- grid-auto-rows: minmax(24px, auto);
54
- padding: var(--padding-wide);
55
- align-items: center;
56
- }
47
+ [buttons] {
48
+ grid-column: span 12;
49
+ padding: var(--padding-default) 0;
50
+ text-align: right;
51
+ }
57
52
 
58
- [buttons] {
59
- grid-column: span 12;
60
- padding: var(--padding-default) 0;
61
- text-align: right;
62
- }
53
+ [buttons] * {
54
+ margin: 0 0 0 var(--margin-narrow);
55
+ }
56
+ [danger] {
57
+ float: left;
58
+ margin: 0 var(--margin-narrow) 0 0;
59
+ --mdc-theme-primary: var(--status-danger-color);
60
+ }
63
61
 
64
- [buttons] * {
65
- margin: 0 0 0 var(--margin-narrow);
66
- }
67
- [danger] {
68
- float: left;
69
- margin: 0 var(--margin-narrow) 0 0;
70
- --mdc-theme-primary: var(--status-danger-color);
71
- }
62
+ fieldset {
63
+ display: contents;
64
+ }
72
65
 
73
- fieldset {
74
- display: contents;
75
- }
66
+ legend {
67
+ grid-column: span 12;
68
+ padding: var(--legend-padding);
69
+ font: var(--legend-font);
70
+ color: var(--legend-text-color);
71
+ text-transform: capitalize;
72
+ }
76
73
 
77
- legend {
78
- grid-column: span 12;
79
- padding: var(--legend-padding);
80
- font: var(--legend-font);
81
- color: var(--legend-text-color);
82
- text-transform: capitalize;
83
- }
74
+ label {
75
+ grid-column: span 12;
76
+ text-transform: capitalize;
77
+ color: var(--label-color);
78
+ font: var(--label-font);
79
+ }
84
80
 
85
- label {
86
- grid-column: span 12;
87
- text-transform: capitalize;
88
- color: var(--label-color);
89
- font: var(--label-font);
90
- }
81
+ span {
82
+ grid-column: span 12;
83
+ border-bottom: var(--border-dark-color);
84
+ margin-bottom: var(--margin-default);
85
+ padding-bottom: var(--padding-narrow);
86
+ font: var(--input-field-font);
87
+ }
88
+ span mwc-icon {
89
+ vertical-align: middle;
90
+ font-size: var(--fontsize-large);
91
+ color: var(--primary-color);
92
+ }
91
93
 
92
- span {
93
- grid-column: span 12;
94
- border-bottom: var(--border-dark-color);
95
- margin-bottom: var(--margin-default);
96
- padding-bottom: var(--padding-narrow);
97
- font: var(--input-field-font);
98
- }
99
- span mwc-icon {
100
- vertical-align: middle;
101
- font-size: var(--fontsize-large);
102
- color: var(--primary-color);
103
- }
94
+ input,
95
+ table,
96
+ select,
97
+ textarea,
98
+ [custom-input] {
99
+ grid-column: span 12;
100
+
101
+ border: var(--input-field-border);
102
+ border-radius: var(--input-field-border-radius);
103
+ margin-bottom: var(--margin-default);
104
+ padding: var(--input-field-padding);
105
+ font: var(--input-field-font);
106
+ }
104
107
 
105
- input,
106
- table,
107
- select,
108
- textarea,
109
- [custom-input] {
110
- grid-column: span 12;
111
-
112
- border: var(--input-field-border);
113
- border-radius: var(--input-field-border-radius);
114
- margin-bottom: var(--margin-default);
115
- padding: var(--input-field-padding);
116
- font: var(--input-field-font);
117
- }
108
+ input[type='checkbox'],
109
+ input[type='radio'] {
110
+ place-self: center;
111
+ margin: 0;
112
+ grid-column: 1;
113
+ }
118
114
 
119
- input[type='checkbox'],
120
- input[type='radio'] {
121
- place-self: center;
122
- margin: 0;
123
- grid-column: 1;
124
- }
115
+ input[type='checkbox'] + label,
116
+ input[type='radio'] + label {
117
+ text-align: left;
118
+ grid-column: span 11 / auto;
125
119
 
126
- input[type='checkbox'] + label,
127
- input[type='radio'] + label {
128
- text-align: left;
129
- grid-column: span 11 / auto;
120
+ font: var(--form-sublabel-font);
121
+ color: var(--form-sublabel-color);
122
+ }
130
123
 
131
- font: var(--form-sublabel-font);
132
- color: var(--form-sublabel-color);
133
- }
124
+ input:focus {
125
+ outline: none;
126
+ border: 1px solid var(--focus-background-color);
127
+ }
134
128
 
135
- input:focus {
136
- outline: none;
137
- border: 1px solid var(--focus-background-color);
129
+ @media screen and (max-width: 460px) {
130
+ :host {
131
+ width: 100vw;
138
132
  }
133
+ }
134
+ `
135
+ ]
139
136
 
140
- @media screen and (max-width: 460px) {
141
- :host {
142
- width: 100vw;
143
- }
144
- }
145
- `
146
- ]
147
- }
137
+ @property({ type: String }) boardId?: string
138
+ @property({ type: String }) groupId?: string
139
+ @property({ type: Boolean, attribute: 'enable-modeller' }) enableModeller?: boolean
140
+
141
+ @state() board: any
142
+ @state() boardGroupList: any[] = []
143
+ @state() playGroupList: any[] = []
148
144
 
149
145
  render() {
150
146
  var board = this.board || { name: '', description: '', playGroups: [] }
@@ -187,7 +183,7 @@ export class BoardInfo extends LitElement {
187
183
  <label>${i18next.t('label.group')}</label>
188
184
  <select
189
185
  @change=${e => (this.board.groupId = e.target.value)}
190
- .value=${this.groupId}
186
+ .value=${this.groupId || ''}
191
187
  ?disabled=${!this.enableModeller}
192
188
  >
193
189
  <option value="" ?selected=${'' == this.groupId}></option>
@@ -212,7 +208,7 @@ export class BoardInfo extends LitElement {
212
208
  dense
213
209
  raised
214
210
  danger
215
- label=${i18next.t('button.delete')}
211
+ label=${String(i18next.t('button.delete'))}
216
212
  ?disabled=${!this.enableModeller}
217
213
  @click=${this.deleteBoard.bind(this)}
218
214
  icon="delete_outline"
@@ -220,7 +216,7 @@ export class BoardInfo extends LitElement {
220
216
  <mwc-button
221
217
  dense
222
218
  raised
223
- label=${i18next.t('button.save')}
219
+ label=${String(i18next.t('button.save'))}
224
220
  ?disabled=${!this.enableModeller}
225
221
  @click=${this.updateBoard.bind(this)}
226
222
  icon="done"
@@ -366,5 +362,3 @@ export class BoardInfo extends LitElement {
366
362
  history.back()
367
363
  }
368
364
  }
369
-
370
- customElements.define('board-info', BoardInfo)