@dssp/dcsp 0.0.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/Dockerfile +16 -0
  3. package/_index.html +92 -0
  4. package/assets/favicon.ico +0 -0
  5. package/assets/helps/index.md +1 -0
  6. package/assets/images/hatiolab-logo.png +0 -0
  7. package/assets/images/spinner.png +0 -0
  8. package/assets/images/user.png +0 -0
  9. package/assets/manifest/apple-1024.png +0 -0
  10. package/assets/manifest/apple-120.png +0 -0
  11. package/assets/manifest/apple-152.png +0 -0
  12. package/assets/manifest/apple-167.png +0 -0
  13. package/assets/manifest/apple-180.png +0 -0
  14. package/assets/manifest/apple-touch-icon.png +0 -0
  15. package/assets/manifest/badge-128x128.png +0 -0
  16. package/assets/manifest/chrome-splashscreen-icon-384x384.png +0 -0
  17. package/assets/manifest/chrome-touch-icon-192x192.png +0 -0
  18. package/assets/manifest/icon-128x128.png +0 -0
  19. package/assets/manifest/icon-192x192.png +0 -0
  20. package/assets/manifest/icon-512x512.png +0 -0
  21. package/assets/manifest/icon-72x72.png +0 -0
  22. package/assets/manifest/icon-96x96.png +0 -0
  23. package/assets/manifest/image-metaog.png +0 -0
  24. package/assets/manifest/maskable_icon.png +0 -0
  25. package/assets/manifest/ms-icon-144x144.png +0 -0
  26. package/assets/manifest/ms-touch-icon-144x144-precomposed.png +0 -0
  27. package/assets/manifest.json +27 -0
  28. package/assets/style/home.css +134 -0
  29. package/config/config.development.js +49 -0
  30. package/config/config.production.js +83 -0
  31. package/dist-client/bootstrap.d.ts +5 -0
  32. package/dist-client/bootstrap.js +179 -0
  33. package/dist-client/bootstrap.js.map +1 -0
  34. package/dist-client/icons/menu-icons.d.ts +5 -0
  35. package/dist-client/icons/menu-icons.js +98 -0
  36. package/dist-client/icons/menu-icons.js.map +1 -0
  37. package/dist-client/index.d.ts +0 -0
  38. package/dist-client/index.js +2 -0
  39. package/dist-client/index.js.map +1 -0
  40. package/dist-client/menu.d.ts +1 -0
  41. package/dist-client/menu.js +4 -0
  42. package/dist-client/menu.js.map +1 -0
  43. package/dist-client/pages/sv-user-management.d.ts +4 -0
  44. package/dist-client/pages/sv-user-management.js +218 -0
  45. package/dist-client/pages/sv-user-management.js.map +1 -0
  46. package/dist-client/route.d.ts +1 -0
  47. package/dist-client/route.js +10 -0
  48. package/dist-client/route.js.map +1 -0
  49. package/dist-client/themes/dark.css +51 -0
  50. package/dist-client/themes/light.css +51 -0
  51. package/dist-client/tsconfig.tsbuildinfo +1 -0
  52. package/dist-client/viewparts/menu-tools.d.ts +17 -0
  53. package/dist-client/viewparts/menu-tools.js +172 -0
  54. package/dist-client/viewparts/menu-tools.js.map +1 -0
  55. package/dist-client/viewparts/user-circle.d.ts +5 -0
  56. package/dist-client/viewparts/user-circle.js +26 -0
  57. package/dist-client/viewparts/user-circle.js.map +1 -0
  58. package/dist-server/index.js +1 -0
  59. package/dist-server/index.js.map +1 -0
  60. package/dist-server/tsconfig.tsbuildinfo +1 -0
  61. package/installer/config.production.js +40 -0
  62. package/installer/docker-compose.yml +37 -0
  63. package/installer/install.sh +54 -0
  64. package/installer/migrate.sh +1 -0
  65. package/installer/start.sh +18 -0
  66. package/installer/stop.sh +1 -0
  67. package/installer/upgrade.sh +1 -0
  68. package/openapi/unstable.yaml +41 -0
  69. package/package.json +93 -0
  70. package/schema.graphql +4199 -0
  71. package/things-factory.config.js +8 -0
  72. package/translations/en.json +3 -0
  73. package/translations/ja.json +3 -0
  74. package/translations/ko.json +3 -0
  75. package/translations/ms.json +3 -0
  76. package/translations/zh.json +3 -0
  77. package/views/auth-page.html +97 -0
  78. package/views/public/home.html +88 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
