@things-factory/system 8.0.0-beta.1 → 8.0.0-beta.2
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 +4 -4
- package/client/bootstrap.ts +0 -23
- package/client/index.ts +0 -1
- package/client/pages/system-info.ts +0 -186
- package/client/route.ts +0 -7
- package/client/themes/system-theme.css +0 -14
- package/client/viewparts/license-info.ts +0 -84
- package/client/viewparts/opensource-license.ts +0 -75
- package/client/viewparts/release-note-notice.ts +0 -53
- package/client/viewparts/release-note-setting-let.ts +0 -52
- package/server/index.ts +0 -1
- package/server/routes.ts +0 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/system",
|
|
3
|
-
"version": "8.0.0-beta.
|
|
3
|
+
"version": "8.0.0-beta.2",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "dist-client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"@operato/i18n": "^8.0.0-beta",
|
|
33
33
|
"@operato/layout": "^8.0.0-beta",
|
|
34
34
|
"@operato/markdown": "^8.0.0-beta",
|
|
35
|
-
"@things-factory/env": "^8.0.0-beta.
|
|
36
|
-
"@things-factory/more-base": "^8.0.0-beta.
|
|
35
|
+
"@things-factory/env": "^8.0.0-beta.2",
|
|
36
|
+
"@things-factory/more-base": "^8.0.0-beta.2"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "f03431a09435511b2595515658f9cb8f78ba4ebb"
|
|
39
39
|
}
|
package/client/bootstrap.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import '@material/web/icon/icon.js'
|
|
2
|
-
import '@operato/i18n/ox-i18n.js'
|
|
3
|
-
|
|
4
|
-
import { html } from 'lit'
|
|
5
|
-
|
|
6
|
-
import { TOOL_POSITION } from '@operato/layout'
|
|
7
|
-
import { navigate, store } from '@operato/shell'
|
|
8
|
-
import { ADD_MORENDA } from '@things-factory/more-base/client'
|
|
9
|
-
|
|
10
|
-
export default function bootstrap() {
|
|
11
|
-
/* add user profile morenda */
|
|
12
|
-
store.dispatch({
|
|
13
|
-
type: ADD_MORENDA,
|
|
14
|
-
morenda: {
|
|
15
|
-
icon: html` <md-icon>info</md-icon> `,
|
|
16
|
-
name: html` <ox-i18n msgid="label.about-system"></ox-i18n> `,
|
|
17
|
-
position: TOOL_POSITION.REAR_END,
|
|
18
|
-
action: () => {
|
|
19
|
-
navigate('system')
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
})
|
|
23
|
-
}
|
package/client/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './viewparts/release-note-setting-let'
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import '@material/web/icon/icon.js'
|
|
2
|
-
import '@material/web/button/text-button.js'
|
|
3
|
-
import '@operato/i18n/ox-i18n.js'
|
|
4
|
-
import '../viewparts/opensource-license'
|
|
5
|
-
import '../viewparts/license-info'
|
|
6
|
-
|
|
7
|
-
import { css, html } from 'lit'
|
|
8
|
-
import { customElement } from 'lit/decorators.js'
|
|
9
|
-
|
|
10
|
-
import { openHelp } from '@operato/help'
|
|
11
|
-
import { i18next, localize } from '@operato/i18n'
|
|
12
|
-
import { openPopup } from '@operato/layout'
|
|
13
|
-
import { PageView } from '@operato/shell'
|
|
14
|
-
|
|
15
|
-
const ENV = process.env
|
|
16
|
-
|
|
17
|
-
@customElement('system-info')
|
|
18
|
-
export class SystemInfo extends localize(i18next)(PageView) {
|
|
19
|
-
static styles = css`
|
|
20
|
-
:host {
|
|
21
|
-
display: block;
|
|
22
|
-
position: relative;
|
|
23
|
-
text-align: center;
|
|
24
|
-
|
|
25
|
-
background-color: var(--system-info-background-color);
|
|
26
|
-
padding: var(--system-info-content-padding);
|
|
27
|
-
color: var(--system-info-color);
|
|
28
|
-
font: var(--system-info-font);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
:host * {
|
|
32
|
-
vertical-align: middle;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
#refresh-button {
|
|
36
|
-
border-radius: var(--border-radius);
|
|
37
|
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
38
|
-
|
|
39
|
-
text-transform: capitalize;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
div {
|
|
43
|
-
padding: 10px;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
strong {
|
|
47
|
-
font: var(--system-info-appname-font);
|
|
48
|
-
color: var(--system-info-appname-color);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
span {
|
|
52
|
-
display: block;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
span.description {
|
|
56
|
-
padding: 3px 10px;
|
|
57
|
-
font: var(--system-info-description-font);
|
|
58
|
-
color: var(--system-info-description-color);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
span.version {
|
|
62
|
-
display: inline-block;
|
|
63
|
-
border-radius: 5px;
|
|
64
|
-
opacity: 0.8;
|
|
65
|
-
background-color: var(--system-info-version-background-color);
|
|
66
|
-
padding: 3px 10px;
|
|
67
|
-
font: var(--system-info-version-font);
|
|
68
|
-
color: var(--system-info-version-color);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.poweredBy {
|
|
72
|
-
background-color: #efefef;
|
|
73
|
-
position: absolute;
|
|
74
|
-
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
|
75
|
-
padding: 7px 0;
|
|
76
|
-
width: 100%;
|
|
77
|
-
bottom: 0;
|
|
78
|
-
text-align: center;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.poweredBy md-icon {
|
|
82
|
-
opacity: var(--help-icon-opacity, 0.4);
|
|
83
|
-
font-size: var(--help-icon-size, 18px);
|
|
84
|
-
color: var(--help-icon-color);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.poweredBy md-icon:hover {
|
|
88
|
-
cursor: help;
|
|
89
|
-
opacity: var(--help-icon-hover-opacity, 1);
|
|
90
|
-
color: var(--help-icon-hover-color);
|
|
91
|
-
}
|
|
92
|
-
`
|
|
93
|
-
|
|
94
|
-
private _applicationMeta?: { icon?: string; title: string; description: string; copyright: string }
|
|
95
|
-
|
|
96
|
-
get context() {
|
|
97
|
-
return {
|
|
98
|
-
title: i18next.t('label.about-system')
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
get applicationMeta() {
|
|
103
|
-
if (!this._applicationMeta) {
|
|
104
|
-
var iconLink = document.querySelector('link[rel="application-icon"]') as HTMLLinkElement
|
|
105
|
-
var titleMeta = document.querySelector('meta[name="application-name"]') as HTMLMetaElement
|
|
106
|
-
var descriptionMeta = document.querySelector('meta[name="application-description"]') as HTMLMetaElement
|
|
107
|
-
var copyrightMeta = document.querySelector('meta[name="application-copyright"]') as HTMLMetaElement
|
|
108
|
-
|
|
109
|
-
this._applicationMeta = {
|
|
110
|
-
icon: iconLink?.href,
|
|
111
|
-
title: titleMeta ? titleMeta.content : 'Things Factory',
|
|
112
|
-
description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software',
|
|
113
|
-
copyright: copyrightMeta ? copyrightMeta.content : 'Copyright © hatiolab.com. All Rights Reserved." />'
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return this._applicationMeta
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
render() {
|
|
121
|
-
var { icon, title, description, copyright } = this.applicationMeta
|
|
122
|
-
|
|
123
|
-
return html`
|
|
124
|
-
<img src=${icon!} alt="system logo" />
|
|
125
|
-
|
|
126
|
-
<div>
|
|
127
|
-
<strong>${title}</strong>
|
|
128
|
-
<span class="description">${description}</span>
|
|
129
|
-
<span class="version"
|
|
130
|
-
><ox-i18n msgid="field.version"></ox-i18n> : ${ENV['APP-VERSION']}-${ENV['NODE-ENV']}</span
|
|
131
|
-
>
|
|
132
|
-
</div>
|
|
133
|
-
|
|
134
|
-
<div>
|
|
135
|
-
<md-text-button
|
|
136
|
-
id="refresh-button"
|
|
137
|
-
@click=${e => {
|
|
138
|
-
location.reload()
|
|
139
|
-
}}
|
|
140
|
-
>
|
|
141
|
-
<md-icon>refresh</md-icon>
|
|
142
|
-
${String(i18next.t('label.system reload'))}
|
|
143
|
-
</md-text-button>
|
|
144
|
-
</div>
|
|
145
|
-
|
|
146
|
-
<div>
|
|
147
|
-
<span>${copyright}</span>
|
|
148
|
-
|
|
149
|
-
<span
|
|
150
|
-
>${title} is built on several
|
|
151
|
-
<a href="#" @click=${e => this.onClickOpenSourceLicense(e)}>open source software</a></span
|
|
152
|
-
>
|
|
153
|
-
<span>We are using the <a href="#" @click=${e => this.onClickLicenseInfo(e)}>license</a> as permitted. </span>
|
|
154
|
-
</div>
|
|
155
|
-
|
|
156
|
-
<div class="poweredBy">
|
|
157
|
-
<span
|
|
158
|
-
>Powered by ™Things Factory <ox-i18n msgid="field.version"></ox-i18n> ${ENV['SHELL-VERSION']}
|
|
159
|
-
<md-icon @click=${e => openHelp('about/things-factory')}>help</md-icon>
|
|
160
|
-
</span>
|
|
161
|
-
</div>
|
|
162
|
-
`
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
onClickOpenSourceLicense(e) {
|
|
166
|
-
e.preventDefault()
|
|
167
|
-
e.stopPropagation()
|
|
168
|
-
|
|
169
|
-
openPopup(html` <opensource-license></opensource-license> `, {
|
|
170
|
-
backdrop: true,
|
|
171
|
-
size: 'large',
|
|
172
|
-
title: 'Open Source Licenses'
|
|
173
|
-
})
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
onClickLicenseInfo(e) {
|
|
177
|
-
e.preventDefault()
|
|
178
|
-
e.stopPropagation()
|
|
179
|
-
|
|
180
|
-
openPopup(html` <license-info></license-info> `, {
|
|
181
|
-
backdrop: true,
|
|
182
|
-
size: 'large',
|
|
183
|
-
title: 'License Information'
|
|
184
|
-
})
|
|
185
|
-
}
|
|
186
|
-
}
|
package/client/route.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
body {
|
|
2
|
-
/* system info style */
|
|
3
|
-
--system-info-background-color: var(--md-sys-color-background);
|
|
4
|
-
--system-info-content-padding: 40px 0 0 0;
|
|
5
|
-
--system-info-font: normal 14px/24px var(--theme-font);
|
|
6
|
-
--system-info-color: #666;
|
|
7
|
-
--system-info-appname-color: var(--md-sys-color-secondary);
|
|
8
|
-
--system-info-appname-font: bold 20px/20px var(--theme-font);
|
|
9
|
-
--system-info-description-color: var(--md-sys-color-primary);
|
|
10
|
-
--system-info-description-font: normal 15px/18px var(--theme-font);
|
|
11
|
-
--system-info-version-background-color: var(--md-sys-color-secondary);
|
|
12
|
-
--system-info-version-color: #fff;
|
|
13
|
-
--system-info-version-font: normal 15px/15px var(--theme-font);
|
|
14
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { LitElement, html, css } from 'lit'
|
|
2
|
-
import { customElement, state } from 'lit/decorators.js'
|
|
3
|
-
import { ScrollbarStyles } from '@operato/styles'
|
|
4
|
-
|
|
5
|
-
@customElement('license-info')
|
|
6
|
-
export class LicenseInfo extends LitElement {
|
|
7
|
-
static styles = [
|
|
8
|
-
ScrollbarStyles,
|
|
9
|
-
css`
|
|
10
|
-
:host {
|
|
11
|
-
display: flex;
|
|
12
|
-
color: var(--md-sys-color-on-primary-container);
|
|
13
|
-
background-color: var(--md-sys-color-primary-container);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.license-info {
|
|
17
|
-
flex: 1;
|
|
18
|
-
|
|
19
|
-
display: flex;
|
|
20
|
-
flex-direction: column;
|
|
21
|
-
align-items: center;
|
|
22
|
-
font-family: Arial, sans-serif;
|
|
23
|
-
padding: 20px;
|
|
24
|
-
border: 1px solid #d1d1d1;
|
|
25
|
-
|
|
26
|
-
background-image: radial-gradient(circle, rgba(200, 200, 200, 0.5) 1px, transparent 1px),
|
|
27
|
-
radial-gradient(circle, rgba(200, 200, 200, 0.5) 1px, transparent 1px);
|
|
28
|
-
background-size: 16px 16px;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
h2 {
|
|
32
|
-
font-size: 1.8em;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.license-item {
|
|
36
|
-
display: grid;
|
|
37
|
-
grid-template-columns: 1fr auto 1fr;
|
|
38
|
-
align-items: center;
|
|
39
|
-
margin-bottom: 10px;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.label {
|
|
43
|
-
text-align: right;
|
|
44
|
-
padding: 0 10px;
|
|
45
|
-
}
|
|
46
|
-
.value {
|
|
47
|
-
text-align: left;
|
|
48
|
-
padding: 0 10px;
|
|
49
|
-
font-weight: bold;
|
|
50
|
-
}
|
|
51
|
-
`
|
|
52
|
-
]
|
|
53
|
-
|
|
54
|
-
@state() licenseInfo: { [key: string]: string } = {}
|
|
55
|
-
|
|
56
|
-
render() {
|
|
57
|
-
return html`
|
|
58
|
-
<div class="license-info">
|
|
59
|
-
<h2>라이선스 정보</h2>
|
|
60
|
-
${Object.entries(this.licenseInfo).map(
|
|
61
|
-
([key, value]) => html`
|
|
62
|
-
<div class="license-item"><span class="label">${key}</span> : <span class="value">${value}</span></div>
|
|
63
|
-
`
|
|
64
|
-
)}
|
|
65
|
-
</div>
|
|
66
|
-
`
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
async firstUpdated() {
|
|
70
|
-
try {
|
|
71
|
-
const response = await fetch('/license-info', {
|
|
72
|
-
method: 'GET'
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
if (response.ok) {
|
|
76
|
-
this.licenseInfo = await response.json()
|
|
77
|
-
} else {
|
|
78
|
-
throw new Error(`Failed to fetch license-info. Status: ${response.status}`)
|
|
79
|
-
}
|
|
80
|
-
} catch (error) {
|
|
81
|
-
console.error('Error while fetching license-info:', error)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { LitElement, html, css } from 'lit'
|
|
2
|
-
import { customElement, state } from 'lit/decorators.js'
|
|
3
|
-
import { ScrollbarStyles } from '@operato/styles'
|
|
4
|
-
|
|
5
|
-
@customElement('opensource-license')
|
|
6
|
-
export class OpenSourceLicense extends LitElement {
|
|
7
|
-
static styles = [
|
|
8
|
-
ScrollbarStyles,
|
|
9
|
-
css`
|
|
10
|
-
:host {
|
|
11
|
-
display: flex;
|
|
12
|
-
flex-direction: row;
|
|
13
|
-
|
|
14
|
-
background-color: var(--md-sys-color-surface);
|
|
15
|
-
padding: 12px 5px 12px 15px;
|
|
16
|
-
|
|
17
|
-
font-size: 13px;
|
|
18
|
-
color: #333;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
[licenses] {
|
|
22
|
-
flex: 1;
|
|
23
|
-
overflow: auto;
|
|
24
|
-
margin: 0;
|
|
25
|
-
padding: 0;
|
|
26
|
-
}
|
|
27
|
-
li::before {
|
|
28
|
-
content: '- ';
|
|
29
|
-
}
|
|
30
|
-
li {
|
|
31
|
-
padding: 2px 0 1px 0;
|
|
32
|
-
}
|
|
33
|
-
a {
|
|
34
|
-
color: #22a6a7;
|
|
35
|
-
}
|
|
36
|
-
`
|
|
37
|
-
]
|
|
38
|
-
|
|
39
|
-
@state() licenses?: Object
|
|
40
|
-
|
|
41
|
-
async firstUpdated() {
|
|
42
|
-
try {
|
|
43
|
-
const response = await fetch('/opensource-licenses', {
|
|
44
|
-
method: 'GET'
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
if (response.ok) {
|
|
48
|
-
this.licenses = await response.json()
|
|
49
|
-
} else {
|
|
50
|
-
throw new Error(`Failed to fetch licenses. Status: ${response.status}`)
|
|
51
|
-
}
|
|
52
|
-
} catch (error) {
|
|
53
|
-
console.error('Error while fetching licenses:', error)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
render() {
|
|
58
|
-
var licenses = this.licenses || {}
|
|
59
|
-
|
|
60
|
-
return html`
|
|
61
|
-
<ul licenses>
|
|
62
|
-
${Object.keys(licenses).map(name => {
|
|
63
|
-
var license = licenses[name]
|
|
64
|
-
|
|
65
|
-
return html`
|
|
66
|
-
<li>
|
|
67
|
-
<span>${name}</span>
|
|
68
|
-
<a href=${license.licenseUrl}>${license.licenses}</a>
|
|
69
|
-
</li>
|
|
70
|
-
`
|
|
71
|
-
})}
|
|
72
|
-
</ul>
|
|
73
|
-
`
|
|
74
|
-
}
|
|
75
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import '@operato/markdown'
|
|
2
|
-
|
|
3
|
-
import { LitElement, css, html } from 'lit'
|
|
4
|
-
import { customElement } from 'lit/decorators.js'
|
|
5
|
-
|
|
6
|
-
const ENV = process.env
|
|
7
|
-
const version = ENV['APP-VERSION']
|
|
8
|
-
const key = `release-note.${version}`
|
|
9
|
-
|
|
10
|
-
@customElement('release-note-notice')
|
|
11
|
-
export class ReleaseNoteNotice extends LitElement {
|
|
12
|
-
static get seen() {
|
|
13
|
-
return !!localStorage.getItem(key)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
static styles = [
|
|
17
|
-
css`
|
|
18
|
-
:host {
|
|
19
|
-
display: flex;
|
|
20
|
-
flex-direction: column;
|
|
21
|
-
|
|
22
|
-
background-color: var(--md-sys-color-surface);
|
|
23
|
-
padding: 12px 5px 12px 15px;
|
|
24
|
-
|
|
25
|
-
font-size: 13px;
|
|
26
|
-
color: #333;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
ox-markdown {
|
|
30
|
-
overflow-y: auto;
|
|
31
|
-
flex: 1;
|
|
32
|
-
}
|
|
33
|
-
`
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
render() {
|
|
37
|
-
return html`
|
|
38
|
-
<ox-markdown src="/helps/release-note.md"></ox-markdown>
|
|
39
|
-
<label> <input type="checkbox" @change=${e => this.onchangeClose(e)} /> do not show again</label>
|
|
40
|
-
`
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
onchangeClose(e) {
|
|
44
|
-
const checked = e.target.checked
|
|
45
|
-
|
|
46
|
-
if (checked) {
|
|
47
|
-
localStorage.setItem(key, 'true')
|
|
48
|
-
history.back()
|
|
49
|
-
} else {
|
|
50
|
-
localStorage.removeItem(key)
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import '@material/web/button/outlined-button.js'
|
|
2
|
-
import '@operato/i18n/ox-i18n.js'
|
|
3
|
-
import '@things-factory/setting-base/dist-client'
|
|
4
|
-
import './release-note-notice'
|
|
5
|
-
|
|
6
|
-
import { css, html, LitElement } from 'lit'
|
|
7
|
-
import { customElement } from 'lit/decorators.js'
|
|
8
|
-
|
|
9
|
-
import { i18next, localize } from '@operato/i18n'
|
|
10
|
-
import { openPopup } from '@operato/layout'
|
|
11
|
-
|
|
12
|
-
@customElement('release-note-setting-let')
|
|
13
|
-
export class ReleaseNoteSettingLet extends localize(i18next)(LitElement) {
|
|
14
|
-
static styles = [
|
|
15
|
-
css`
|
|
16
|
-
div[onoff] {
|
|
17
|
-
display: flex;
|
|
18
|
-
align-items: center;
|
|
19
|
-
border-bottom: var(--border-dim-color);
|
|
20
|
-
margin-bottom: var(--spacing-medium);
|
|
21
|
-
padding-bottom: var(--spacing-medium);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
[test] {
|
|
25
|
-
margin-left: auto;
|
|
26
|
-
}
|
|
27
|
-
`
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
render() {
|
|
31
|
-
return html`
|
|
32
|
-
<setting-let>
|
|
33
|
-
<ox-i18n slot="title" msgid="title.release note setting"></ox-i18n>
|
|
34
|
-
|
|
35
|
-
<div slot="content" onoff>
|
|
36
|
-
<md-outlined-button @click=${e => this.openReleaseNote()}>
|
|
37
|
-
<md-icon>article</md-icon>
|
|
38
|
-
${String(i18next.t('button.view_release_note'))}
|
|
39
|
-
</md-outlined-button>
|
|
40
|
-
</div>
|
|
41
|
-
</setting-let>
|
|
42
|
-
`
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
openReleaseNote() {
|
|
46
|
-
openPopup(html` <release-note-notice></release-note-notice> `, {
|
|
47
|
-
backdrop: true,
|
|
48
|
-
size: 'large',
|
|
49
|
-
title: i18next.t('title.release-note')
|
|
50
|
-
})
|
|
51
|
-
}
|
|
52
|
-
}
|
package/server/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import './routes'
|
package/server/routes.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { config } from '@things-factory/env'
|
|
2
|
-
|
|
3
|
-
process.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {
|
|
4
|
-
globalPrivateRouter.get('/frontend-config/:key', async (context, next) => {
|
|
5
|
-
const { params } = context
|
|
6
|
-
const { key } = params
|
|
7
|
-
|
|
8
|
-
context.status = 200
|
|
9
|
-
context.body = config.get(`frontEnd/${key}`, {})
|
|
10
|
-
})
|
|
11
|
-
})
|