修改部分规则模块删除无用前端 新增前端界面
1184
modeler/.editorconfig
Normal file
0
modeler/.env
Normal file
17
modeler/.env.development
Normal file
@@ -0,0 +1,17 @@
|
||||
#
|
||||
# This file is part of the kernelstudio package.
|
||||
#
|
||||
# (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
#
|
||||
# For the full copyright and license information, please view the LICENSE file
|
||||
# that was distributed with this source code.
|
||||
#
|
||||
NODE_ENV=development
|
||||
APP_BASE_URL=/
|
||||
APP_API_URL=/api/v1
|
||||
APP_API_TIMEOUT=60000
|
||||
APP_PORT=9999
|
||||
APP_PROXY_HOST=http://127.0.0.1
|
||||
APP_PROXY_PORT=12000
|
||||
APP_ASSETS_HOST=http://127.0.0.1:9999
|
||||
APP_DIST_DIR=assets/web
|
||||
16
modeler/.env.production
Normal file
@@ -0,0 +1,16 @@
|
||||
#
|
||||
# This file is part of the kernelstudio package.
|
||||
#
|
||||
# (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
#
|
||||
# For the full copyright and license information, please view the LICENSE file
|
||||
# that was distributed with this source code.
|
||||
#
|
||||
APP_BASE_URL=/
|
||||
APP_API_URL=/api/v1
|
||||
APP_API_TIMEOUT=60000
|
||||
APP_PORT=9999
|
||||
APP_PROXY_HOST=http://127.0.0.1
|
||||
APP_PROXY_PORT=12000
|
||||
APP_ASSETS_HOST=http://app.kernelstudio.com
|
||||
APP_DIST_DIR=assets/web
|
||||
98
modeler/.eslintrc-auto-import.json
Normal file
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"globals": {
|
||||
"Component": true,
|
||||
"ComponentPublicInstance": true,
|
||||
"ComputedRef": true,
|
||||
"DirectiveBinding": true,
|
||||
"EffectScope": true,
|
||||
"ExtractDefaultPropTypes": true,
|
||||
"ExtractPropTypes": true,
|
||||
"ExtractPublicPropTypes": true,
|
||||
"InjectionKey": true,
|
||||
"MaybeRef": true,
|
||||
"MaybeRefOrGetter": true,
|
||||
"PropType": true,
|
||||
"Ref": true,
|
||||
"ShallowRef": true,
|
||||
"Slot": true,
|
||||
"Slots": true,
|
||||
"VNode": true,
|
||||
"WritableComputedRef": true,
|
||||
"acceptHMRUpdate": true,
|
||||
"computed": true,
|
||||
"createApp": true,
|
||||
"createPinia": true,
|
||||
"customRef": true,
|
||||
"defineAsyncComponent": true,
|
||||
"defineComponent": true,
|
||||
"defineStore": true,
|
||||
"effectScope": true,
|
||||
"getActivePinia": true,
|
||||
"getCurrentInstance": true,
|
||||
"getCurrentScope": true,
|
||||
"getCurrentWatcher": true,
|
||||
"inject": true,
|
||||
"isProxy": true,
|
||||
"isReactive": true,
|
||||
"isReadonly": true,
|
||||
"isRef": true,
|
||||
"isShallow": true,
|
||||
"mapActions": true,
|
||||
"mapGetters": true,
|
||||
"mapState": true,
|
||||
"mapStores": true,
|
||||
"mapWritableState": true,
|
||||
"markRaw": true,
|
||||
"nextTick": true,
|
||||
"onActivated": true,
|
||||
"onBeforeMount": true,
|
||||
"onBeforeRouteLeave": true,
|
||||
"onBeforeRouteUpdate": true,
|
||||
"onBeforeUnmount": true,
|
||||
"onBeforeUpdate": true,
|
||||
"onDeactivated": true,
|
||||
"onErrorCaptured": true,
|
||||
"onMounted": true,
|
||||
"onRenderTracked": true,
|
||||
"onRenderTriggered": true,
|
||||
"onScopeDispose": true,
|
||||
"onServerPrefetch": true,
|
||||
"onUnmounted": true,
|
||||
"onUpdated": true,
|
||||
"onWatcherCleanup": true,
|
||||
"provide": true,
|
||||
"reactive": true,
|
||||
"readonly": true,
|
||||
"ref": true,
|
||||
"resolveComponent": true,
|
||||
"setActivePinia": true,
|
||||
"setMapStoreSuffix": true,
|
||||
"shallowReactive": true,
|
||||
"shallowReadonly": true,
|
||||
"shallowRef": true,
|
||||
"storeToRefs": true,
|
||||
"toRaw": true,
|
||||
"toRef": true,
|
||||
"toRefs": true,
|
||||
"toValue": true,
|
||||
"triggerRef": true,
|
||||
"unref": true,
|
||||
"useAttrs": true,
|
||||
"useClipboard": true,
|
||||
"useCssModule": true,
|
||||
"useCssVars": true,
|
||||
"useDebounceFn": true,
|
||||
"useId": true,
|
||||
"useLink": true,
|
||||
"useLocalStorage": true,
|
||||
"useModel": true,
|
||||
"useRoute": true,
|
||||
"useRouter": true,
|
||||
"useSlots": true,
|
||||
"useTemplateRef": true,
|
||||
"watch": true,
|
||||
"watchEffect": true,
|
||||
"watchPostEffect": true,
|
||||
"watchSyncEffect": true
|
||||
}
|
||||
}
|
||||
15
modeler/.gitattributes
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# .gitattributes
|
||||
* text=auto eol=lf
|
||||
*.html text eol=lf
|
||||
*.css text eol=lf
|
||||
*.js text eol=lf
|
||||
*.scss text eol=lf
|
||||
*.hbs text eol=lf
|
||||
*.sh text eol=lf
|
||||
*.md text eol=lf
|
||||
*.json text eol=lf
|
||||
*.yml text eol=lf
|
||||
.browserslistrc text eol=lf
|
||||
.gitignore text eol=lf
|
||||
*.js linguist-detectable=true
|
||||
*.vue linguist-detectable=true
|
||||
13
modeler/.prettierignore
Normal file
@@ -0,0 +1,13 @@
|
||||
/dist/*
|
||||
/docs/*
|
||||
.local
|
||||
.output.js
|
||||
auto-imports.d.ts
|
||||
/node_modules/**
|
||||
|
||||
**/*.svg
|
||||
**/*.sh
|
||||
|
||||
/public/*
|
||||
/tmp/*
|
||||
|
||||
19
modeler/.prettierrc
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"printWidth": 200,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"semi": true,
|
||||
"vueIndentScriptAndStyle": true,
|
||||
"singleQuote": true,
|
||||
"quoteProps": "as-needed",
|
||||
"bracketSpacing": true,
|
||||
"trailingComma": "es5",
|
||||
"jsxBracketSameLine": true,
|
||||
"jsxSingleQuote": false,
|
||||
"arrowParens": "always",
|
||||
"insertPragma": false,
|
||||
"requirePragma": false,
|
||||
"proseWrap": "preserve",
|
||||
"htmlWhitespaceSensitivity": "strict",
|
||||
"endOfLine": "lf"
|
||||
}
|
||||
6
modeler/.stylelintignore
Normal file
@@ -0,0 +1,6 @@
|
||||
/dist/*
|
||||
/public/*
|
||||
/docs/*
|
||||
/tmp/*
|
||||
/bin/*
|
||||
/config/*
|
||||
7
modeler/.vercelignore
Normal file
@@ -0,0 +1,7 @@
|
||||
node_modules
|
||||
.git
|
||||
*.log
|
||||
.DS_Store
|
||||
dist
|
||||
.vscode
|
||||
.idea
|
||||
3
modeler/.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"recommendations": ["Vue.volar"]
|
||||
}
|
||||
5
modeler/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Vue 3 + TypeScript + Vite
|
||||
|
||||
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
|
||||
|
||||
Learn more about the recommended Project Setup and IDE Support in the [Vue Docs TypeScript Guide](https://vuejs.org/guide/typescript/overview.html#project-setup).
|
||||
10
modeler/config/grafana/Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM grafana/grafana-enterprise:v12.3.1
|
||||
|
||||
USER root
|
||||
|
||||
RUN mkdir -p /usr/share/grafana/public/views \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --chown=grafana:grafana ./views /usr/share/grafana/public/views
|
||||
|
||||
USER grafana
|
||||
61
modeler/config/grafana/views/error.html
Normal file
@@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta name="theme-color" content="#000" />
|
||||
|
||||
|
||||
<title>[[.AppTitle]] - Error</title>
|
||||
|
||||
<base href="[[.AppSubUrl]]/" />
|
||||
|
||||
[[ if eq .ThemeType "light" ]]
|
||||
<link rel="stylesheet" href="[[.Assets.Light]]" />
|
||||
[[ else ]]
|
||||
<link rel="stylesheet" href="[[.Assets.Dark]]" />
|
||||
[[ end ]]
|
||||
|
||||
<link rel="icon" type="image/png" href="public/img/fav32.png" />
|
||||
<link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28" />
|
||||
</head>
|
||||
|
||||
<body class="theme-[[ .ThemeType ]]">
|
||||
<div class="main-view">
|
||||
<div class="page-container">
|
||||
<div class="page-header">
|
||||
<div class="page-header__inner">
|
||||
<span class="page-header__logo">
|
||||
<i class="page-header__icon fa fa-frown-o"></i>
|
||||
</span>
|
||||
<div class="page-header__info-block">
|
||||
<h1 class="page-header__title">
|
||||
<a class="text-link" href="login">Grafana</a><span> / Server Error</span><span></span>
|
||||
</h1>
|
||||
<div class="page-header__sub-title">Sadly something went wrong</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-container page-body ng-scope" style="padding: 2rem">
|
||||
<div class="alert">
|
||||
<div class="alert-icon"><icon name="'exclamation-triangle'"></icon></div>
|
||||
<div class="alert-body">
|
||||
<div class="alert-title">[[.Title]]</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
[[if .ErrorMsg]]
|
||||
<h4 class="page-heading">Error details</h4>
|
||||
<div class="alert-text">
|
||||
<pre>[[.ErrorMsg]]</pre>
|
||||
</div>
|
||||
[[end]]
|
||||
<div style="padding: 2rem 0 0">
|
||||
<p>Check the Grafana server logs for the detailed error message.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
387
modeler/config/grafana/views/index.html
Normal file
@@ -0,0 +1,387 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="[[.User.Language]]">
|
||||
<head>
|
||||
[[ if and .CSPEnabled .IsDevelopmentEnv ]]
|
||||
<!-- Cypress overwrites CSP headers in HTTP requests, so this is required for e2e tests-->
|
||||
<meta http-equiv="Content-Security-Policy" content="[[.CSPContent]]"/>
|
||||
[[ end ]]
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta name="theme-color" content="#000" />
|
||||
|
||||
<title>[[.AppTitle]]</title>
|
||||
|
||||
<base href="[[.AppSubUrl]]/" />
|
||||
|
||||
<link rel="icon" type="image/png" href="[[.FavIcon]]" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="[[.AppleTouchIcon]]" />
|
||||
<link rel="mask-icon" href="[[.Assets.ContentDeliveryURL]]public/img/grafana_mask_icon.svg" color="#F05A28" />
|
||||
|
||||
[[range $asset := .Assets.CSSFiles]]
|
||||
<link rel="stylesheet" href="[[$asset.FilePath]]" />
|
||||
[[end]]
|
||||
|
||||
<!-- If theme is "system", we inject the stylesheets with javascript further down the page -->
|
||||
[[ if eq .ThemeType "light" ]]
|
||||
<link rel="stylesheet" href="[[.Assets.Light]]" />
|
||||
[[ else if eq .ThemeType "dark" ]]
|
||||
<link rel="stylesheet" href="[[.Assets.Dark]]" />
|
||||
[[ end ]]
|
||||
|
||||
<script nonce="[[.Nonce]]">
|
||||
performance.mark('frontend_boot_css_time_seconds');
|
||||
</script>
|
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<meta name="msapplication-TileColor" content="#2b5797" />
|
||||
<meta name="msapplication-config" content="public/img/browserconfig.xml" />
|
||||
</head>
|
||||
|
||||
<body class="theme-[[ .ThemeType ]] [[.AppNameBodyClass]]">
|
||||
<style>
|
||||
.preloader {
|
||||
height: 100%;
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0 32px;
|
||||
}
|
||||
|
||||
.preloader__enter {
|
||||
opacity: 0;
|
||||
animation-name: preloader-fade-in;
|
||||
animation-iteration-count: 1;
|
||||
animation-duration: 0.9s;
|
||||
animation-delay: 0.5s;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
.preloader__bounce {
|
||||
text-align: center;
|
||||
animation-name: preloader-bounce;
|
||||
animation-duration: 0.9s;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
.preloader__logo {
|
||||
display: inline-block;
|
||||
animation-name: preloader-squash;
|
||||
animation-duration: 0.9s;
|
||||
animation-iteration-count: infinite;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
background-image: url('[[.LoadingLogo]]');
|
||||
}
|
||||
|
||||
.preloader__text {
|
||||
margin-top: 16px;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
font-family: Sans-serif;
|
||||
opacity: 0;
|
||||
animation-name: preloader-fade-in;
|
||||
animation-duration: 0.9s;
|
||||
animation-delay: 0.5s;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
.theme-light .preloader__text {
|
||||
color: #52545c;
|
||||
}
|
||||
|
||||
.theme-dark .preloader__text {
|
||||
color: #d8d9da;
|
||||
}
|
||||
|
||||
@keyframes preloader-fade-in {
|
||||
0% {
|
||||
opacity: 0;
|
||||
/*animation-timing-function: linear;*/
|
||||
animation-timing-function: cubic-bezier(0, 0, 0.5, 1);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes preloader-bounce {
|
||||
from,
|
||||
to {
|
||||
transform: translateY(0px);
|
||||
animation-timing-function: cubic-bezier(0.3, 0, 0.1, 1);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-50px);
|
||||
animation-timing-function: cubic-bezier(0.9, 0, 0.7, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes preloader-squash {
|
||||
0% {
|
||||
transform: scaleX(1.3) scaleY(0.8);
|
||||
animation-timing-function: cubic-bezier(0.3, 0, 0.1, 1);
|
||||
}
|
||||
15% {
|
||||
transform: scaleX(0.75) scaleY(1.25);
|
||||
animation-timing-function: cubic-bezier(0, 0, 0.7, 0.75);
|
||||
}
|
||||
55% {
|
||||
transform: scaleX(1.05) scaleY(0.95);
|
||||
animation-timing-function: cubic-bezier(0.9, 0, 1, 1);
|
||||
}
|
||||
95% {
|
||||
transform: scaleX(0.75) scaleY(1.25);
|
||||
animation-timing-function: cubic-bezier(0, 0, 0, 1);
|
||||
}
|
||||
100% {
|
||||
transform: scaleX(1.3) scaleY(0.8);
|
||||
animation-timing-function: cubic-bezier(0, 0, 0.7, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Fail info */
|
||||
.preloader__text--fail {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* stop logo animation */
|
||||
.preloader--done .preloader__bounce,
|
||||
.preloader--done .preloader__logo {
|
||||
animation-name: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.preloader--done .preloader__logo,
|
||||
.preloader--done .preloader__text {
|
||||
display: none;
|
||||
color: #ff5705 !important;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.theme-light .preloader--done .preloader__text {
|
||||
color: #52545c !important;
|
||||
}
|
||||
|
||||
.preloader--done .preloader__text--fail {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.preloader--done .preloader__text--fail a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.theme-light .preloader--done .preloader__text--fail a {
|
||||
color: rgb(31, 98, 224);
|
||||
}
|
||||
|
||||
.preloader--done code {
|
||||
white-space: nowrap;
|
||||
padding: 2px 5px;
|
||||
margin: 0px 2px;
|
||||
font-size: 0.8rem;
|
||||
background-color: rgb(24, 27, 31);
|
||||
color: rgb(204, 204, 220);
|
||||
border: 1px solid rgba(204, 204, 220, 0.2);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.preloader__error-list li {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
[ng\:cloak],
|
||||
[ng-cloak],
|
||||
.ng-cloak {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="preloader">
|
||||
<div class="preloader__enter">
|
||||
<div class="preloader__bounce">
|
||||
<div class="preloader__logo" aria-live="polite" role="status" aria-label="Loading Grafana"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="preloader__text preloader__text--fail">
|
||||
<main>
|
||||
<h1>If you're seeing this Grafana has failed to load its application files</h1>
|
||||
<ol class="preloader__error-list">
|
||||
<li>This could be caused by your reverse proxy settings.</li>
|
||||
<li>If you host grafana under a subpath make sure your <code>grafana.ini</code> <code>root_url</code> setting
|
||||
includes subpath. If not using a reverse proxy make sure to set <code>serve_from_sub_path</code> to true.</li>
|
||||
<li>If you have a local dev build make sure you build frontend using: <code>yarn start</code>, or
|
||||
<code>yarn build</code>.</li>
|
||||
<li>Sometimes restarting <code>grafana-server</code> can help.</li>
|
||||
<li>Check if you are using a non-supported browser. For more information, refer to the list of
|
||||
<a href="https://grafana.com/docs/grafana/latest/installation/requirements/#supported-web-browsers">
|
||||
supported browsers </a
|
||||
>.</li>
|
||||
</ol>
|
||||
</main>
|
||||
</div>
|
||||
<script nonce="[[.Nonce]]">
|
||||
// Check to see if browser is not supported by Grafana
|
||||
// Source file in app/core/utils/browser.ts & tests make edits there and copy compiled typescript here
|
||||
function checkBrowserCompatibility() {
|
||||
var isIE = navigator.userAgent.indexOf('MSIE') > -1;
|
||||
var isEdge = navigator.userAgent.indexOf('Edge/') > -1 || navigator.userAgent.indexOf('Edg/') > -1;
|
||||
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
|
||||
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
|
||||
|
||||
/* Check for
|
||||
<= IE11 (Trident 7)
|
||||
Edge <= 16
|
||||
Firefox <= 64
|
||||
Chrome <= 54
|
||||
*/
|
||||
var isEdgeVersion = /Edge\/([0-9.]+)/.exec(navigator.userAgent);
|
||||
|
||||
if (isIE && parseFloat(/Trident\/([0-9.]+)/.exec(navigator.userAgent)[1]) <= 7) {
|
||||
return false;
|
||||
} else if (
|
||||
isEdge &&
|
||||
((isEdgeVersion && parseFloat(isEdgeVersion[1]) <= 16) ||
|
||||
parseFloat(/Edg\/([0-9.]+)/.exec(navigator.userAgent)[1]) <= 16)
|
||||
) {
|
||||
return false;
|
||||
} else if (isFirefox && parseFloat(/Firefox\/([0-9.]+)/.exec(navigator.userAgent)[1]) <= 64) {
|
||||
return false;
|
||||
} else if (isChrome && parseFloat(/Chrome\/([0-9.]+)/.exec(navigator.userAgent)[1]) <= 54) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!checkBrowserCompatibility()) {
|
||||
alert('Your browser is not fully supported, please try newer version.');
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div id="reactRoot"></div>
|
||||
|
||||
<script nonce="[[.Nonce]]">
|
||||
window.grafanaBootData = {
|
||||
user: [[.User]],
|
||||
settings: [[.Settings]],
|
||||
navTree: [[.NavTree]],
|
||||
assets: [[.Assets]]
|
||||
};
|
||||
|
||||
// FEMT index.html uses this, and we want to keep the index.ts the same for both
|
||||
window.__grafana_boot_data_promise = Promise.resolve();
|
||||
|
||||
// Set theme to match system only on startup.
|
||||
// Do not react to changes in system theme after startup.
|
||||
if (window.grafanaBootData.user.theme === "system") {
|
||||
document.body.classList.remove("theme-system");
|
||||
var darkQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
||||
var cssLink = document.createElement("link");
|
||||
cssLink.rel = 'stylesheet';
|
||||
|
||||
if (darkQuery.matches) {
|
||||
document.body.classList.add("theme-dark");
|
||||
cssLink.href = window.grafanaBootData.assets.dark;
|
||||
window.grafanaBootData.user.lightTheme = false;
|
||||
} else {
|
||||
document.body.classList.add("theme-light");
|
||||
cssLink.href = window.grafanaBootData.assets.light;
|
||||
window.grafanaBootData.user.lightTheme = true;
|
||||
}
|
||||
document.head.appendChild(cssLink);
|
||||
}
|
||||
|
||||
window.__grafana_load_failed = function() {
|
||||
var preloader = document.getElementsByClassName("preloader");
|
||||
if (preloader.length) {
|
||||
preloader[0].className = "preloader preloader--done";
|
||||
}
|
||||
}
|
||||
|
||||
// In case the js files fails to load the code below will show an info message.
|
||||
window.onload = function() {
|
||||
if (window.__grafana_app_bundle_loaded) {
|
||||
return;
|
||||
}
|
||||
window.__grafana_load_failed();
|
||||
};
|
||||
|
||||
[[if .Assets.ContentDeliveryURL]]
|
||||
window.public_cdn_path = '[[.Assets.ContentDeliveryURL]]public/build/';
|
||||
[[end]]
|
||||
[[if .Nonce]]
|
||||
window.nonce = '[[.Nonce]]';
|
||||
[[end]]
|
||||
</script>
|
||||
|
||||
[[if .GoogleTagManagerId]]
|
||||
<!-- Google Tag Manager -->
|
||||
<script nonce="[[.Nonce]]">
|
||||
dataLayer = [
|
||||
{
|
||||
IsSignedIn: '[[.User.IsSignedIn]]',
|
||||
Email: '[[.User.Email]]',
|
||||
Name: '[[.User.Name]]',
|
||||
UserId: '[[.User.Id]]',
|
||||
OrgId: '[[.User.OrgId]]',
|
||||
OrgName: '[[.User.OrgName]]',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
<noscript>
|
||||
<iframe
|
||||
src="//www.googletagmanager.com/ns.html?id=[[.GoogleTagManagerId]]"
|
||||
height="0"
|
||||
width="0"
|
||||
style="display: none; visibility: hidden"
|
||||
></iframe>
|
||||
</noscript>
|
||||
<script nonce="[[.Nonce]]">
|
||||
(function (w, d, s, l, i) {
|
||||
w[l] = w[l] || [];
|
||||
w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
|
||||
var f = d.getElementsByTagName(s)[0],
|
||||
j = d.createElement(s),
|
||||
dl = l != 'dataLayer' ? '&l=' + l : '';
|
||||
j.async = true;
|
||||
j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;
|
||||
f.parentNode.insertBefore(j, f);
|
||||
})(window, document, 'script', 'dataLayer', '[[.GoogleTagManagerId]]');
|
||||
</script>
|
||||
<!-- End Google Tag Manager -->
|
||||
[[end]]
|
||||
|
||||
[[if .Settings.FeatureToggles.assetSriChecks ]]
|
||||
[[range $asset := .Assets.JSFiles]]
|
||||
<script
|
||||
nonce="[[$.Nonce]]"
|
||||
src="[[$asset.FilePath]]"
|
||||
integrity="[[$asset.Integrity]]"
|
||||
crossorigin="anonymous"
|
||||
type="text/javascript"
|
||||
defer
|
||||
></script>
|
||||
[[end]]
|
||||
[[else]]
|
||||
[[range $asset := .Assets.JSFiles]]
|
||||
<script
|
||||
nonce="[[$.Nonce]]"
|
||||
src="[[$asset.FilePath]]"
|
||||
type="text/javascript"
|
||||
defer
|
||||
></script>
|
||||
[[end]]
|
||||
[[end]]
|
||||
|
||||
<script nonce="[[.Nonce]]">
|
||||
performance.mark('frontend_boot_js_done_time_seconds');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
39
modeler/config/grafana/views/swagger.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
[[ if and .CSPEnabled .IsDevelopmentEnv ]]
|
||||
<!-- Cypress overwrites CSP headers in HTTP requests, so this is required for e2e tests-->
|
||||
<meta http-equiv="Content-Security-Policy" content="[[.CSPContent]]" />
|
||||
[[ end ]]
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta name="theme-color" content="#000" />
|
||||
|
||||
<title>Grafana API Reference</title>
|
||||
|
||||
[[range $asset := .Assets.SwaggerCSSFiles]]
|
||||
<link rel="stylesheet" href="[[$asset.FilePath]]" />
|
||||
[[end]]
|
||||
|
||||
<link rel="stylesheet" href="[[.Assets.Light]]" />
|
||||
|
||||
<link rel="icon" type="image/png" href="[[.FavIcon]]" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="[[.AppleTouchIcon]]" />
|
||||
<link rel="mask-icon" href="[[.Assets.ContentDeliveryURL]]public/img/grafana_mask_icon.svg" color="#F05A28" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<noscript> You need to enable JavaScript to run this app. </noscript>
|
||||
<script nonce="[[$.Nonce]]">
|
||||
[[if .Assets.ContentDeliveryURL]]
|
||||
window.public_cdn_path = '[[.Assets.ContentDeliveryURL]]public/build/';
|
||||
[[end]]
|
||||
</script>
|
||||
<div id="root"></div>
|
||||
[[range $asset := .Assets.Swagger]]
|
||||
<script nonce="[[$.Nonce]]" src="[[$asset.FilePath]]" type="text/javascript"></script>
|
||||
[[end]]
|
||||
<script></script>
|
||||
</body>
|
||||
</html>
|
||||
98
modeler/config/nginx.conf
Normal file
@@ -0,0 +1,98 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name monitor.kernelstudio.com;
|
||||
include server/error.conf;
|
||||
access_log /var/log/nginx/monitor.kernelstudio.com.access.log access;
|
||||
error_log /var/log/nginx/monitor.kernelstudio.com.error.log debug; # 临时开启debug,排查WS错误
|
||||
|
||||
# 核心:屏蔽后端 X-Frame-Options + 统一设置
|
||||
proxy_hide_header X-Frame-Options;
|
||||
add_header X-Frame-Options "sameorigin" always;
|
||||
|
||||
# 全局跨域头(开发环境)
|
||||
add_header Access-Control-Allow-Origin "*" always;
|
||||
add_header Access-Control-Allow-Methods "GET,POST,PUT,DELETE,OPTIONS" always;
|
||||
add_header Access-Control-Allow-Headers "Content-Type,Authorization,X-Grafana-Org-Id,Upgrade,Connection" always;
|
||||
# 允许跨域预检请求(OPTIONS)
|
||||
if ($request_method = OPTIONS) {
|
||||
return 204;
|
||||
}
|
||||
|
||||
# 全局 proxy 基础配置
|
||||
proxy_http_version 1.1;
|
||||
proxy_connect_timeout 60s;
|
||||
proxy_set_header X-Host $host;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
# ========== 最高优先级:Grafana Live WS(覆盖所有带参数的WS请求) ==========
|
||||
# 正则匹配 /api/live/ws 及后续所有参数/路径
|
||||
location ~ ^/api/live/ws {
|
||||
# WebSocket 必须的头部
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
# 保持其他头部传递
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# WebSocket 超时设置
|
||||
proxy_read_timeout 86400;
|
||||
proxy_connect_timeout 86400;
|
||||
proxy_send_timeout 86400;
|
||||
|
||||
# 禁用缓冲
|
||||
proxy_buffering off;
|
||||
proxy_cache off;
|
||||
|
||||
proxy_pass http://192.168.1.200:3000;
|
||||
}
|
||||
|
||||
# ========== 次优先级:Grafana 其他 API/页面路径 ==========
|
||||
# 1. 匹配 /apis/(带s)开头的所有路径
|
||||
location ~ ^/apis/ {
|
||||
proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_pass http://192.168.1.200:3000;
|
||||
}
|
||||
|
||||
# 2. 匹配 /api/ 下的 Grafana 核心 API(排除 live/ws,已单独匹配)
|
||||
location ~ ^/api/(user|frontend-metrics|datasources|ds|dashboards|prometheus|plugins|features\.grafana\.ap|public)($|/) {
|
||||
proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_pass http://192.168.1.200:3000;
|
||||
}
|
||||
|
||||
# 3. 匹配 Grafana 页面路径
|
||||
location ~ ^/(d|login|public|avatar)($|/) {
|
||||
proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_pass http://192.168.1.200:3000;
|
||||
}
|
||||
|
||||
# ========== Vite 相关路径(最后匹配) ==========
|
||||
# 1. Vite HMR 的 WebSocket 路径
|
||||
location /ws {
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_read_timeout 86400s;
|
||||
proxy_pass http://192.168.1.200:8888;
|
||||
}
|
||||
|
||||
# 2. Vite 开发环境兜底
|
||||
location / {
|
||||
include custom/api.access.conf;
|
||||
proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
|
||||
# 禁用缓存
|
||||
add_header Cache-Control "no-cache, no-store, must-revalidate" always;
|
||||
add_header Pragma "no-cache" always;
|
||||
add_header Expires "0" always;
|
||||
proxy_pass http://192.168.1.200:8888;
|
||||
}
|
||||
}
|
||||
BIN
modeler/docs/ui/001-工程管理-tab1-工程列表.jpg
Normal file
|
After Width: | Height: | Size: 660 KiB |
BIN
modeler/docs/ui/001-工程管理-tab2-自定义模版-create.jpg
Normal file
|
After Width: | Height: | Size: 634 KiB |
BIN
modeler/docs/ui/001-工程管理-tab2-自定义模版.jpg
Normal file
|
After Width: | Height: | Size: 698 KiB |
BIN
modeler/docs/ui/001-工程管理-工程详情.jpg
Normal file
|
After Width: | Height: | Size: 718 KiB |
BIN
modeler/docs/ui/001-工程管理-工程详情2.jpg
Normal file
|
After Width: | Height: | Size: 667 KiB |
BIN
modeler/docs/ui/001-工程管理-新建-step1.jpg
Normal file
|
After Width: | Height: | Size: 622 KiB |
BIN
modeler/docs/ui/001-工程管理-新建-step2.jpg
Normal file
|
After Width: | Height: | Size: 625 KiB |
BIN
modeler/docs/ui/001-工程管理-新建-step3.jpg
Normal file
|
After Width: | Height: | Size: 647 KiB |
BIN
modeler/docs/ui/002-模型构建-002-模型组件设置-tab1.jpg
Normal file
|
After Width: | Height: | Size: 650 KiB |
BIN
modeler/docs/ui/002-模型构建-002-模型组件设置-tab2.jpg
Normal file
|
After Width: | Height: | Size: 605 KiB |
BIN
modeler/docs/ui/002-模型构建-002-模型组件设置-tab3.jpg
Normal file
|
After Width: | Height: | Size: 643 KiB |
BIN
modeler/docs/ui/003-模型训练-训练任务配置-step0.jpg
Normal file
|
After Width: | Height: | Size: 696 KiB |
BIN
modeler/docs/ui/003-模型训练-训练任务配置-step1.jpg
Normal file
|
After Width: | Height: | Size: 746 KiB |
BIN
modeler/docs/ui/003-模型训练-训练任务配置-step2.jpg
Normal file
|
After Width: | Height: | Size: 689 KiB |
BIN
modeler/docs/ui/003-模型训练-训练任务配置-step3.jpg
Normal file
|
After Width: | Height: | Size: 623 KiB |
BIN
modeler/docs/ui/004-模型应用-模型部署与推理.jpg
Normal file
|
After Width: | Height: | Size: 695 KiB |
BIN
modeler/docs/ui/005-模型构建.jpg
Normal file
|
After Width: | Height: | Size: 633 KiB |
13
modeler/index.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>博弈竞赛环境</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app" class="w-full h-full"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
46
modeler/jsconfig.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
],
|
||||
"@/views/*": [
|
||||
"src/views/*"
|
||||
],
|
||||
"@/components/*": [
|
||||
"src/components/*"
|
||||
],
|
||||
"@/assets/*": [
|
||||
"src/assets/*"
|
||||
],
|
||||
"@/config/*": [
|
||||
"src/config/*"
|
||||
],
|
||||
"@/core/*": [
|
||||
"src/core/*"
|
||||
],
|
||||
"@/api/*": [
|
||||
"src/api/*"
|
||||
],
|
||||
"@/stores/*": [
|
||||
"src/stores/*"
|
||||
],
|
||||
"@/utils/*": [
|
||||
"src/utils/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist",
|
||||
"docs",
|
||||
"tmp",
|
||||
"config",
|
||||
"public"
|
||||
],
|
||||
"include": [
|
||||
"src/**/*"
|
||||
]
|
||||
}
|
||||
179
modeler/mock/behavior.ts
Normal file
@@ -0,0 +1,179 @@
|
||||
/*
|
||||
* This file is part of the kernelstudio package.
|
||||
*
|
||||
* (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE file
|
||||
* that was distributed with this source code.
|
||||
*/
|
||||
import {MockMethod} from 'vite-plugin-mock';
|
||||
import {createResponse} from './core';
|
||||
|
||||
const statusOption = {
|
||||
type: 'select',
|
||||
defaults: 0,
|
||||
name: 'status',
|
||||
tips: '状态',
|
||||
options: [
|
||||
{
|
||||
name: '默认',
|
||||
value: 'default',
|
||||
},
|
||||
{
|
||||
name: '运行中',
|
||||
value: 'running',
|
||||
color: 'blue',
|
||||
},
|
||||
{
|
||||
name: '已完成',
|
||||
value: 'finished',
|
||||
color: 'teal'
|
||||
},
|
||||
{
|
||||
name: '错误',
|
||||
value: 'error',
|
||||
color: 'red',
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
const behaviors = [
|
||||
{
|
||||
id: 'behavior_001',
|
||||
name: '行为树1',
|
||||
desc: '行为树1说明',
|
||||
status: null,
|
||||
options: {},
|
||||
// data: [
|
||||
// {
|
||||
// id: '5a0c4b08-0b02-44f3-8918-79c6f9ab22fa',
|
||||
// type: 'startEvent',
|
||||
// name: '开始',
|
||||
// description: '',
|
||||
// width: 160,
|
||||
// height: 40,
|
||||
// position: {
|
||||
// x: 460,
|
||||
// y: 120,
|
||||
// },
|
||||
// data: {
|
||||
// status: 'default',
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// id: 'ec8741db-9580-44ab-8a58-8c731bf1faad',
|
||||
// type: 'sequenceFlow',
|
||||
// name: null,
|
||||
// description: null,
|
||||
// source: '5a0c4b08-0b02-44f3-8918-79c6f9ab22fa',
|
||||
// target: '7422aefc-7781-457a-b910-783f73ac0ac5',
|
||||
// data: {
|
||||
// status: 'default',
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// id: '7422aefc-7781-457a-b910-783f73ac0ac5',
|
||||
// type: 'task',
|
||||
// name: '任务',
|
||||
// description: '',
|
||||
// width: 160,
|
||||
// height: 40,
|
||||
// position: {
|
||||
// x: 460,
|
||||
// y: 120,
|
||||
// },
|
||||
// data: {
|
||||
// status: 'default',
|
||||
// }
|
||||
// },
|
||||
// ]
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
const definitions = [
|
||||
{
|
||||
type: 'sequenceFlow',
|
||||
label: null,
|
||||
options: [
|
||||
{
|
||||
type: 'input',
|
||||
defaults: null,
|
||||
name: 'label',
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'startEvent',
|
||||
label: '开始',
|
||||
desc: '行为树的开始节点,每个行为树仅允许一个开始节点',
|
||||
options: [
|
||||
statusOption
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'task',
|
||||
label: '任务节点',
|
||||
desc: '执行特定任务',
|
||||
options: [
|
||||
statusOption,
|
||||
{
|
||||
type: 'number',
|
||||
defaults: 0,
|
||||
name: 'counter',
|
||||
tips: '统计数量'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'parallelGateway',
|
||||
label: '并行网关',
|
||||
desc: '并行执行子节点',
|
||||
options: [
|
||||
statusOption,
|
||||
{
|
||||
type: 'number',
|
||||
defaults: 0,
|
||||
name: 'counter',
|
||||
tips: '统计数量'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'exclusiveGateway',
|
||||
label: '排他网关',
|
||||
desc: '选择满足条件的一个子节点执行',
|
||||
options: [
|
||||
statusOption,
|
||||
{
|
||||
type: 'number',
|
||||
defaults: 0,
|
||||
name: 'counter',
|
||||
tips: '统计数量'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
export default [
|
||||
{
|
||||
url: '/api/behavior/trees',
|
||||
method: 'get',
|
||||
response: () => {
|
||||
return createResponse(behaviors)
|
||||
},
|
||||
},
|
||||
{
|
||||
url: '/api/behavior/trees',
|
||||
method: 'post',
|
||||
response: ({body}) => {
|
||||
let value = behaviors.filter((b) => b.id == body?.id)
|
||||
if (value && value.length > 0) {
|
||||
value[0] = Object.assign(value[0], body)
|
||||
} else {
|
||||
behaviors.push(body)
|
||||
}
|
||||
return createResponse(behaviors)
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
16
modeler/mock/core.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* This file is part of the kernelstudio package.
|
||||
*
|
||||
* (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE file
|
||||
* that was distributed with this source code.
|
||||
*/
|
||||
|
||||
export const createResponse = (result: any,success: boolean = true, message: String = null)=> {
|
||||
return {
|
||||
success: success,
|
||||
message: message,
|
||||
result: result,
|
||||
}
|
||||
}
|
||||
61
modeler/mock/files.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* This file is part of the kernelstudio package.
|
||||
*
|
||||
* (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE file
|
||||
* that was distributed with this source code.
|
||||
*/
|
||||
import {MockMethod} from 'vite-plugin-mock';
|
||||
import {createResponse} from './core';
|
||||
|
||||
export default [
|
||||
{
|
||||
url: '/api/finder/browser',
|
||||
method: 'post',
|
||||
response: () => {
|
||||
return {
|
||||
success: true,
|
||||
message: null,
|
||||
data: [
|
||||
{
|
||||
name: 'home',
|
||||
directory: true,
|
||||
path: '/home',
|
||||
children: [
|
||||
{
|
||||
name: 'users',
|
||||
directory: true,
|
||||
path: '/users',
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'usr',
|
||||
directory: true,
|
||||
path: '/usr',
|
||||
children: [
|
||||
{
|
||||
name: 'opt',
|
||||
directory: true,
|
||||
path: '/opt',
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'var',
|
||||
directory: true,
|
||||
path: '/var',
|
||||
children: [
|
||||
{
|
||||
name: 'lib',
|
||||
directory: true,
|
||||
path: '/lib',
|
||||
},
|
||||
]
|
||||
}
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
] as MockMethod[];
|
||||
22
modeler/mock/samples.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* This file is part of the kernelstudio package.
|
||||
*
|
||||
* (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE file
|
||||
* that was distributed with this source code.
|
||||
*/
|
||||
import {MockMethod} from 'vite-plugin-mock';
|
||||
import {createResponse} from './core';
|
||||
|
||||
export default [
|
||||
{
|
||||
url: '/api/samples',
|
||||
method: 'get',
|
||||
response: () => {
|
||||
return createResponse( {
|
||||
name: 'vben',
|
||||
})
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
6315
modeler/package-lock.json
generated
Normal file
47
modeler/package.json
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "modeler",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vue-tsc -b && vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@antv/x6": "^3.1.2",
|
||||
"@antv/x6-vue-shape": "^3.0.2",
|
||||
"ant-design-vue": "^4.2.6",
|
||||
"axios": "^1.13.2",
|
||||
"echarts": "^6.0.0",
|
||||
"js-cookie": "^3.0.5",
|
||||
"pinia": "^3.0.4",
|
||||
"vue": "^3.5.24",
|
||||
"vue-draggable-next": "^2.3.0",
|
||||
"vue-router": "^4.6.4",
|
||||
"vuedraggable": "^2.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@originjs/vite-plugin-commonjs": "^1.0.3",
|
||||
"@tailwindcss/postcss": "^4.1.18",
|
||||
"@tailwindcss/vite": "^4.1.18",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "^24.10.1",
|
||||
"@vitejs/plugin-vue": "^6.0.3",
|
||||
"@vitejs/plugin-vue-jsx": "^5.1.2",
|
||||
"@vue/tsconfig": "^0.8.1",
|
||||
"autoprefixer": "^10.4.22",
|
||||
"less": "^4.4.2",
|
||||
"mockjs": "^1.1.0",
|
||||
"postcss-selector-parser": "^7.1.1",
|
||||
"tailwindcss": "^4.1.18",
|
||||
"typescript": "~5.9.3",
|
||||
"unplugin-auto-import": "^20.3.0",
|
||||
"unplugin-vue-components": "^30.0.0",
|
||||
"vite": "^7.2.4",
|
||||
"vite-plugin-dts": "^4.5.4",
|
||||
"vite-plugin-mock": "^3.0.2",
|
||||
"vitest": "^4.0.15",
|
||||
"vue-tsc": "^3.1.4"
|
||||
}
|
||||
}
|
||||
15
modeler/postcss.config.js
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* This file is part of the kernelstudio package.
|
||||
*
|
||||
* (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE file
|
||||
* that was distributed with this source code.
|
||||
*/
|
||||
|
||||
export default {
|
||||
plugins: {
|
||||
'@tailwindcss/postcss': {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
}
|
||||
28
modeler/prettier.config.js
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* This file is part of the kernelstudio package.
|
||||
*
|
||||
* (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE file
|
||||
* that was distributed with this source code.
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
"printWidth": 200,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"semi": true,
|
||||
"vueIndentScriptAndStyle": true,
|
||||
"singleQuote": true,
|
||||
"quoteProps": "as-needed",
|
||||
"bracketSpacing": true,
|
||||
"trailingComma": "es5",
|
||||
"jsxBracketSameLine": true,
|
||||
"jsxSingleQuote": false,
|
||||
"arrowParens": "always",
|
||||
"insertPragma": false,
|
||||
"requirePragma": false,
|
||||
"proseWrap": "preserve",
|
||||
"htmlWhitespaceSensitivity": "strict",
|
||||
"endOfLine": "lf"
|
||||
};
|
||||
27
modeler/src/api/user.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* This file is part of the kernelstudio package.
|
||||
*
|
||||
* (c) 2014-2025 zlin <admin@kernelstudio.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE file
|
||||
* that was distributed with this source code.
|
||||
*/
|
||||
|
||||
import request, { HttpRequestClient } from '@/utils/request';
|
||||
import type { BasicResponse, UserLoginForm, UserLoginResult, UserSessionResult } from '@/types';
|
||||
|
||||
const req = new HttpRequestClient(HttpRequestClient.build({
|
||||
baseURL: '/',
|
||||
}));
|
||||
|
||||
export const fetchUserSession = (): Promise<UserSessionResult> => {
|
||||
return req.get<UserSessionResult>('/getInfo');
|
||||
};
|
||||
|
||||
export const signinByForm = (form: UserLoginForm): Promise<UserLoginResult> => {
|
||||
return req.postJson<UserLoginResult>('/login', form);
|
||||
};
|
||||
|
||||
export const logoutSession = (): Promise<BasicResponse> => {
|
||||
return request.post<BasicResponse>('/logout');
|
||||
};
|
||||
9
modeler/src/assets/actions/delete.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg t="1768461123253" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10989" width="200" height="200">
|
||||
<path
|
||||
d="M684.6425 277.598412l-1.436722-1.467421c-12.489452-12.461823-32.730449-12.461823-45.159526 0L479.700875 434.510138l-158.286026-158.315702c-12.555967-12.524245-32.793894-12.524245-45.225017 0-12.555967 12.462846-12.555967 32.701796 0 45.223994l158.348448 158.317749L276.129456 638.049834c-12.495592 12.429077-12.495592 32.671097 0 45.163619l1.49812 1.434675c12.429077 12.494569 32.66905 12.494569 45.221948 0l158.287049-158.286026 158.283979 158.286026c12.491499 12.494569 32.731472 12.494569 45.220924 0 12.495592-12.493545 12.495592-32.731472 0-45.222971l-158.285003-158.285003 158.285003-158.314679C697.138092 310.299185 697.138092 290.060235 684.6425 277.598412"
|
||||
p-id="10990" fill="#bfbfbf" ></path>
|
||||
<path
|
||||
d="M818.881854 140.522454c-187.332573-187.363272-491.033479-187.363272-678.364005 0-187.329503 187.329503-187.329503 491.032456 0 678.362982 187.330526 187.392948 491.031433 187.392948 678.364005 0C1006.274802 631.55491 1006.274802 327.851956 818.881854 140.522454M773.656837 773.660418c-162.344458 162.343435-425.569512 162.407903-587.914994 0-162.40688-162.344458-162.40688-425.602258 0-587.914994 162.344458-162.40688 425.569512-162.40688 587.914994 0C936.063717 348.059184 936.000272 611.31596 773.656837 773.660418"
|
||||
p-id="10991" fill="#bfbfbf" ></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
1
modeler/src/assets/actions/eye.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1768462375141" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6349" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M574.80892 387.211982a41.605544 41.605544 0 0 0-4.738568-8.012071 38.572403 38.572403 0 0 0-7.290986-7.359661 42.853138 42.853138 0 0 0-4.360856-2.884345 40.85012 40.85012 0 0 0-4.578327-2.174706c-0.743978-0.297591-1.487956-0.560845-2.289163-0.824098a21.575365 21.575365 0 0 0-2.209043-0.663858c-1.384944-0.343375-2.8729-0.698195-4.200614-0.904219s-2.586755-0.320483-3.880132-0.423496-2.289163-0.057229-3.433745 0-2.174705 0.091567-3.204829 0.171688l-1.53374 0.148795-0.766869 0.080121-0.675303 0.114458c-1.796993 0.297591-3.696999 0.606628-5.230739 1.030124l-2.415067 0.618074-2.186151 0.698195-2.174705 0.70964-1.980127 0.76687-1.980126 0.778316-1.842776 0.812653c-2.495188 1.087353-4.715677 2.289163-6.970503 3.433745s-4.315073 2.369284-6.295199 3.605432c-1.007232 0.618074-2.037355 1.213257-3.01025 1.842776l-2.895792 1.911452c-1.957235 1.247594-3.742782 2.575309-5.60845 3.85724s-3.593986 2.621092-5.390979 3.937361-3.433745 2.689767-5.196401 4.040373c-3.433745 2.712659-6.753032 5.448209-9.980753 8.26388q-9.774728 8.378338-18.816922 17.168725c-12.098228 11.720516-23.544045 23.875974-34.486246 36.489264s-21.518136 25.478388-31.327201 39.09891c14.879562-7.863276 29.163941-16.184385 43.425429-24.402481s28.408517-16.424747 42.509764-24.230794a777.388431 777.388431 0 0 1 21.060302-11.365696q5.265076-2.712659 10.461477-5.265076c3.433745-1.671089 6.947611-3.273504 10.358464-4.795797 2.460851-1.064461 4.933147-2.094584 7.336769-3.021696-1.087353 2.998804-2.357838 6.123512-3.674107 9.316895-2.746996 6.672911-5.974716 13.51751-9.271112 20.453675-1.659643 3.433745-3.433745 6.947611-5.150618 10.438585s-3.433745 7.00484-5.299413 10.518705c-14.433175 28.122372-29.919365 56.668239-44.856156 85.843626s-29.575991 58.842944-42.532655 90.181591c-3.239166 7.840385-6.363874 15.806673-9.282557 23.96754s-5.722908 16.516314-8.160868 25.180797c-1.25904 4.360856-2.369284 8.824725-3.433745 13.437389s-1.957235 9.38557-2.643984 14.433175a118.784687 118.784687 0 0 0-1.144581 16.436193 73.653831 73.653831 0 0 0 0.62952 9.671715 60.914637 60.914637 0 0 0 2.575308 11.319913 46.927849 46.927849 0 0 0 6.684357 13.002448 41.136266 41.136266 0 0 0 12.418712 11.148225 42.349522 42.349522 0 0 0 14.055463 5.093389 50.647739 50.647739 0 0 0 11.777745 0.606628 59.667043 59.667043 0 0 0 9.545811-1.396389 75.782753 75.782753 0 0 0 8.137976-2.289164 108.449114 108.449114 0 0 0 13.918113-5.722908c4.292181-2.094584 8.332555-4.315073 12.212687-6.65002s7.611468-4.704231 11.228346-7.187973c7.268094-4.921701 14.124138-10.106656 20.762712-15.451852a470.2056 470.2056 0 0 0 37.462158-33.868172 480.30081 480.30081 0 0 0 33.742268-37.107338c-15.280165 6.959057-30.102498 14.341608-44.867602 21.529581s-29.438641 14.238596-44.032057 20.694037c-7.290985 3.22772-14.559079 6.283753-21.747052 9.019303-3.593986 1.350606-7.153635 2.666875-10.667501 3.811457s-6.993394 2.174705-10.301235 3.021696c-2.540971 0.640966-5.024714 1.144582-7.313877 1.499402 0.377712-1.842777 0.927111-4.006036 1.568077-6.226524a193.434304 193.434304 0 0 1 6.86749-19.389214c2.758442-6.775924 5.906041-13.73498 9.156653-20.60247 1.625306-3.433745 3.330733-6.970502 5.024714-10.484368s3.433745-7.027732 5.184955-10.541598c14.124138-28.202493 29.404303-56.702576 44.249528-85.752059s29.564545-58.57969 42.761571-89.723758q2.472296-5.860258 4.875918-11.800637t4.578327-12.052445c3.056033-8.12653 5.848812-16.481976 8.435567-25.272364 1.281931-4.395194 2.437959-8.939183 3.50242-13.73498a135.93052 135.93052 0 0 0 2.586754-15.303057c0.309037-2.746996 0.515062-5.722908 0.572291-8.8934a69.71647 69.71647 0 0 0-0.583736-10.610272 49.537495 49.537495 0 0 0-3.754228-13.815101zM433.819348 741.860616a8.859062 8.859062 0 0 1-2.643983-0.320483c-0.583737-0.171687-0.789761-0.412049-0.41205-0.515062a5.024714 5.024714 0 0 1 2.724105 0.606629l0.423495 0.228916z m101.684637-325.393126a7.14219 7.14219 0 0 1-1.224703-0.171687l-0.606628-0.148796a8.321109 8.321109 0 0 1 3.159046 0c0.194579 0.125904 0.103012 0.377712-1.327715 0.320483z" p-id="6350" fill="#cdcdcd"></path><path d="M590.932545 281.909005m-35.004018 35.004019a49.503158 49.503158 0 1 0 70.008037-70.008037 49.503158 49.503158 0 1 0-70.008037 70.008037Z" p-id="6351" fill="#cdcdcd"></path><path d="M511.971385 0C229.259711 0 0 229.259711 0 511.971385s229.259711 512.028615 511.971385 512.028615S1024 794.774627 1024 511.971385 794.774627 0 511.971385 0z m313.512368 825.483753a441.739854 441.739854 0 1 1 95.00028-140.943788 441.808528 441.808528 0 0 1-95.00028 140.943788z" p-id="6352" fill="#cdcdcd"></path></svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
7
modeler/src/assets/actions/pause.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg t="1768461553746" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16917" id="mx_n_1768461553747" width="200" height="200">
|
||||
<path d="M413.866667 320c-17.066667 0-32 14.933333-32 32v320c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-320c0-17.066667-14.933333-32-32-32zM605.866667 320c-17.066667 0-32 14.933333-32 32v320c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-320c0-17.066667-14.933333-32-32-32z"
|
||||
fill="#bfbfbf" p-id="16918"></path>
|
||||
<path d="M509.866667 32C245.333333 32 32 247.466667 32 512s213.333333 480 477.866667 480S987.733333 776.533333 987.733333 512 774.4 32 509.866667 32z m0 896C281.6 928 96 742.4 96 512S281.6 96 509.866667 96 923.733333 281.6 923.733333 512s-185.6 416-413.866666 416z" fill="#bfbfbf"
|
||||
p-id="16919"></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 959 B |
1
modeler/src/assets/actions/start.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1768462226296" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4699" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M429.504 309.952c-12.928-13.056-39.104-4.224-39.104 17.344v380.672c0 17.344 21.76 30.528 39.104 17.344l191.104-176.256a42.24 42.24 0 0 0 0-60.928l-191.104-178.176z" fill="#cdcdcd" p-id="4700"></path><path d="M1015.552 512.128a502.656 502.656 0 0 0-503.68-503.68 502.208 502.208 0 0 0-356.096 147.264 502.016 502.016 0 0 0-147.328 356.416 500.288 500.288 0 0 0 146.816 356.736 499.584 499.584 0 0 0 356.544 146.688c277.312-2.816 503.744-226.24 503.744-503.424z m-947.968 0a444.288 444.288 0 0 1 444.288-444.544c246.976 0 447.296 200.128 447.296 444.544 0 244.032-200.32 444.416-447.296 444.416a442.304 442.304 0 0 1-444.288-444.416z" fill="#cdcdcd" p-id="4701"></path></svg>
|
||||
|
After Width: | Height: | Size: 1006 B |
BIN
modeler/src/assets/icons/+@2x.png
Normal file
|
After Width: | Height: | Size: 989 B |
BIN
modeler/src/assets/icons/28@2x.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modeler/src/assets/icons/29@2x.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
modeler/src/assets/icons/2@2x.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
modeler/src/assets/icons/31@2x.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
modeler/src/assets/icons/33@2x.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
modeler/src/assets/icons/6@2x.png
Normal file
|
After Width: | Height: | Size: 993 B |
BIN
modeler/src/assets/icons/CONFIGURATION@2x.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
modeler/src/assets/icons/action-bottom-active.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
modeler/src/assets/icons/action-bottom.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
modeler/src/assets/icons/action-top-active.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
modeler/src/assets/icons/action-top.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
modeler/src/assets/icons/afsim.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1766669849970" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1663" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M37.333333 670.933333l179.626667-179.626666v154.88h53.973333V363.093333L36.48 597.333333l0.853333 73.6zM474.88 468.266667h-137.386667v-12.373334c0 4.053333 147.626667 0 147.626667 0l54.826667-54.826666H293.76V661.333333l44.373333-42.24v-102.4H426.666667l48.426666-48.426666z" fill="#0253BE" p-id="1664"></path><path d="M355.626667 536.32v47.146667l53.76-47.146667h-53.76zM493.44 517.12v-49.066667l-56.746667 49.066667h56.746667z" fill="#0253BE" p-id="1665"></path><path d="M588.8 452.266667h101.12l48.426667-50.986667h-174.72l-50.346667 47.36v68.48h128.853333v8.96l-13.44 10.24h-196.266666l-51.626667 45.653333H650.666667l48.853333-36.48v-77.44h-126.72l16-15.786666z" fill="#0253BE" p-id="1666"></path><path d="M718.933333 621.226667l51.413334-51.626667 0.853333-175.146667-52.266667 52.48v174.293334zM881.28 467.84l-91.306667-91.306667v247.253334l52.48-46.933334v-84.266666l45.013334 47.573333 47.36-51.2v106.026667l43.306666 43.306666V370.986667l-96.853333 96.853333z" fill="#0253BE" p-id="1667"></path><path d="M272.426667 722.986667v-51.626667H196.906667v-131.2L18.133333 722.986667v-137.6l1.493334-1.493334 273.706666-272.853333v65.28h474.88v-43.306667l113.066667 97.92 121.6-98.56V706.133333l-92.8-93.013333v-72.746667l-21.12 27.733334-29.226667-29.226667v51.626667l-91.306666 91.52v-82.773334l-72.96 73.173334v-99.413334l-35.2 35.413334H362.24v24.32l-90.026667 90.24z m-64.853334-62.293334h75.52v36.48l68.693334-68.906666v-30.506667h304.213333l50.346667-50.56v99.626667l72.96-73.173334v82.773334l69.973333-70.186667v-72.96l38.826667 38.826667 32.853333-43.52v100.053333l71.466667 71.68V354.56l-111.146667 90.026667-102.186667-88.533334v30.72H282.666667v-50.346666L28.8 589.866667v107.093333l178.773333-182.826667v146.56z" fill="#606060" opacity=".55" p-id="1668"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
1
modeler/src/assets/icons/arrow-left.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1769506253911" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1989" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M795.02336 141.85472a25.6 25.6 0 0 0-35.15392-8.6528L213.35552 463.81568a56.32 56.32 0 0 0-19.03616 19.03616c-16.1024 26.61376-7.5776 61.24032 19.03616 77.34272l546.51392 330.60864a25.6 25.6 0 0 0 38.85056-21.90336V155.10528a25.6 25.6 0 0 0-3.69664-13.25056zM849.92 868.89984c0 42.4192-34.38592 76.8-76.8 76.8a76.8 76.8 0 0 1-39.75168-11.0848L186.8544 604.00128c-50.81088-30.73536-67.08224-96.8448-36.34688-147.65056a107.52 107.52 0 0 1 36.34688-36.34176l546.5088-330.61376c36.3008-21.95456 83.51232-10.33216 105.472 25.9584A76.8 76.8 0 0 1 849.92 155.10528v713.79456z" fill="#1296db" p-id="1990"></path></svg>
|
||||
|
After Width: | Height: | Size: 943 B |
4
modeler/src/assets/icons/arrow-right.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg t="1769564948327" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2558" width="200" height="200">
|
||||
<path d="M768.5 567.1l-352 207.8c-10.4 6.2-21.6 9-32.4 9-33.4 0-64.1-26.7-64.1-64.1V304.2c0-37.4 30.7-64.1 64.1-64.1 10.8 0 22 2.8 32.4 9l351.9 207.8c42 24.8 42 85.4 0.1 110.2z" p-id="2559" fill="#5da0df"></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 504 B |
BIN
modeler/src/assets/icons/back.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
modeler/src/assets/icons/bg-card-head.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
modeler/src/assets/icons/bg-card-title-split.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
modeler/src/assets/icons/bg-card.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
modeler/src/assets/icons/bg-fk-point.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
modeler/src/assets/icons/bg-fk-title.png
Normal file
|
After Width: | Height: | Size: 162 KiB |
BIN
modeler/src/assets/icons/bg-fk.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
modeler/src/assets/icons/bg-menu-active.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
modeler/src/assets/icons/bg-modal.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
modeler/src/assets/icons/bg-model-builder-canvas.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
modeler/src/assets/icons/bg-model-builder-card-title.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
modeler/src/assets/icons/bg-node.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
modeler/src/assets/icons/bg-page.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
modeler/src/assets/icons/bg-pk-body.png
Normal file
|
After Width: | Height: | Size: 222 KiB |
BIN
modeler/src/assets/icons/bg-pk-header.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
modeler/src/assets/icons/bg-pk-left.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
modeler/src/assets/icons/bg-pk-right.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
modeler/src/assets/icons/bg-pk.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
modeler/src/assets/icons/bg-steps-card.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
modeler/src/assets/icons/bg-tabs.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
modeler/src/assets/icons/bg-workspace-card-title.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
modeler/src/assets/icons/bg-workspace-card.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
modeler/src/assets/icons/card-head.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
modeler/src/assets/icons/folder.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
1
modeler/src/assets/icons/goback.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1766719692225" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16285" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M789.12 818.016s-5.632 14.496-13.12 0c0 0-83.808-252.896-288.064-189.216v78.496s-3.264 46.144-43.52 16.096L243.584 550.016s-42.592-23.168 2.592-54.88l202.976-174.4s30.528-21.76 37.856 13.92l0.224 84.704c0 0.064 380.704 18.304 301.888 398.656z" p-id="16286" fill="#7ae8fc"></path></svg>
|
||||
|
After Width: | Height: | Size: 619 B |
BIN
modeler/src/assets/icons/header-logo.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
modeler/src/assets/icons/icon-grid.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
modeler/src/assets/icons/icon-input.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
modeler/src/assets/icons/icon-list.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
modeler/src/assets/icons/icon-model-input.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
modeler/src/assets/icons/icon-model.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
modeler/src/assets/icons/icon-search.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
modeler/src/assets/icons/icon-settings.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
modeler/src/assets/icons/list.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
modeler/src/assets/icons/loading.gif
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
modeler/src/assets/icons/m-01.png
Normal file
|
After Width: | Height: | Size: 12 KiB |