+ and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
+
8
+ <!-- ## [Unreleased] -->
package/Dockerfile ADDED
@@ -0,0 +1,16 @@
1
+ # Use an official ubuntu image
2
+ FROM hatiolab/operato-env:latest
3
+
4
+ # Set the working directory to /app
5
+ WORKDIR /app
6
+
7
+ # copy application & configuration files
8
+ COPY . .
9
+
10
+ # run node install command
11
+ RUN yarn install
12
+
13
+ # Make port 3000 available to the world outside this container
14
+ EXPOSE 3000
15
+
16
+ CMD [ "yarn", "run", "serve" ]
package/_index.html ADDED
@@ -0,0 +1,92 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Construction Site Link</title>
6
+ <meta name="generator" content="Things Factory Starter Kit" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
8
+ <meta name="description" content="Revolutionizing Safety Oversight" />
9
+
10
+ <base href="/" />
11
+
12
+ <link rel="icon" href="/assets/favicon.ico" />
13
+
14
+ <!-- See https://goo.gl/OOhYW5 -->
15
+ <link rel="manifest" href="/assets/manifest.json" />
16
+
17
+ <!-- See https://goo.gl/qRE0vM -->
18
+ <meta name="theme-color" content="#181A1B" />
19
+
20
+ <!-- Add to homescreen for Chrome on Android. Fallback for manifest.json -->
21
+ <meta name="mobile-web-app-capable" content="yes" />
22
+ <meta name="application-name" content="Construction Site Link" />
23
+ <meta name="application-description" content="Revolutionizing Safety Oversight" />
24
+ <meta name="application-copyright" content="Copyright © hatiolab.com. All Rights Reserved." />
25
+ <link rel="application-icon" href="/assets/manifest/icon-96x96.png" />
26
+
27
+ <!-- Add to homescreen for Safari on iOS -->
28
+ <meta name="apple-mobile-web-app-capable" content="yes" />
29
+ <meta name="apple-mobile-web-app-status-bar-style" content="default" />
30
+ <meta name="apple-mobile-web-app-title" content="Construction Site Link" />
31
+
32
+ <!-- Homescreen icons -->
33
+ <link rel="apple-touch-icon" href="/assets/manifest/icon-48x48.png" />
34
+ <link rel="apple-touch-icon" sizes="72x72" href="/assets/manifest/icon-72x72.png" />
35
+ <link rel="apple-touch-icon" sizes="96x96" href="/assets/manifest/icon-96x96.png" />
36
+ <link rel="apple-touch-icon" sizes="144x144" href="/assets/manifest/icon-144x144.png" />
37
+ <link rel="apple-touch-icon" sizes="192x192" href="/assets/manifest/icon-192x192.png" />
38
+
39
+ <!-- Tile icon for Windows 8 (144x144 + tile color) -->
40
+ <meta name="msapplication-TileImage" content="/assets/manifest/icon-144x144.png" />
41
+ <meta name="msapplication-TileColor" content="#181A1B" />
42
+ <meta name="msapplication-tap-highlight" content="no" />
43
+
44
+ <!-- Default twitter cards -->
45
+ <meta name="twitter:card" content="summary" />
46
+ <meta name="twitter:site" content="@username" />
47
+ <meta property="og:type" content="website" />
48
+ <meta property="og:site_name" content="Construction Site Link, Revolutionizing Safety Oversight" />
49
+ <meta property="og:image" content="/assets/manifest/image-metaog.png" />
50
+
51
+ <!-- Performance tip: hint to the browser to start the handshake for the fonts site -->
52
+ <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
53
+ <link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
54
+ <link href="/node_modules/material-symbols/index.css" rel="stylesheet" />
55
+ <link href="/node_modules/@fontsource/roboto/index.css" rel="stylesheet" />
56
+ <link rel="stylesheet" href="/theme.css" />
57
+
58
+ <!-- Add any global styles for body, document, etc. -->
59
+ <style>
60
+ body {
61
+ margin: 0;
62
+ padding: 0;
63
+ overflow: hidden;
64
+
65
+ /* This is a font-stack that tries to use the system-default sans-serifs first */
66
+ font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
67
+ line-height: 1.5;
68
+ -webkit-font-smoothing: antialiased;
69
+
70
+ accent-color: var(--primary-color);
71
+ }
72
+ </style>
73
+
74
+ <script>
75
+ if ('serviceWorker' in navigator) {
76
+ navigator.serviceWorker.register('/service-worker.js', {
77
+ scope: '/'
78
+ })
79
+ }
80
+ </script>
81
+ </head>
82
+
83
+ <body class="light">
84
+ <things-app></things-app>
85
+ <noscript> Please enable JavaScript to view this website. </noscript>
86
+ <!-- Load webcomponents-loader.js to check and load any polyfills your browser needs -->
87
+ <script src="/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
88
+ <script src="/node_modules/web-animations-js/web-animations-next.min.js"></script>
89
+ <script src="/node_modules/@hatiolab/things-scene/things-scene-min.js"></script>
90
+ <!-- Built with love using PWA Starter Kit -->
91
+ </body>
92
+ </html>
Binary file
@@ -0,0 +1 @@
1
+ # Digital Construction Supervision Platform
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "Construction Site Link",
3
+ "short_name": "dssp",
4
+ "description": "Construction Site Link, Revolutionizing Safety Oversight",
5
+ "icons": [
6
+ {
7
+ "src": "manifest/icon-192x192.png",
8
+ "sizes": "192x192",
9
+ "type": "image/png"
10
+ },
11
+ {
12
+ "src": "manifest/icon-512x512.png",
13
+ "sizes": "512x512",
14
+ "type": "image/png"
15
+ },
16
+ {
17
+ "src": "manifest/maskable_icon.png",
18
+ "sizes": "682x682",
19
+ "type": "image/png",
20
+ "purpose": "maskable"
21
+ }
22
+ ],
23
+ "start_url": "/",
24
+ "display": "standalone",
25
+ "theme_color": "#181A1B",
26
+ "background_color": "#181A1B"
27
+ }
@@ -0,0 +1,134 @@
1
+ /* ===================================
2
+ 01. Google font
3
+ ====================================== */
4
+
5
+ @import url('https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900&display=swap');
6
+ @import url('https://fonts.googleapis.com/css?family=Poppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&display=swap');
7
+
8
+ /* ===================================
9
+ 02. Reset
10
+ ====================================== */
11
+
12
+ html,
13
+ body {
14
+ height: 100%;
15
+ }
16
+ *,
17
+ *::after,
18
+ *::before {
19
+ box-sizing: border-box;
20
+ }
21
+ body {
22
+ padding: 0;
23
+ margin: 0;
24
+ background: url('../images/home/bg-wrap.png') #181a1b repeat-x;
25
+ background-size: cover;
26
+ font-size: 16px;
27
+ line-height: 1.6;
28
+ font-weight: 400;
29
+ color: #fff;
30
+ font-family: 'Roboto', sans-serif;
31
+ }
32
+ a {
33
+ text-decoration: none;
34
+ }
35
+ a:hover,
36
+ a:focus {
37
+ text-decoration: none;
38
+ outline: none;
39
+ outline-offset: 0;
40
+ color: #d6000f;
41
+ }
42
+ a,
43
+ a.nav-link,
44
+ a:active,
45
+ a:focus {
46
+ color: #333;
47
+ }
48
+ a,
49
+ a.nav-link,
50
+ .btn,
51
+ input,
52
+ textarea,
53
+ select {
54
+ transition: all 0.3s ease-in-out;
55
+ -moz-transition: all 0.3s ease-in-out;
56
+ -webkit-transition: all 0.3s ease-in-out;
57
+ -ms-transition: all 0.3s ease-in-out;
58
+ -o-transition: all 0.3s ease-in-out;
59
+ }
60
+ img {
61
+ max-width: 100%;
62
+ height: auto;
63
+ }
64
+ h2 {
65
+ margin: 0;
66
+ padding: 0;
67
+ font-size: 64px;
68
+ }
69
+
70
+ /* ===================================
71
+ 03. home design
72
+ ====================================== */
73
+ .wrap {
74
+ width: 95%;
75
+ height: 100%;
76
+ overflow: hidden;
77
+ background:
78
+ url('../images/home/bg-container-left.png') left top no-repeat,
79
+ url('../images/home/bg-container-right.png') right top no-repeat;
80
+ background-size: contain;
81
+ margin: auto;
82
+ text-align: center;
83
+ }
84
+ .logo {
85
+ background: url('../images/home/logo.png') #fff no-repeat center;
86
+ background-size: 80%;
87
+ border-bottom-right-radius: 15px;
88
+ border-bottom-left-radius: 15px;
89
+ box-shadow: 3px 3px 3px 3px rgba(0, 0, 0, 0.1);
90
+ display: block;
91
+ width: 150px;
92
+ height: 100px;
93
+ margin: auto;
94
+ margin-bottom: 50px;
95
+ }
96
+ .container {
97
+ width: 60%;
98
+ margin: auto;
99
+ margin-top: 100px;
100
+ }
101
+ .container a {
102
+ background: #fff no-repeat center;
103
+ border-radius: 15px;
104
+ background-size: 55px;
105
+ background-position-y: 17px;
106
+ box-shadow: 3px 3px 3px 3px rgba(0, 0, 0, 0.1);
107
+ border: 5px solid transparent;
108
+ display: inline-block;
109
+ width: 40%;
110
+ margin: 40px 4%;
111
+ padding: 80px 0 15px 0;
112
+ color: #008c97;
113
+ font-size: 22px;
114
+ font-weight: bold;
115
+ cursor: pointer;
116
+ }
117
+ .container a:hover {
118
+ border-color: #bdeb02;
119
+ }
120
+ a.menu1 {
121
+ background-image: url('../images/home/icon-menu1.png');
122
+ background-size: 100px;
123
+ background-position-y: 20px;
124
+ }
125
+ a.menu2 {
126
+ background-image: url('../images/home/icon-menu2.png');
127
+ }
128
+ a.menu3 {
129
+ background-image: url('../images/home/icon-menu3.png');
130
+ background-position-y: 23px;
131
+ }
132
+ a.menu4 {
133
+ background-image: url('../images/home/icon-menu4.png');
134
+ }
@@ -0,0 +1,49 @@
1
+ module.exports = {
2
+ subdomain: 'system',
3
+ publicHomeRoute: '/auth/signin',
4
+ applianceJwtExpiresIn: '10y',
5
+ /* database field encryption key : 32 bytes - must be changed by every installation */
6
+ dataEncryptionKey: 'V6g5oHJZb7KcazJyL6cM95XvIDouon5b',
7
+ password: {
8
+ lowerCase: true,
9
+ upperCase: false,
10
+ digit: true,
11
+ specialCharacter: true,
12
+ allowRepeat: true,
13
+ useTightPattern: true,
14
+ useLoosePattern: false,
15
+ tightCharacterLength: 8,
16
+ looseCharacterLength: 15,
17
+ history: 2,
18
+ /* strongly recommended to make changes during installation */
19
+ defaultPassword: 'dkswjsrkafl1!'
20
+ },
21
+ /*
22
+ Only When 'disableUserSignupProcess' is set to false,
23
+ a user-initiated user registration process is provided.
24
+ When this value is true, the 'defaultPassword' for the password must be configured.
25
+ */
26
+ disableUserSignupProcess: true,
27
+ i18n: {
28
+ languages: [
29
+ {
30
+ code: 'ko-KR',
31
+ display: '한국어'
32
+ }
33
+ ],
34
+ defaultLanguage: 'ko-KR',
35
+ disableUserFavoredLanguage: true
36
+ },
37
+ scheduler: {
38
+ /* Name to be used for setting client's "application" properties when registering a schedule */
39
+ application: 'dssp',
40
+ /* Base endpoint to be used for setting "callback" properties when registering a schedule */
41
+ callbackBase: 'http://localhost:3000',
42
+ /*
43
+ Scheduler service endpoint
44
+ caution) endpoint for "localhost" has some problem.
45
+ https://github.com/node-fetch/node-fetch/issues/1624
46
+ */
47
+ endpoint: 'http://127.0.0.1:9902'
48
+ }
49
+ }
@@ -0,0 +1,83 @@
1
+ module.exports = {
2
+ subdomain: 'system',
3
+ publicHomeRoute: '/public/home',
4
+ applianceJwtExpiresIn: '10y',
5
+ /* database field encryption key : 32 bytes - must be changed by every installation */
6
+ dataEncryptionKey: 'V6g5oHJZb7KcazJyL6cM95XvIDouon5b',
7
+ password: {
8
+ lowerCase: true,
9
+ upperCase: false,
10
+ digit: true,
11
+ specialCharacter: true,
12
+ allowRepeat: true,
13
+ useTightPattern: true,
14
+ useLoosePattern: false,
15
+ tightCharacterLength: 9,
16
+ looseCharacterLength: 15,
17
+ history: 2,
18
+ /* strongly recommended to make changes during installation */
19
+ defaultPassword: 'dkswjsrkafl1!'
20
+ },
21
+ /*
22
+ Only When 'disableUserSignupProcess' is set to false,
23
+ a user-initiated user registration process is provided.
24
+ When this value is true, the 'defaultPassword' for the password must be configured.
25
+ */
26
+ disableUserSignupProcess: true,
27
+ i18n: {
28
+ languages: [
29
+ {
30
+ code: 'ko-KR',
31
+ display: '한국어'
32
+ }
33
+ ],
34
+ defaultLanguage: 'ko-KR',
35
+ disableUserFavoredLanguage: true
36
+ },
37
+ scheduler: {
38
+ /* Name to be used for setting client's "application" properties when registering a schedule */
39
+ application: 'dssp',
40
+ /* Base endpoint to be used for setting "callback" properties when registering a schedule */
41
+ callbackBase: 'http://dssp-svc',
42
+ /*
43
+ Scheduler service endpoint
44
+ caution) endpoint for "localhost" has some problem.
45
+ https://github.com/node-fetch/node-fetch/issues/1624
46
+ */
47
+ endpoint: 'http://scheduler-svc'
48
+ },
49
+ email: {
50
+ host: 'smtp.office365.com', // your sender-email smtp host
51
+ port: 587, // smtp server port
52
+ secure: false, // true for 465, false for other ports
53
+ auth: {
54
+ user: 'your sender-email',
55
+ pass: 'your sender-email password' // generated ethereal password
56
+ },
57
+ secureConnection: false,
58
+ tls: {
59
+ ciphers: 'SSLv3'
60
+ }
61
+ },
62
+ logger: {
63
+ file: {
64
+ filename: 'logs/application-%DATE%.log',
65
+ datePattern: 'YYYY-MM-DD-HH',
66
+ zippedArchive: false,
67
+ maxSize: '20m',
68
+ maxFiles: '2d',
69
+ level: 'info'
70
+ },
71
+ console: {
72
+ level: 'silly'
73
+ }
74
+ },
75
+ ormconfig: {
76
+ name: 'default',
77
+ type: 'sqlite',
78
+ database: 'db.sqlite',
79
+ synchronize: false,
80
+ logging: true,
81
+ logger: 'debug'
82
+ }
83
+ }
@@ -0,0 +1,5 @@
1
+ import '@operato/i18n/ox-i18n.js';
2
+ import '@things-factory/notification';
3
+ import './viewparts/user-circle';
4
+ import './viewparts/menu-tools';
5
+ export default function bootstrap(): Promise<void>;
@@ -0,0 +1,179 @@
1
+ import '@operato/i18n/ox-i18n.js';
2
+ import '@things-factory/notification';
3
+ import './viewparts/user-circle';
4
+ import './viewparts/menu-tools';
5
+ import { html } from 'lit-html';
6
+ import { registerDefaultGroups } from '@operato/board';
7
+ import { navigate, store } from '@operato/shell';
8
+ import { appendViewpart, toggleOverlay, TOOL_POSITION, VIEWPART_POSITION } from '@operato/layout';
9
+ import { APPEND_APP_TOOL } from '@things-factory/apptool-base/client';
10
+ import { setupAppToolPart } from '@things-factory/apptool-ui/dist-client';
11
+ import { hasPrivilege } from '@things-factory/auth-base/dist-client';
12
+ import { setAuthManagementMenus } from '@things-factory/auth-ui/dist-client';
13
+ import { ADD_MORENDA } from '@things-factory/more-base/client';
14
+ import { ADD_SETTING } from '@things-factory/setting-base/dist-client';
15
+ console.log(`%c
16
+ ▄▄▄ ▄▄ ▄▄▄ ▄▄▄
17
+ ▓ ▓ ▓ ▓ ▓ ▀ ▓ ▓
18
+ ▓ ▓ ▓ ▀▀▄▄ ▓▀▀
19
+ ▓ ▓ ▓ ▓ ▄ ▓ ▓
20
+ ▀▀▀ ▀▀ ▀▀▀ ▀
21
+ `, 'background: #222; color: #bada55');
22
+ export default async function bootstrap() {
23
+ /* set board-modeller group and default templates */
24
+ registerDefaultGroups();
25
+ await setupAppToolPart({
26
+ toolbar: true,
27
+ busybar: true,
28
+ mdibar: false
29
+ });
30
+ // await setupContextUIPart({
31
+ // titlebar: 'header',
32
+ // contextToolbar: 'page-footer'
33
+ // })
34
+ appendViewpart({
35
+ name: 'dcsp-topmenu',
36
+ viewpart: {
37
+ show: true,
38
+ template: html ` <menu-tools></menu-tools> `
39
+ },
40
+ position: VIEWPART_POSITION.NAVBAR
41
+ });
42
+ /* setting app-tools */
43
+ store.dispatch({
44
+ type: APPEND_APP_TOOL,
45
+ tool: {
46
+ name: 'app-brand',
47
+ template: html ` <span style="font-size: 1.2em;">CSL</span> `,
48
+ position: TOOL_POSITION.FRONT
49
+ }
50
+ });
51
+ store.dispatch({
52
+ type: APPEND_APP_TOOL,
53
+ tool: {
54
+ name: 'notification-badge',
55
+ template: html `
56
+ <notification-badge
57
+ @click=${e => {
58
+ toggleOverlay('notification', {
59
+ backdrop: true
60
+ });
61
+ }}
62
+ >
63
+ </notification-badge>
64
+ `,
65
+ position: TOOL_POSITION.REAR
66
+ }
67
+ });
68
+ appendViewpart({
69
+ name: 'notification',
70
+ viewpart: {
71
+ show: false,
72
+ hovering: 'edge',
73
+ template: html ` <notification-list style="min-width: 300px;"></notification-list> `
74
+ },
75
+ position: VIEWPART_POSITION.ASIDEBAR
76
+ });
77
+ store.dispatch({
78
+ type: APPEND_APP_TOOL,
79
+ tool: {
80
+ name: 'user-circle',
81
+ template: html ` <user-circle> </user-circle> `,
82
+ position: TOOL_POSITION.REAR
83
+ }
84
+ });
85
+ /* add setting morenda */
86
+ store.dispatch({
87
+ type: ADD_MORENDA,
88
+ morenda: {
89
+ icon: html ` <mwc-icon>settings</mwc-icon> `,
90
+ name: html ` <ox-i18n msgid="label.setting"></ox-i18n> `,
91
+ action: () => {
92
+ navigate('setting');
93
+ }
94
+ }
95
+ });
96
+ store.dispatch({
97
+ type: ADD_SETTING,
98
+ setting: {
99
+ seq: 21,
100
+ template: html ` <lite-menu-setting-let></lite-menu-setting-let> `
101
+ }
102
+ });
103
+ /* set auth management menus into more-panel */
104
+ setAuthManagementMenus();
105
+ if (await hasPrivilege({
106
+ privilege: 'mutation',
107
+ category: 'user',
108
+ domainOwnerGranted: true,
109
+ superUserGranted: true
110
+ })) {
111
+ store.dispatch({
112
+ type: ADD_MORENDA,
113
+ morenda: {
114
+ icon: html ` <mwc-icon>vpn_key</mwc-icon> `,
115
+ name: html ` <ox-i18n msgid="text.oauth2-clients"></ox-i18n> `,
116
+ action: () => {
117
+ navigate('oauth2-clients');
118
+ }
119
+ }
120
+ });
121
+ }
122
+ if (await hasPrivilege({
123
+ privilege: 'mutation',
124
+ category: 'board',
125
+ domainOwnerGranted: true,
126
+ superUserGranted: true
127
+ })) {
128
+ store.dispatch({
129
+ type: ADD_MORENDA,
130
+ morenda: {
131
+ icon: html ` <mwc-icon>font_download</mwc-icon> `,
132
+ name: html ` <ox-i18n msgid="menu.fonts"></ox-i18n> `,
133
+ action: () => {
134
+ navigate('font-list');
135
+ }
136
+ }
137
+ });
138
+ store.dispatch({
139
+ type: ADD_MORENDA,
140
+ morenda: {
141
+ icon: html ` <mwc-icon>dvr</mwc-icon> `,
142
+ name: html ` <ox-i18n msgid="menu.board-list"></ox-i18n> `,
143
+ action: () => {
144
+ navigate('board-list');
145
+ }
146
+ }
147
+ });
148
+ }
149
+ if (await hasPrivilege({
150
+ privilege: 'query',
151
+ category: 'attachment',
152
+ domainOwnerGranted: true,
153
+ superUserGranted: true
154
+ })) {
155
+ store.dispatch({
156
+ type: ADD_MORENDA,
157
+ morenda: {
158
+ icon: html ` <mwc-icon>attachment</mwc-icon> `,
159
+ name: html ` <ox-i18n msgid="menu.attachments"></ox-i18n> `,
160
+ action: () => {
161
+ navigate('attachment-list');
162
+ }
163
+ }
164
+ });
165
+ }
166
+ if (await hasPrivilege({ privilege: 'mutation', category: 'scenario', domainOwnerGranted: true })) {
167
+ store.dispatch({
168
+ type: ADD_MORENDA,
169
+ morenda: {
170
+ icon: html ` <mwc-icon>dashboard</mwc-icon> `,
171
+ name: html ` <ox-i18n msgid="menu.board-template"></ox-i18n> `,
172
+ action: () => {
173
+ navigate('board-template-list');
174
+ }
175
+ }
176
+ });
177
+ }
178
+ }
179
+ //# sourceMappingURL=bootstrap.js.map