@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/system",
3
- "version": "8.0.0-beta.1",
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.1",
36
- "@things-factory/more-base": "^8.0.0-beta.1"
35
+ "@things-factory/env": "^8.0.0-beta.2",
36
+ "@things-factory/more-base": "^8.0.0-beta.2"
37
37
  },
38
- "gitHead": "36c494e587640c1490318ef7b95adab02606e0c2"
38
+ "gitHead": "f03431a09435511b2595515658f9cb8f78ba4ebb"
39
39
  }
@@ -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 &trade;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,7 +0,0 @@
1
- export default function route(page) {
2
- switch (page) {
3
- case 'system':
4
- import('./pages/system-info')
5
- return page
6
- }
7
- }
@@ -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
- })