@things-factory/dashboard 9.0.0-beta.24 → 9.0.0-beta.27
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/package.json +6 -6
- package/dist-client/actions/board-settings.d.ts +0 -3
- package/dist-client/actions/board-settings.js +0 -29
- package/dist-client/actions/board-settings.js.map +0 -1
- package/dist-client/actions/index.d.ts +0 -1
- package/dist-client/actions/index.js +0 -2
- package/dist-client/actions/index.js.map +0 -1
- package/dist-client/bootstrap.d.ts +0 -2
- package/dist-client/bootstrap.js +0 -31
- package/dist-client/bootstrap.js.map +0 -1
- package/dist-client/const.d.ts +0 -5
- package/dist-client/const.js +0 -6
- package/dist-client/const.js.map +0 -1
- package/dist-client/index.d.ts +0 -1
- package/dist-client/index.js +0 -2
- package/dist-client/index.js.map +0 -1
- package/dist-client/pages/dashboard.d.ts +0 -19
- package/dist-client/pages/dashboard.js +0 -99
- package/dist-client/pages/dashboard.js.map +0 -1
- package/dist-client/reducers/board-settings.d.ts +0 -2
- package/dist-client/reducers/board-settings.js +0 -14
- package/dist-client/reducers/board-settings.js.map +0 -1
- package/dist-client/route.d.ts +0 -1
- package/dist-client/route.js +0 -10
- package/dist-client/route.js.map +0 -1
- package/dist-client/tsconfig.tsbuildinfo +0 -1
- package/dist-client/viewparts/dashboard-setting-let.d.ts +0 -26
- package/dist-client/viewparts/dashboard-setting-let.js +0 -222
- package/dist-client/viewparts/dashboard-setting-let.js.map +0 -1
- package/dist-server/index.d.ts +0 -1
- package/dist-server/index.js +0 -5
- package/dist-server/index.js.map +0 -1
- package/dist-server/service/board-settings/board-setting.d.ts +0 -7
- package/dist-server/service/board-settings/board-setting.js +0 -29
- package/dist-server/service/board-settings/board-setting.js.map +0 -1
- package/dist-server/service/board-settings/board-settings-query.d.ts +0 -4
- package/dist-server/service/board-settings/board-settings-query.js +0 -62
- package/dist-server/service/board-settings/board-settings-query.js.map +0 -1
- package/dist-server/service/board-settings/index.d.ts +0 -3
- package/dist-server/service/board-settings/index.js +0 -7
- package/dist-server/service/board-settings/index.js.map +0 -1
- package/dist-server/service/index.d.ts +0 -5
- package/dist-server/service/index.js +0 -19
- package/dist-server/service/index.js.map +0 -1
- package/dist-server/tsconfig.tsbuildinfo +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import '@material/web/icon/icon.js';
|
|
2
|
-
import '@operato/board/ox-board-selector.js';
|
|
3
|
-
import '@operato/i18n/ox-i18n.js';
|
|
4
|
-
import { LitElement } from 'lit';
|
|
5
|
-
declare const DashboardSettingLet_base: (new (...args: any[]) => {
|
|
6
|
-
_storeUnsubscribe: import("redux").Unsubscribe;
|
|
7
|
-
connectedCallback(): void;
|
|
8
|
-
disconnectedCallback(): void;
|
|
9
|
-
stateChanged(_state: unknown): void;
|
|
10
|
-
readonly isConnected: boolean;
|
|
11
|
-
}) & (new (...args: any[]) => LitElement) & typeof LitElement;
|
|
12
|
-
export declare class DashboardSettingLet extends DashboardSettingLet_base {
|
|
13
|
-
static styles: import("lit").CSSResult[];
|
|
14
|
-
private dashboard;
|
|
15
|
-
private dashboardMobile;
|
|
16
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
17
|
-
stateChanged(state: any): void;
|
|
18
|
-
onClickBoardSelector(name: string, description: string): void;
|
|
19
|
-
saveSettings({ name, value, category, description }: {
|
|
20
|
-
name: any;
|
|
21
|
-
value: any;
|
|
22
|
-
category: any;
|
|
23
|
-
description: any;
|
|
24
|
-
}): Promise<void>;
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import '@material/web/icon/icon.js';
|
|
3
|
-
import '@operato/board/ox-board-selector.js';
|
|
4
|
-
import '@operato/i18n/ox-i18n.js';
|
|
5
|
-
import gql from 'graphql-tag';
|
|
6
|
-
import { css, html, LitElement } from 'lit';
|
|
7
|
-
import { customElement, state } from 'lit/decorators.js';
|
|
8
|
-
import { connect } from 'pwa-helpers';
|
|
9
|
-
import { openPopup } from '@operato/layout';
|
|
10
|
-
import { i18next, localize } from '@operato/i18n';
|
|
11
|
-
import { store } from '@operato/shell';
|
|
12
|
-
import { client } from '@operato/graphql';
|
|
13
|
-
import { fetchBoardSettings, UPDATE_BOARD_SETTINGS } from '../actions/board-settings';
|
|
14
|
-
import { DASHBOARD, DASHBOARD_DESCRIPTION, DASHBOARD_MOBILE, DASHBOARD_MOBILE_DESCRIPTION, FALLBACK_HOME_BOARD } from '../const';
|
|
15
|
-
let DashboardSettingLet = class DashboardSettingLet extends connect(store)(localize(i18next)(LitElement)) {
|
|
16
|
-
render() {
|
|
17
|
-
return html `
|
|
18
|
-
<setting-let>
|
|
19
|
-
<ox-i18n slot="title" msgid="title.dashboard setting"></ox-i18n>
|
|
20
|
-
|
|
21
|
-
<form slot="content">
|
|
22
|
-
${[
|
|
23
|
-
{
|
|
24
|
-
title: i18next.t('label.dashboard for desktop'),
|
|
25
|
-
board: this.dashboard,
|
|
26
|
-
key: DASHBOARD,
|
|
27
|
-
description: DASHBOARD_DESCRIPTION
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
title: i18next.t('label.dashboard for mobile'),
|
|
31
|
-
board: this.dashboardMobile,
|
|
32
|
-
key: DASHBOARD_MOBILE,
|
|
33
|
-
description: DASHBOARD_MOBILE_DESCRIPTION
|
|
34
|
-
}
|
|
35
|
-
].map(field => html `
|
|
36
|
-
<div class="field">
|
|
37
|
-
<label>${field.title}</ox-i18n></label>
|
|
38
|
-
<div>
|
|
39
|
-
<div class="name">${field.board.name}</div>
|
|
40
|
-
<span class="description">${field.board.description}</span>
|
|
41
|
-
<md-icon @click=${e => this.onClickBoardSelector(field.key, field.description)}>
|
|
42
|
-
more_horiz
|
|
43
|
-
</md-icon>
|
|
44
|
-
${field.board.id
|
|
45
|
-
? html `
|
|
46
|
-
<a href=${`board-modeller/${field.board.id}`}>
|
|
47
|
-
<img
|
|
48
|
-
src=${field.board.thumbnail ||
|
|
49
|
-
'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'}
|
|
50
|
-
/>
|
|
51
|
-
</a>
|
|
52
|
-
`
|
|
53
|
-
: html ``}
|
|
54
|
-
</div>
|
|
55
|
-
</div>
|
|
56
|
-
`)}
|
|
57
|
-
</form>
|
|
58
|
-
</setting-let>
|
|
59
|
-
`;
|
|
60
|
-
}
|
|
61
|
-
stateChanged(state) {
|
|
62
|
-
var dashboard = state.boardSetting[DASHBOARD] || state.boardSetting[FALLBACK_HOME_BOARD];
|
|
63
|
-
var dashboardMobile = state.boardSetting[DASHBOARD_MOBILE] || dashboard;
|
|
64
|
-
this.dashboard = (dashboard ? dashboard.board : {}) || {};
|
|
65
|
-
this.dashboardMobile = (dashboardMobile ? dashboardMobile.board : {}) || {};
|
|
66
|
-
}
|
|
67
|
-
onClickBoardSelector(name, description) {
|
|
68
|
-
var _a, _b;
|
|
69
|
-
var popup = openPopup(html `
|
|
70
|
-
<ox-board-selector
|
|
71
|
-
.creatable=${true}
|
|
72
|
-
.value=${name == DASHBOARD ? (_a = this.dashboard) === null || _a === void 0 ? void 0 : _a.id : (_b = this.dashboardMobile) === null || _b === void 0 ? void 0 : _b.id}
|
|
73
|
-
@board-selected=${async (e) => {
|
|
74
|
-
var board = e.detail.board;
|
|
75
|
-
await this.saveSettings({
|
|
76
|
-
name,
|
|
77
|
-
value: board.id,
|
|
78
|
-
category: 'board',
|
|
79
|
-
description
|
|
80
|
-
});
|
|
81
|
-
var settings = await fetchBoardSettings([FALLBACK_HOME_BOARD, DASHBOARD, DASHBOARD_MOBILE]);
|
|
82
|
-
store.dispatch({
|
|
83
|
-
type: UPDATE_BOARD_SETTINGS,
|
|
84
|
-
settings: settings.reduce((settings, setting) => {
|
|
85
|
-
settings[setting.name] = setting;
|
|
86
|
-
return settings;
|
|
87
|
-
}, {})
|
|
88
|
-
});
|
|
89
|
-
popup.close();
|
|
90
|
-
this.requestUpdate();
|
|
91
|
-
}}
|
|
92
|
-
></ox-board-selector>
|
|
93
|
-
`, {
|
|
94
|
-
backdrop: true,
|
|
95
|
-
size: 'large',
|
|
96
|
-
title: i18next.t('title.dashboard setting')
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
async saveSettings({ name, value, category, description }) {
|
|
100
|
-
if (!(name && value)) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
await client.query({
|
|
104
|
-
query: gql `
|
|
105
|
-
mutation UpdateSetting($patch: SettingPatch!, $name: String!) {
|
|
106
|
-
updateSetting(patch: $patch, name: $name) {
|
|
107
|
-
name
|
|
108
|
-
value
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
`,
|
|
112
|
-
variables: {
|
|
113
|
-
name,
|
|
114
|
-
patch: {
|
|
115
|
-
name,
|
|
116
|
-
description,
|
|
117
|
-
category,
|
|
118
|
-
value
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
DashboardSettingLet.styles = [
|
|
125
|
-
css `
|
|
126
|
-
div.field {
|
|
127
|
-
display: flex;
|
|
128
|
-
flex-direction: row;
|
|
129
|
-
align-items: flex-start;
|
|
130
|
-
max-width: 100%;
|
|
131
|
-
overflow: hidden;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
div.field > * {
|
|
135
|
-
flex: none;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
div.field > div {
|
|
139
|
-
flex: 1;
|
|
140
|
-
display: flex;
|
|
141
|
-
flex-direction: column;
|
|
142
|
-
align-items: flex-start;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
div.field a {
|
|
146
|
-
overflow: hidden;
|
|
147
|
-
border: var(--border-dim-color);
|
|
148
|
-
border-radius: var(--border-radius);
|
|
149
|
-
background-color: rgba(0, 0, 0, 0.1);
|
|
150
|
-
min-width: 50px;
|
|
151
|
-
min-height: 50px;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
div.field img {
|
|
155
|
-
max-height: 250px;
|
|
156
|
-
max-width: 100%;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.name {
|
|
160
|
-
color: var(--md-sys-color-on-secondary-container);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
.description {
|
|
164
|
-
font-size: 0.7rem;
|
|
165
|
-
opacity: 0.7;
|
|
166
|
-
color: var(--md-sys-color-on-secondary-container);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
label {
|
|
170
|
-
width: 80px;
|
|
171
|
-
padding-right: var(--spacing-medium);
|
|
172
|
-
font: bold 0.9em var(--theme-font);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
setting-let > form {
|
|
176
|
-
display: grid;
|
|
177
|
-
grid-template-columns: 1fr 1fr;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
md-icon {
|
|
181
|
-
--md-icon-size: 18px;
|
|
182
|
-
margin: 2px 2px 5px 2px;
|
|
183
|
-
padding: 0 var(--spacing-medium);
|
|
184
|
-
color: var(--md-sys-on-secondary-container, #fff);
|
|
185
|
-
background-color: var(--md-sys-secondary-container, #394e64);
|
|
186
|
-
border-radius: var(--border-radius, 5px);
|
|
187
|
-
border: var(--button-border, 1px solid transparent);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
md-icon:hover,
|
|
191
|
-
md-icon:active {
|
|
192
|
-
background-color: var(--button-active-background-color, #22a6a7);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
@media screen and (max-width: 460px) {
|
|
196
|
-
setting-let > form {
|
|
197
|
-
display: flex;
|
|
198
|
-
flex-direction: column;
|
|
199
|
-
}
|
|
200
|
-
div.field {
|
|
201
|
-
border-bottom: var(--border-dim-color);
|
|
202
|
-
padding: var(--spacing-medium);
|
|
203
|
-
}
|
|
204
|
-
md-icon {
|
|
205
|
-
padding: var(--spacing-small) var(--spacing-medium);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
`
|
|
209
|
-
];
|
|
210
|
-
__decorate([
|
|
211
|
-
state(),
|
|
212
|
-
__metadata("design:type", Object)
|
|
213
|
-
], DashboardSettingLet.prototype, "dashboard", void 0);
|
|
214
|
-
__decorate([
|
|
215
|
-
state(),
|
|
216
|
-
__metadata("design:type", Object)
|
|
217
|
-
], DashboardSettingLet.prototype, "dashboardMobile", void 0);
|
|
218
|
-
DashboardSettingLet = __decorate([
|
|
219
|
-
customElement('dashboard-setting-let')
|
|
220
|
-
], DashboardSettingLet);
|
|
221
|
-
export { DashboardSettingLet };
|
|
222
|
-
//# sourceMappingURL=dashboard-setting-let.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-setting-let.js","sourceRoot":"","sources":["../../client/viewparts/dashboard-setting-let.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,qCAAqC,CAAA;AAC5C,OAAO,0BAA0B,CAAA;AAEjC,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,UAAU,CAAA;AAGV,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;IA2FpF,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;YAKH;YACA;gBACE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;gBAC/C,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,GAAG,EAAE,SAAS;gBACd,WAAW,EAAE,qBAAqB;aACnC;YACD;gBACE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;gBAC9C,KAAK,EAAE,IAAI,CAAC,eAAe;gBAC3B,GAAG,EAAE,gBAAgB;gBACrB,WAAW,EAAE,4BAA4B;aAC1C;SACF,CAAC,GAAG,CACH,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;;yBAEA,KAAK,CAAC,KAAK;;sCAEE,KAAK,CAAC,KAAK,CAAC,IAAI;8CACR,KAAK,CAAC,KAAK,CAAC,WAAW;oCACjC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC;;;oBAI5E,KAAK,CAAC,KAAK,CAAC,EAAE;YACZ,CAAC,CAAC,IAAI,CAAA;oCACQ,kBAAkB,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;;oCAElC,KAAK,CAAC,KAAK,CAAC,SAAS;gBAC3B,gFAAgF;;;yBAGrF;YACH,CAAC,CAAC,IAAI,CAAA,EACV;;;aAGL,CACF;;;KAGN,CAAA;IACH,CAAC;IAED,YAAY,CAAC,KAAU;QACrB,IAAI,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAA;QACxF,IAAI,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAA;QAEvE,IAAI,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QACzD,IAAI,CAAC,eAAe,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;IAC7E,CAAC;IAED,oBAAoB,CAAC,IAAY,EAAE,WAAmB;;QACpD,IAAI,KAAK,GAAG,SAAS,CACnB,IAAI,CAAA;;uBAEa,IAAI;mBACR,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,SAAS,0CAAE,EAAE,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,eAAe,0CAAE,EAAE;4BACxD,KAAK,EAAC,CAAC,EAAC,EAAE;YAC1B,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;YAE1B,MAAM,IAAI,CAAC,YAAY,CAAC;gBACtB,IAAI;gBACJ,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,QAAQ,EAAE,OAAO;gBACjB,WAAW;aACZ,CAAC,CAAA;YAEF,IAAI,QAAQ,GAAG,MAAM,kBAAkB,CAAC,CAAC,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAA;YAC3F,KAAK,CAAC,QAAQ,CAAC;gBACb,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;oBAC9C,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;oBAChC,OAAO,QAAQ,CAAA;gBACjB,CAAC,EAAE,EAAE,CAAC;aACP,CAAC,CAAA;YAEF,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;;OAEJ,EACD;YACE,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;SAC5C,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE;QACvD,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QAED,MAAM,MAAM,CAAC,KAAK,CAAC;YACjB,KAAK,EAAE,GAAG,CAAA;;;;;;;OAOT;YACD,SAAS,EAAE;gBACT,IAAI;gBACJ,KAAK,EAAE;oBACL,IAAI;oBACJ,WAAW;oBACX,QAAQ;oBACR,KAAK;iBACN;aACF;SACF,CAAC,CAAA;IACJ,CAAC;;AAlNM,0BAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmFF;CACF,AArFY,CAqFZ;AAEgB;IAAhB,KAAK,EAAE;;sDAAuB;AACd;IAAhB,KAAK,EAAE;;4DAA6B;AAzF1B,mBAAmB;IAD/B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,mBAAmB,CAoN/B","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/board/ox-board-selector.js'\nimport '@operato/i18n/ox-i18n.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers'\n\nimport { openPopup } from '@operato/layout'\nimport { i18next, localize } from '@operato/i18n'\nimport { store } from '@operato/shell'\nimport { client } from '@operato/graphql'\n\nimport { fetchBoardSettings, UPDATE_BOARD_SETTINGS } from '../actions/board-settings'\nimport {\n DASHBOARD,\n DASHBOARD_DESCRIPTION,\n DASHBOARD_MOBILE,\n DASHBOARD_MOBILE_DESCRIPTION,\n FALLBACK_HOME_BOARD\n} from '../const'\n\n@customElement('dashboard-setting-let')\nexport class DashboardSettingLet extends connect(store)(localize(i18next)(LitElement)) {\n static styles = [\n css`\n div.field {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n max-width: 100%;\n overflow: hidden;\n }\n\n div.field > * {\n flex: none;\n }\n\n div.field > div {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n\n div.field a {\n overflow: hidden;\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n background-color: rgba(0, 0, 0, 0.1);\n min-width: 50px;\n min-height: 50px;\n }\n\n div.field img {\n max-height: 250px;\n max-width: 100%;\n }\n\n .name {\n color: var(--md-sys-color-on-secondary-container);\n }\n\n .description {\n font-size: 0.7rem;\n opacity: 0.7;\n color: var(--md-sys-color-on-secondary-container);\n }\n\n label {\n width: 80px;\n padding-right: var(--spacing-medium);\n font: bold 0.9em var(--theme-font);\n }\n\n setting-let > form {\n display: grid;\n grid-template-columns: 1fr 1fr;\n }\n\n md-icon {\n --md-icon-size: 18px;\n margin: 2px 2px 5px 2px;\n padding: 0 var(--spacing-medium);\n color: var(--md-sys-on-secondary-container, #fff);\n background-color: var(--md-sys-secondary-container, #394e64);\n border-radius: var(--border-radius, 5px);\n border: var(--button-border, 1px solid transparent);\n }\n\n md-icon:hover,\n md-icon:active {\n background-color: var(--button-active-background-color, #22a6a7);\n }\n\n @media screen and (max-width: 460px) {\n setting-let > form {\n display: flex;\n flex-direction: column;\n }\n div.field {\n border-bottom: var(--border-dim-color);\n padding: var(--spacing-medium);\n }\n md-icon {\n padding: var(--spacing-small) var(--spacing-medium);\n }\n }\n `\n ]\n\n @state() private dashboard: any\n @state() private dashboardMobile: any\n\n render() {\n return html`\n <setting-let>\n <ox-i18n slot=\"title\" msgid=\"title.dashboard setting\"></ox-i18n>\n\n <form slot=\"content\">\n ${[\n {\n title: i18next.t('label.dashboard for desktop'),\n board: this.dashboard,\n key: DASHBOARD,\n description: DASHBOARD_DESCRIPTION\n },\n {\n title: i18next.t('label.dashboard for mobile'),\n board: this.dashboardMobile,\n key: DASHBOARD_MOBILE,\n description: DASHBOARD_MOBILE_DESCRIPTION\n }\n ].map(\n field => html`\n <div class=\"field\">\n <label>${field.title}</ox-i18n></label>\n <div>\n <div class=\"name\">${field.board.name}</div>\n <span class=\"description\">${field.board.description}</span>\n <md-icon @click=${e => this.onClickBoardSelector(field.key, field.description)}>\n more_horiz\n </md-icon>\n ${\n field.board.id\n ? html`\n <a href=${`board-modeller/${field.board.id}`}>\n <img\n src=${field.board.thumbnail ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'}\n />\n </a>\n `\n : html``\n }\n </div>\n </div>\n `\n )}\n </form>\n </setting-let>\n `\n }\n\n stateChanged(state: any) {\n var dashboard = state.boardSetting[DASHBOARD] || state.boardSetting[FALLBACK_HOME_BOARD]\n var dashboardMobile = state.boardSetting[DASHBOARD_MOBILE] || dashboard\n\n this.dashboard = (dashboard ? dashboard.board : {}) || {}\n this.dashboardMobile = (dashboardMobile ? dashboardMobile.board : {}) || {}\n }\n\n onClickBoardSelector(name: string, description: string) {\n var popup = openPopup(\n html`\n <ox-board-selector\n .creatable=${true}\n .value=${name == DASHBOARD ? this.dashboard?.id : this.dashboardMobile?.id}\n @board-selected=${async e => {\n var board = e.detail.board\n\n await this.saveSettings({\n name,\n value: board.id,\n category: 'board',\n description\n })\n\n var settings = await fetchBoardSettings([FALLBACK_HOME_BOARD, DASHBOARD, DASHBOARD_MOBILE])\n store.dispatch({\n type: UPDATE_BOARD_SETTINGS,\n settings: settings.reduce((settings, setting) => {\n settings[setting.name] = setting\n return settings\n }, {})\n })\n\n popup.close()\n this.requestUpdate()\n }}\n ></ox-board-selector>\n `,\n {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.dashboard setting')\n }\n )\n }\n\n async saveSettings({ name, value, category, description }) {\n if (!(name && value)) {\n return\n }\n\n await client.query({\n query: gql`\n mutation UpdateSetting($patch: SettingPatch!, $name: String!) {\n updateSetting(patch: $patch, name: $name) {\n name\n value\n }\n }\n `,\n variables: {\n name,\n patch: {\n name,\n description,\n category,\n value\n }\n }\n })\n }\n}\n"]}
|
package/dist-server/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './service';
|
package/dist-server/index.js
DELETED
package/dist-server/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB","sourcesContent":["export * from './service'\n"]}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BoardSetting = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const board_service_1 = require("@things-factory/board-service");
|
|
7
|
-
let BoardSetting = class BoardSetting {
|
|
8
|
-
};
|
|
9
|
-
exports.BoardSetting = BoardSetting;
|
|
10
|
-
tslib_1.__decorate([
|
|
11
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.ID),
|
|
12
|
-
tslib_1.__metadata("design:type", String)
|
|
13
|
-
], BoardSetting.prototype, "id", void 0);
|
|
14
|
-
tslib_1.__decorate([
|
|
15
|
-
(0, type_graphql_1.Field)(),
|
|
16
|
-
tslib_1.__metadata("design:type", String)
|
|
17
|
-
], BoardSetting.prototype, "name", void 0);
|
|
18
|
-
tslib_1.__decorate([
|
|
19
|
-
(0, type_graphql_1.Field)(),
|
|
20
|
-
tslib_1.__metadata("design:type", String)
|
|
21
|
-
], BoardSetting.prototype, "value", void 0);
|
|
22
|
-
tslib_1.__decorate([
|
|
23
|
-
(0, type_graphql_1.Field)(type => board_service_1.Board),
|
|
24
|
-
tslib_1.__metadata("design:type", board_service_1.Board)
|
|
25
|
-
], BoardSetting.prototype, "board", void 0);
|
|
26
|
-
exports.BoardSetting = BoardSetting = tslib_1.__decorate([
|
|
27
|
-
(0, type_graphql_1.ObjectType)()
|
|
28
|
-
], BoardSetting);
|
|
29
|
-
//# sourceMappingURL=board-setting.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"board-setting.js","sourceRoot":"","sources":["../../../server/service/board-settings/board-setting.ts"],"names":[],"mappings":";;;;AAAA,+CAAoD;AACpD,iEAAqD;AAG9C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAYxB,CAAA;AAZY,oCAAY;AAEvB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;wCACR;AAGV;IADC,IAAA,oBAAK,GAAE;;0CACI;AAGZ;IADC,IAAA,oBAAK,GAAE;;2CACK;AAGb;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,qBAAK,CAAC;sCACd,qBAAK;2CAAA;uBAXD,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAYxB","sourcesContent":["import { ObjectType, Field, ID } from 'type-graphql'\nimport { Board } from '@things-factory/board-service'\n\n@ObjectType()\nexport class BoardSetting {\n @Field(type => ID)\n id: string\n\n @Field()\n name: string\n\n @Field()\n value: string\n\n @Field(type => Board)\n board: Board\n}\n"]}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BoardSettingsQuery = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const board_service_1 = require("@things-factory/board-service");
|
|
7
|
-
const setting_base_1 = require("@things-factory/setting-base");
|
|
8
|
-
const shell_1 = require("@things-factory/shell");
|
|
9
|
-
const board_setting_1 = require("./board-setting");
|
|
10
|
-
let BoardSettingsQuery = class BoardSettingsQuery {
|
|
11
|
-
async boardSettings(names, context) {
|
|
12
|
-
const { domain } = context.state;
|
|
13
|
-
const queryBuilder = (0, shell_1.getRepository)(setting_base_1.Setting).createQueryBuilder();
|
|
14
|
-
var qb = queryBuilder
|
|
15
|
-
.innerJoin(board_service_1.Board, 'Board', 'Setting.value = CAST(Board.id AS char(36))')
|
|
16
|
-
.select([
|
|
17
|
-
'Setting.id as id',
|
|
18
|
-
'Setting.name as name',
|
|
19
|
-
'Setting.value as value',
|
|
20
|
-
'Board.id as boardId',
|
|
21
|
-
'Board.name as boardName',
|
|
22
|
-
'Board.description as boardDescription',
|
|
23
|
-
'Board.thumbnail as boardThumbnail'
|
|
24
|
-
])
|
|
25
|
-
.where('Setting.domain.id = :domain and Setting.category = :category', {
|
|
26
|
-
domain: domain.id,
|
|
27
|
-
category: 'board'
|
|
28
|
-
});
|
|
29
|
-
if (names && names.length)
|
|
30
|
-
qb.andWhere('Setting.name IN (:...names)', { names });
|
|
31
|
-
var boardSettingList = await qb.getRawMany();
|
|
32
|
-
return boardSettingList.map(boardSetting => {
|
|
33
|
-
var setting = {
|
|
34
|
-
board: {}
|
|
35
|
-
};
|
|
36
|
-
for (let key in boardSetting) {
|
|
37
|
-
if (key.includes('board')) {
|
|
38
|
-
let originKey = key;
|
|
39
|
-
key = key.replace('board', '').toLowerCase();
|
|
40
|
-
setting.board[key] = boardSetting[originKey];
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
setting[key] = boardSetting[key];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return setting;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
exports.BoardSettingsQuery = BoardSettingsQuery;
|
|
51
|
-
tslib_1.__decorate([
|
|
52
|
-
(0, type_graphql_1.Query)(returns => [board_setting_1.BoardSetting], { description: 'To fetch a BoardSettings' }),
|
|
53
|
-
tslib_1.__param(0, (0, type_graphql_1.Arg)('names', type => [String], { nullable: true })),
|
|
54
|
-
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
55
|
-
tslib_1.__metadata("design:type", Function),
|
|
56
|
-
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
57
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
58
|
-
], BoardSettingsQuery.prototype, "boardSettings", null);
|
|
59
|
-
exports.BoardSettingsQuery = BoardSettingsQuery = tslib_1.__decorate([
|
|
60
|
-
(0, type_graphql_1.Resolver)(board_setting_1.BoardSetting)
|
|
61
|
-
], BoardSettingsQuery);
|
|
62
|
-
//# sourceMappingURL=board-settings-query.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"board-settings-query.js","sourceRoot":"","sources":["../../../server/service/board-settings/board-settings-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAwD;AAExD,iEAAqD;AACrD,+DAAsD;AACtD,iDAAqD;AAErD,mDAA8C;AAGvC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAEvB,AAAN,KAAK,CAAC,aAAa,CAAqD,KAAe,EAAS,OAAY;QAC1G,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAChC,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,sBAAO,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAEhE,IAAI,EAAE,GAAG,YAAY;aAClB,SAAS,CAAC,qBAAK,EAAE,OAAO,EAAE,4CAA4C,CAAC;aACvE,MAAM,CAAC;YACN,kBAAkB;YAClB,sBAAsB;YACtB,wBAAwB;YACxB,qBAAqB;YACrB,yBAAyB;YACzB,uCAAuC;YACvC,mCAAmC;SACpC,CAAC;aACD,KAAK,CAAC,8DAA8D,EAAE;YACrE,MAAM,EAAE,MAAM,CAAC,EAAE;YACjB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAA;QAEJ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,EAAE,CAAC,QAAQ,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAEhF,IAAI,gBAAgB,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;QAE5C,OAAO,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACzC,IAAI,OAAO,GAAQ;gBACjB,KAAK,EAAE,EAAE;aACV,CAAA;YAED,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,IAAI,SAAS,GAAG,GAAG,CAAA;oBACnB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;oBAC5C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;gBAC9C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAClC,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AA5CY,gDAAkB;AAEvB;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,4BAAY,CAAC,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;IACzD,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAAmB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;uDAyC9F;6BA3CU,kBAAkB;IAD9B,IAAA,uBAAQ,EAAC,4BAAY,CAAC;GACV,kBAAkB,CA4C9B","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { Board } from '@things-factory/board-service'\nimport { Setting } from '@things-factory/setting-base'\nimport { getRepository } from '@things-factory/shell'\n\nimport { BoardSetting } from './board-setting'\n\n@Resolver(BoardSetting)\nexport class BoardSettingsQuery {\n @Query(returns => [BoardSetting], { description: 'To fetch a BoardSettings' })\n async boardSettings(@Arg('names', type => [String], { nullable: true }) names: string[], @Ctx() context: any): Promise<BoardSetting[]> {\n const { domain } = context.state\n const queryBuilder = getRepository(Setting).createQueryBuilder()\n\n var qb = queryBuilder\n .innerJoin(Board, 'Board', 'Setting.value = CAST(Board.id AS char(36))')\n .select([\n 'Setting.id as id',\n 'Setting.name as name',\n 'Setting.value as value',\n 'Board.id as boardId',\n 'Board.name as boardName',\n 'Board.description as boardDescription',\n 'Board.thumbnail as boardThumbnail'\n ])\n .where('Setting.domain.id = :domain and Setting.category = :category', {\n domain: domain.id,\n category: 'board'\n })\n\n if (names && names.length) qb.andWhere('Setting.name IN (:...names)', { names })\n\n var boardSettingList = await qb.getRawMany()\n\n return boardSettingList.map(boardSetting => {\n var setting: any = {\n board: {}\n }\n\n for (let key in boardSetting) {\n if (key.includes('board')) {\n let originKey = key\n key = key.replace('board', '').toLowerCase()\n setting.board[key] = boardSetting[originKey]\n } else {\n setting[key] = boardSetting[key]\n }\n }\n\n return setting\n })\n }\n}\n"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolvers = exports.entities = void 0;
|
|
4
|
-
const board_settings_query_1 = require("./board-settings-query");
|
|
5
|
-
exports.entities = [];
|
|
6
|
-
exports.resolvers = [board_settings_query_1.BoardSettingsQuery];
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/board-settings/index.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAE9C,QAAA,QAAQ,GAAG,EAAE,CAAA;AACb,QAAA,SAAS,GAAG,CAAC,yCAAkB,CAAC,CAAA","sourcesContent":["import { BoardSettingsQuery } from './board-settings-query'\n\nexport const entities = []\nexport const resolvers = [BoardSettingsQuery]\n"]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.schema = exports.entities = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
/* EXPORT ENTITY TYPES */
|
|
6
|
-
tslib_1.__exportStar(require("./board-settings/board-setting"), exports);
|
|
7
|
-
/* IMPORT ENTITIES AND RESOLVERS */
|
|
8
|
-
const board_settings_1 = require("./board-settings");
|
|
9
|
-
exports.entities = [
|
|
10
|
-
/* ENTITIES */
|
|
11
|
-
...board_settings_1.entities
|
|
12
|
-
];
|
|
13
|
-
exports.schema = {
|
|
14
|
-
resolverClasses: [
|
|
15
|
-
/* RESOLVER CLASSES */
|
|
16
|
-
...board_settings_1.resolvers
|
|
17
|
-
]
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,yEAA8C;AAE9C,mCAAmC;AACnC,qDAAyG;AAE5F,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,yBAAqB;CACzB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,0BAAsB;KAC1B;CACF,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './board-settings/board-setting'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport { entities as BoardSettingsEntities, resolvers as BoardSettingsResolvers } from './board-settings'\n\nexport const entities = [\n /* ENTITIES */\n ...BoardSettingsEntities\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...BoardSettingsResolvers\n ]\n}\n"]}
|