init project
|
@ -0,0 +1,15 @@
|
|||
# http://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = false
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"root": true,
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"extends": [
|
||||
"prettier",
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"env": {
|
||||
"browser": false,
|
||||
"node": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"rules": {
|
||||
"@typescript-eslint/naming-convention": "warn",
|
||||
"@typescript-eslint/semi": "warn",
|
||||
"curly": "warn",
|
||||
"eqeqeq": "warn",
|
||||
"no-throw-literal": "warn",
|
||||
"semi": "off",
|
||||
"@typescript-eslint/no-inferrable-types": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
"@typescript-eslint/no-non-null-assertion": "off",
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
0,
|
||||
{
|
||||
"varsIgnorePattern": "_"
|
||||
}
|
||||
],
|
||||
"prefer-rest-params": "off",
|
||||
"no-var": "off"
|
||||
},
|
||||
"ignorePatterns": [
|
||||
"out",
|
||||
"dist",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
|
@ -1,116 +1,9 @@
|
|||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
// 本地文件历史记录
|
||||
.history
|
||||
// node 安装包
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
// 编译目录
|
||||
dist/
|
||||
./out
|
||||
// 打包文件
|
||||
*.vsix
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
module.exports = {
|
||||
printWidth: 180,
|
||||
semi: true,
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
bracketSpacing: true,
|
||||
jsxBracketSameLine: false,
|
||||
jsxSingleQuote: true,
|
||||
quoteProps: 'as-needed',
|
||||
arrowParens: 'avoid',
|
||||
tabWidth: 2,
|
||||
useTabs: false,
|
||||
endOfLine: 'lf',
|
||||
};
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||
// for the documentation about the extensions.json format
|
||||
"recommendations": [
|
||||
"dbaeumer.vscode-eslint",
|
||||
"amodio.tsl-problem-matcher"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
// A launch configuration that compiles the extension and then opens it inside a new window
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Run Extension",
|
||||
"type": "extensionHost",
|
||||
"request": "launch",
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
],
|
||||
"preLaunchTask": "${defaultBuildTask}"
|
||||
},
|
||||
{
|
||||
"name": "Extension Tests",
|
||||
"type": "extensionHost",
|
||||
"request": "launch",
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
"--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
|
||||
],
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/**/*.js",
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
],
|
||||
"preLaunchTask": "tasks: watch-tests"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
// Place your settings in this file to overwrite default and user settings.
|
||||
{
|
||||
"files.exclude": {
|
||||
"out": false, // set this to true to hide the "out" folder with the compiled JS files
|
||||
"dist": false // set this to true to hide the "dist" folder with the compiled JS files
|
||||
},
|
||||
"search.exclude": {
|
||||
"out": true, // set this to false to include "out" folder in search results
|
||||
"dist": true // set this to false to include "dist" folder in search results
|
||||
},
|
||||
// Turn off tsc task auto detection since we have the necessary tasks as npm scripts
|
||||
"typescript.tsc.autoDetect": "off"
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "watch",
|
||||
"problemMatcher": [
|
||||
"$ts-webpack-watch",
|
||||
"$tslint-webpack-watch"
|
||||
],
|
||||
"isBackground": true,
|
||||
"presentation": {
|
||||
"reveal": "never",
|
||||
"group": "watchers"
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "watch-tests",
|
||||
"problemMatcher": "$tsc-watch",
|
||||
"isBackground": true,
|
||||
"presentation": {
|
||||
"reveal": "never",
|
||||
"group": "watchers"
|
||||
},
|
||||
"group": "build"
|
||||
},
|
||||
{
|
||||
"label": "tasks: watch-tests",
|
||||
"dependsOn": [
|
||||
"npm: watch",
|
||||
"npm: watch-tests"
|
||||
],
|
||||
"problemMatcher": []
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
.vscode/**
|
||||
.vscode-test/**
|
||||
out/**
|
||||
node_modules/**
|
||||
src/**
|
||||
.gitignore
|
||||
.yarnrc
|
||||
webpack.config.js
|
||||
vsc-extension-quickstart.md
|
||||
**/tsconfig.json
|
||||
**/.eslintrc.json
|
||||
**/*.map
|
||||
**/*.ts
|
||||
.history
|
|
@ -0,0 +1,9 @@
|
|||
# Change Log
|
||||
|
||||
All notable changes to the "Test" extension will be documented in this file.
|
||||
|
||||
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
- Initial release
|
2
LICENSE
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2021 千反田丷
|
||||
Copyright (c) 2021
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -0,0 +1,119 @@
|
|||
# iBiz建模工场(iBizModelingStudio)
|
||||
|
||||
辅助 iBizSys 系统进行模型开发,不需要脱离你的生产力工具即可完成需要的模型操作。
|
||||
|
||||
yaml 格式的文本编辑,友好的提示和便捷的修改,更拥有友好的图形化界面方便进行复杂模型编辑。良好的索引界面,帮助你更快的定位到需要修改的模型。无本地文件,无需占用本地空间。
|
||||
|
||||
## 功能预览
|
||||
|
||||
<img src='https://cdn.ibizlab.cn/ibizsys-vscode-plugin/tool-preview.gif' style='width: 100%'></img>
|
||||
|
||||
## vscode 基本设置
|
||||
|
||||
##### 1. 配置基本服务域地址
|
||||
|
||||
```json
|
||||
// 配置说明
|
||||
{
|
||||
"ibiz-modeling-studio.iBizModelingStudioDomain": "基本服务提供域地址"
|
||||
}
|
||||
// 正式环境配置 <插件默认配置>
|
||||
{
|
||||
"ibiz-modeling-studio.iBizModelingStudioDomain": "http://studio.ibizmodeling.cn"
|
||||
}
|
||||
// 开发环境配置
|
||||
{
|
||||
"ibiz-modeling-studio.iBizModelingStudioDomain": "http://172.16.170.145"
|
||||
}
|
||||
```
|
||||
|
||||
##### 2. 系统消息终端
|
||||
|
||||
1. 在关闭后收到消息时会自动弹出,可以配置 `ibiz-modeling-studio.console.autoDisplay=false` 关闭弹出
|
||||
|
||||
## 前置要求
|
||||
|
||||
1. 拥有 iBizLab 账户
|
||||
|
||||
2. 本地有 iBizSys 项目,并且账户对项目拥有修改权限
|
||||
|
||||
3. 项目根目录有 .ibizproject 文件
|
||||
|
||||
## 快速开始
|
||||
|
||||
1. 请确认项目 .ibizproject 文件中有如下几个属性
|
||||
|
||||
```yaml
|
||||
# .ibizproject 文件
|
||||
|
||||
# 打开类型设置。当前支持系统,后续将支持直接从应用开始。
|
||||
type: PSSYSTEM
|
||||
# 方案标识
|
||||
psdevsln: 22A4AD93-6A7C-4380-B912-6B2CA9C3DCDF
|
||||
# 系统标识
|
||||
psdevslnsys: 913D11CB-B368-4589-845C-9B47308A02B4
|
||||
# 系统名称
|
||||
psdevslnsysname: iBiz产品生产管理系统
|
||||
```
|
||||
|
||||
2. 在 vscode 新建窗口,快捷键:`Ctrl+Shift+N`
|
||||
|
||||
3. 将项目添加到工作区,按钮路径:`文件 => 将文件夹添加到工作区`
|
||||
|
||||
<img src='https://cdn.ibizlab.cn/ibizsys-vscode-plugin/add-folder-to-workspace.gif' style='width: 100%'></img>
|
||||
|
||||
4. 添加成功识并别到 .ibizproject 文件后会弹出登录框,请使用 iBizLab 账号登录
|
||||
|
||||
<img src='https://cdn.ibizlab.cn/ibizsys-vscode-plugin/login-user.gif' style='width: 100%'></img>
|
||||
|
||||
5. 登录成功后重新加载工作区,使插件初始化文件系统
|
||||
|
||||
<img src='https://cdn.ibizlab.cn/ibizsys-vscode-plugin/reload-workspace.gif' style='width: 100%'></img>
|
||||
|
||||
6. 初始化完毕,将工作区保存
|
||||
|
||||
7. 以后直接打开工作区即可使用啦~
|
||||
|
||||
## 命令(Command)  快捷键:`Ctrl+Shift+P`
|
||||
|
||||
1. 打开系统消息终端
|
||||
|
||||
2. 发布系统
|
||||
|
||||
3. 发布模板
|
||||
|
||||
## Issues
|
||||
|
||||
在使用过程中遇见问题,可以来 [issues](http://172.16.180.230/vscode-plugin/ibiz-modeling-studio/issues) 提交
|
||||
|
||||
### 0.0.1
|
||||
|
||||
初始版本
|
||||
|
||||
---
|
||||
|
||||
<!-- ## Following extension guidelines
|
||||
|
||||
Ensure that you've read through the extensions guidelines and follow the best practices for creating your extension.
|
||||
|
||||
* [Extension Guidelines](https://code.visualstudio.com/api/references/extension-guidelines)
|
||||
|
||||
## Working with Markdown
|
||||
|
||||
**Note:** You can author your README using Visual Studio Code. Here are some useful editor keyboard shortcuts:
|
||||
|
||||
* Split the editor (`Cmd+\` on macOS or `Ctrl+\` on Windows and Linux)
|
||||
* Toggle preview (`Shift+CMD+V` on macOS or `Shift+Ctrl+V` on Windows and Linux)
|
||||
* Press `Ctrl+Space` (Windows, Linux) or `Cmd+Space` (macOS) to see a list of Markdown snippets -->
|
||||
|
||||
### 了解更多
|
||||
|
||||
- [iBizSys 官网](http://www.ibizsys.cn)
|
||||
|
||||
- [iBiz 开发平台](https://www.ibizlab.cn/)
|
||||
|
||||
- [应用中心管理](http://www.ibizmodeling.cn/#/appcenter/appportalview)
|
||||
|
||||
## 常见问题
|
||||
|
||||
1. 出现 <font color=#eb445a>read ECONNRESET</font> 错误提示,请检查是否使用了翻墙软件。一般为翻墙软件导致的无法发送请求。
|
|
@ -0,0 +1,286 @@
|
|||
{
|
||||
"name": "ibiz-modeling-studio",
|
||||
"displayName": "iBizModelingStudio",
|
||||
"description": "iBiz建模工场",
|
||||
"publisher": "ibizlab",
|
||||
"preview": true,
|
||||
"version": "0.0.4",
|
||||
"engines": {
|
||||
"vscode": "^1.62.0"
|
||||
},
|
||||
"repository": "http://172.16.180.230/vscode-plugin/ibiz-studio-code.git",
|
||||
"categories": [
|
||||
"Other"
|
||||
],
|
||||
"icon": "resources/icon/icon.png",
|
||||
"activationEvents": [
|
||||
"onFileSystem:ibizmos",
|
||||
"onCustomEditor:iBizCustomEditor.iBizModelUI",
|
||||
"onCustomEditor:iBizCustomEditor.iBizModelRuntime",
|
||||
"workspaceContains:**/.ibizproject"
|
||||
],
|
||||
"main": "./dist/extension.js",
|
||||
"contributes": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "ibiz-modeling-studio.user.login",
|
||||
"title": "%command.ibiz-modeling-studio.user.login%",
|
||||
"category": "%command.ibiz-modeling-studio.category%"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.open-ibiz-modeling",
|
||||
"title": "%command.ibiz-modeling-studio.open-ibiz-modeling%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"dark": "resources/icon/dark/logo.svg",
|
||||
"light": "resources/icon/light/logo.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.system-info-terminal.show",
|
||||
"title": "%command.ibiz-modeling-studio.system-info-terminal.show%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"dark": "resources/icon/dark/terminal.svg",
|
||||
"light": "resources/icon/light/terminal.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.system.publish.code",
|
||||
"title": "%command.ibiz-modeling-studio.system.publish.code%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"dark": "resources/icon/dark/code-publish.svg",
|
||||
"light": "resources/icon/light/code-publish.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.template.publish",
|
||||
"title": "%command.ibiz-modeling-studio.template.publish%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"dark": "resources/icon/dark/template-publish.svg",
|
||||
"light": "resources/icon/light/template-publish.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.copy-path",
|
||||
"title": "%command.ibiz-modeling-studio.mos-fs.copy-path%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"light": "resources/icon/light/copy.svg",
|
||||
"dark": "resources/icon/dark/copy.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.open-file",
|
||||
"title": "%command.ibiz-modeling-studio.mos-fs.open-file%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"light": "resources/icon/light/edit.svg",
|
||||
"dark": "resources/icon/dark/edit.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.open-runtime",
|
||||
"title": "%command.ibiz-modeling-studio.mos-fs.open-runtime%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"light": "resources/icon/light/model-runtime.svg",
|
||||
"dark": "resources/icon/dark/model-runtime.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.search-model-by-path",
|
||||
"title": "%command.ibiz-modeling-studio.mos-fs.search-model-by-path%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"light": "resources/icon/light/link.svg",
|
||||
"dark": "resources/icon/dark/link.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.search-entity",
|
||||
"title": "%command.ibiz-modeling-studio.mos-fs.search-entity%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"light": "resources/icon/light/search-entity.svg",
|
||||
"dark": "resources/icon/dark/search-entity.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.search-entity-view",
|
||||
"title": "%command.ibiz-modeling-studio.mos-fs.search-entity-view%",
|
||||
"category": "%command.ibiz-modeling-studio.category%",
|
||||
"icon": {
|
||||
"light": "resources/icon/light/search-entity-view.svg",
|
||||
"dark": "resources/icon/dark/search-entity-view.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.user.login-reply-path-handle",
|
||||
"title": "处理粘贴板中的登录地址",
|
||||
"enablement": "false"
|
||||
}
|
||||
],
|
||||
"menus": {
|
||||
"view/title": [
|
||||
{
|
||||
"command": "ibiz-modeling-studio.open-ibiz-modeling",
|
||||
"when": "view == iBizExplorer.ModelExpTree",
|
||||
"group": "navigation@10"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.search-model-by-path",
|
||||
"when": "view == iBizExplorer.ModelExpTree",
|
||||
"group": "navigation@20"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.search-entity",
|
||||
"when": "view == iBizExplorer.ModelExpTree",
|
||||
"group": "navigation@30"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.system-info-terminal.show",
|
||||
"when": "view == iBizExplorer.ModelExpTree",
|
||||
"group": "navigation@50"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.system.publish.code",
|
||||
"when": "view == iBizExplorer.ModelExpTree",
|
||||
"group": "1_ibiz_modeling"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.template.publish",
|
||||
"when": "view == iBizExplorer.ModelExpTree",
|
||||
"group": "1_ibiz_modeling"
|
||||
}
|
||||
],
|
||||
"view/item/context": [
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.open-runtime",
|
||||
"when": "view == iBizExplorer.ModelExpTree && viewItem == MODEL",
|
||||
"group": "inline@10"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.open-file",
|
||||
"when": "view == iBizExplorer.ModelExpTree && viewItem == MODEL",
|
||||
"group": "inline@20"
|
||||
},
|
||||
{
|
||||
"command": "ibiz-modeling-studio.mos-fs.copy-path",
|
||||
"when": "view == iBizExplorer.ModelExpTree && viewItem == MODEL"
|
||||
}
|
||||
]
|
||||
},
|
||||
"viewsContainers": {
|
||||
"activitybar": [
|
||||
{
|
||||
"id": "ibiz-modeling-studio_explorer",
|
||||
"title": "%global.ibiz-modeling-studio.title%",
|
||||
"icon": "resources/icon/logo.svg"
|
||||
}
|
||||
]
|
||||
},
|
||||
"views": {
|
||||
"ibiz-modeling-studio_explorer": [
|
||||
{
|
||||
"id": "iBizExplorer.ModelExpTree",
|
||||
"name": "",
|
||||
"icon": "resources/icon/logo.svg",
|
||||
"when": "ibiz-modeling-studio.enable-plugin == true"
|
||||
}
|
||||
]
|
||||
},
|
||||
"customEditors": [
|
||||
{
|
||||
"viewType": "iBizCustomEditor.iBizModelUI",
|
||||
"displayName": "模型图形编辑器",
|
||||
"priority": "default",
|
||||
"selector": [
|
||||
{
|
||||
"filenamePattern": "*.ibizmodel.ui"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"viewType": "iBizCustomEditor.iBizModelRuntime",
|
||||
"displayName": "实时模型对象",
|
||||
"priority": "default",
|
||||
"selector": [
|
||||
{
|
||||
"filenamePattern": "*.ibizmodel.runtime"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"configuration": {
|
||||
"title": "%global.ibiz-modeling-studio.title%",
|
||||
"properties": {
|
||||
"ibiz-modeling-studio.ibiz-modeling-studio-domain": {
|
||||
"description": "%properties.ibiz-modeling-studio.ibiz-modeling-studio-domain%",
|
||||
"type": "string",
|
||||
"default": "http://studio.ibizmodeling.cn"
|
||||
},
|
||||
"ibiz-modeling-studio.console.auto-display": {
|
||||
"description": "%properties.ibiz-modeling-studio.console.auto-display%",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"ibiz-modeling-studio.ibiz-modeling-link.enable": {
|
||||
"description": "%properties.ibiz-modeling-studio.ibiz-modeling-link.enable%",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"vscode:prepublish": "npm run package",
|
||||
"compile": "webpack",
|
||||
"watch": "webpack --watch",
|
||||
"package": "webpack --mode production --devtool hidden-source-map",
|
||||
"compile-tests": "tsc -p . --outDir out",
|
||||
"watch-tests": "tsc -p . -w --outDir out",
|
||||
"pretest": "npm run compile-tests && npm run compile && npm run lint",
|
||||
"lint": "eslint src --ext ts",
|
||||
"test": "node ./out/test/runTest.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/debug": "^4.1.7",
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
"@types/glob": "^7.2.0",
|
||||
"@types/js-yaml": "^4.0.5",
|
||||
"@types/mocha": "^9.0.0",
|
||||
"@types/node": "16.x",
|
||||
"@types/ramda": "^0.27.59",
|
||||
"@types/vscode": "^1.62.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.6.0",
|
||||
"@typescript-eslint/parser": "^5.6.0",
|
||||
"@vscode/test-electron": "^1.6.2",
|
||||
"eslint": "^8.4.1",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"glob": "^7.2.0",
|
||||
"mocha": "^9.1.3",
|
||||
"ts-loader": "^9.2.6",
|
||||
"typescript": "^4.5.2",
|
||||
"utf-8-validate": "^5.0.7",
|
||||
"vsce": "^2.5.1",
|
||||
"webpack": "^5.65.0",
|
||||
"webpack-cli": "^4.9.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ibiz/vscode-editor-api": "^0.0.6",
|
||||
"axios": "^0.24.0",
|
||||
"bufferutil": "^4.0.5",
|
||||
"dayjs": "^1.10.7",
|
||||
"debug": "^4.3.3",
|
||||
"fs-extra": "^10.0.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"mqtt": "~2.18.8",
|
||||
"ramda": "^0.27.1",
|
||||
"rxjs": "^7.4.0",
|
||||
"vscode-nls": "^5.0.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"global.ibiz-modeling-studio.title": "IBiz Modeling Studio",
|
||||
"command.ibiz-modeling-studio.category": "iBizModeling",
|
||||
"command.ibiz-modeling-studio.user.login": "Login",
|
||||
"command.ibiz-modeling-studio.open-ibiz-modeling": "Open iBizModeling Tool",
|
||||
"command.ibiz-modeling-studio.system-info-terminal.show": "Open Information Terminal",
|
||||
"command.ibiz-modeling-studio.system.publish.code": "Publish Code",
|
||||
"command.ibiz-modeling-studio.template.publish": "Publish Template",
|
||||
"command.ibiz-modeling-studio.mos-fs.copy-path": "Copy Path",
|
||||
"command.ibiz-modeling-studio.mos-fs.open-file": "Open Model",
|
||||
"command.ibiz-modeling-studio.mos-fs.open-runtime": "Open Model Runtime",
|
||||
"command.ibiz-modeling-studio.mos-fs.search-model-by-path": "Search Model By Path",
|
||||
"command.ibiz-modeling-studio.mos-fs.search-entity": "Search Entity",
|
||||
"command.ibiz-modeling-studio.mos-fs.search-entity-view": "Search Entity View",
|
||||
"properties.ibiz-modeling-studio.ibiz-modeling-studio-domain": "Modeling Studio Domain",
|
||||
"properties.ibiz-modeling-studio.console.auto-display": "After the message terminal is closed, the terminal is reopened when the message is received",
|
||||
"properties.ibiz-modeling-studio.ibiz-modeling-link.enable": "Enable iBizModeling Link Recognition"
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"global.ibiz-modeling-studio.title": "iBiz建模工场",
|
||||
"command.ibiz-modeling-studio.category": "iBiz建模工场",
|
||||
"command.ibiz-modeling-studio.user.login": "登录",
|
||||
"command.ibiz-modeling-studio.open-ibiz-modeling": "打开 iBizModeling 工具",
|
||||
"command.ibiz-modeling-studio.system-info-terminal.show": "打开信息终端",
|
||||
"command.ibiz-modeling-studio.system.publish.code": "发布代码",
|
||||
"command.ibiz-modeling-studio.template.publish": "发布模板",
|
||||
"command.ibiz-modeling-studio.mos-fs.copy-path": "复制路径",
|
||||
"command.ibiz-modeling-studio.mos-fs.open-file": "打开模型",
|
||||
"command.ibiz-modeling-studio.mos-fs.open-runtime": "打开运行时",
|
||||
"command.ibiz-modeling-studio.mos-fs.search-model-by-path": "根据路径查找模型",
|
||||
"command.ibiz-modeling-studio.mos-fs.search-entity": "查找实体",
|
||||
"command.ibiz-modeling-studio.mos-fs.search-entity-view": "查找实体视图",
|
||||
"properties.ibiz-modeling-studio.ibiz-modeling-studio-domain": "建模工场域",
|
||||
"properties.ibiz-modeling-studio.console.auto-display": "消息终端关闭后,收到时消息重新打开终端",
|
||||
"properties.ibiz-modeling-studio.ibiz-modeling-link.enable": "启用 iBizModeling 链接识别"
|
||||
}
|
|
@ -0,0 +1,364 @@
|
|||
{
|
||||
"PSSYSTEM": {
|
||||
"psmodules": { "caption": "模块", "psmodeltype": "PSMODULE" },
|
||||
"pscodelists": { "caption": "代码表", "psmodeltype": "PSCODELIST" },
|
||||
"pssysermaps": { "caption": "ER图", "psmodeltype": "PSSYSERMAP" },
|
||||
"pssysdbschemes": { "caption": "数据库", "psmodeltype": "PSSYSDBSCHEME" },
|
||||
"pssysbdschemes": { "caption": "大数据", "psmodeltype": "PSSYSBDSCHEME" },
|
||||
"pssyssearchschemes": { "caption": "全文检索", "psmodeltype": "PSSYSSEARCHSCHEME" },
|
||||
"pssysucmaps": { "caption": "用例", "psmodeltype": "PSSYSUCMAP" },
|
||||
"pssysunireses": { "caption": "统一资源", "psmodeltype": "PSSYSUNIRES" },
|
||||
"pssysusermodes": { "caption": "用户模式", "psmodeltype": "PSSYSUSERMODE" },
|
||||
"pssysopprivs": { "caption": "系统角色", "psmodeltype": "PSSYSOPPRIV" },
|
||||
"pssysuserdrs": { "caption": "自定义数据范围", "psmodeltype": "PSSYSUSERDR" },
|
||||
"pssysapps": { "caption": "前端应用", "psmodeltype": "PSSYSAPP" },
|
||||
"pssysserviceapis": { "caption": "服务接口", "psmodeltype": "PSSYSSERVICEAPI" },
|
||||
"pssyssfpubs": { "caption": "后台架构", "psmodeltype": "PSSYSSFPUB" },
|
||||
"pssyscsses": { "caption": "界面样式表", "psmodeltype": "PSSYSCSS" },
|
||||
"pssysimages": { "caption": "图片资源", "psmodeltype": "PSSYSIMAGE" },
|
||||
"psdeuiactions": { "caption": "全局界面行为", "psmodeltype": "PSDEUIACTION" },
|
||||
"psdeuagroups": { "caption": "全局界面行为组", "psmodeltype": "PSDEUAGROUP" },
|
||||
"psdetoolbars": { "caption": "全局工具栏", "psmodeltype": "PSDETOOLBAR" },
|
||||
"pssysportlets": { "caption": "门户部件", "psmodeltype": "PSSYSPORTLET" },
|
||||
"psachandlers": { "caption": "全局界面处理", "psmodeltype": "PSACHANDLER" },
|
||||
"pssyscounters": { "caption": "计数器", "psmodeltype": "PSSYSCOUNTER" },
|
||||
"pssysviewpanels": { "caption": "视图布局面板", "psmodeltype": "PSSYSVIEWPANEL" },
|
||||
"psviewmsgs": { "caption": "视图消息", "psmodeltype": "PSVIEWMSG" },
|
||||
"psviewmsggroups": { "caption": "视图消息组", "psmodeltype": "PSVIEWMSGGROUP" },
|
||||
"psworkflows": { "caption": "工作流", "psmodeltype": "PSWORKFLOW" },
|
||||
"pswfroles": { "caption": "工作流角色", "psmodeltype": "PSWFROLE" },
|
||||
"pswfworktimes": { "caption": "工作流时间", "psmodeltype": "PSWFWORKTIME" },
|
||||
"pssysmodelgroups": { "caption": "模型组", "psmodeltype": "PSSYSMODELGROUP" },
|
||||
"pssysrefs": { "caption": "子系统", "psmodeltype": "PSSYSREF" },
|
||||
"pssyspfplugins": { "caption": "前端模板插件", "psmodeltype": "PSSYSPFPLUGIN" },
|
||||
"pssyssfplugins": { "caption": "后台模板插件", "psmodeltype": "PSSYSSFPLUGIN" },
|
||||
"pssyseditorstyles": { "caption": "编辑器样式", "psmodeltype": "PSSYSEDITORSTYLE" },
|
||||
"pssysdelogicnodes": { "caption": "逻辑处理组件", "psmodeltype": "PSSYSDELOGICNODE" },
|
||||
"pssysdynamodels": { "caption": "动态模型", "psmodeltype": "PSSYSDYNAMODEL" },
|
||||
"pssysvaluerules": { "caption": "值规则", "psmodeltype": "PSSYSVALUERULE" },
|
||||
"pssubsysserviceapis": { "caption": "外部接口", "psmodeltype": "PSSUBSYSSERVICEAPI" },
|
||||
"pssysresources": { "caption": "资源", "psmodeltype": "PSSYSRESOURCE" },
|
||||
"psdegroups": { "caption": "实体组", "psmodeltype": "PSDEGROUP" },
|
||||
"psdergroups": { "caption": "关系组", "psmodeltype": "PSDERGROUP" },
|
||||
"pssysmsgtempls": { "caption": "消息模板", "psmodeltype": "PSSYSMSGTEMPL" },
|
||||
"pssysutildes": { "caption": "功能配置", "psmodeltype": "PSSYSUTILDE" },
|
||||
"pssysdeftypes": { "caption": "属性类型逻辑", "psmodeltype": "PSSYSDEFTYPE" },
|
||||
"pssystestdata": { "caption": "测试数据", "psmodeltype": "PSSYSTESTDATA" },
|
||||
"pssystestprjs": { "caption": "测试项目", "psmodeltype": "PSSYSTESTPRJ" },
|
||||
"pssysunits": { "caption": "单位", "psmodeltype": "PSSYSUNIT" }
|
||||
},
|
||||
"PSMODULE": {
|
||||
"psdataentities": { "caption": "实体", "psmodeltype": "PSDATAENTITY" },
|
||||
"pscodelists": { "caption": "代码表", "psmodeltype": "PSCODELIST" },
|
||||
"pssysermaps": { "caption": "ER图", "psmodeltype": "PSSYSERMAP" },
|
||||
"pssysdbschemes": { "caption": "数据库", "psmodeltype": "PSSYSDBSCHEME" },
|
||||
"pssysbdschemes": { "caption": "大数据", "psmodeltype": "PSSYSBDSCHEME" },
|
||||
"pssyssearchschemes": { "caption": "全文检索", "psmodeltype": "PSSYSSEARCHSCHEME" },
|
||||
"pssysucmaps": { "caption": "用例", "psmodeltype": "PSSYSUCMAP" },
|
||||
"pssysunireses": { "caption": "统一资源", "psmodeltype": "PSSYSUNIRES" },
|
||||
"pssysusermodes": { "caption": "用户模式", "psmodeltype": "PSSYSUSERMODE" },
|
||||
"pssysopprivs": { "caption": "系统角色", "psmodeltype": "PSSYSOPPRIV" },
|
||||
"pssysuserdrs": { "caption": "自定义数据范围", "psmodeltype": "PSSYSUSERDR" },
|
||||
"pssysapps": { "caption": "前端应用", "psmodeltype": "PSSYSAPP" },
|
||||
"pssysserviceapis": { "caption": "服务接口", "psmodeltype": "PSSYSSERVICEAPI" },
|
||||
"pssyscsses": { "caption": "界面样式表", "psmodeltype": "PSSYSCSS" },
|
||||
"pssysimages": { "caption": "图片资源", "psmodeltype": "PSSYSIMAGE" },
|
||||
"psdeuiactions": { "caption": "全局界面行为", "psmodeltype": "PSDEUIACTION" },
|
||||
"psdeuagroups": { "caption": "全局界面行为组", "psmodeltype": "PSDEUAGROUP" },
|
||||
"psdetoolbars": { "caption": "全局工具栏", "psmodeltype": "PSDETOOLBAR" },
|
||||
"pssysportlets": { "caption": "门户部件", "psmodeltype": "PSSYSPORTLET" },
|
||||
"psachandlers": { "caption": "全局界面处理", "psmodeltype": "PSACHANDLER" },
|
||||
"pssyscounters": { "caption": "计数器", "psmodeltype": "PSSYSCOUNTER" },
|
||||
"pssysviewpanels": { "caption": "视图部件面板", "psmodeltype": "PSSYSVIEWPANEL" },
|
||||
"psviewmsg": { "caption": "视图消息", "psmodeltype": "PSVIEWMSG" },
|
||||
"psviewmsggroups": { "caption": "视图消息组", "psmodeltype": "PSVIEWMSGGROUP" },
|
||||
"psworkflows": { "caption": "工作流", "psmodeltype": "PSWORKFLOW" },
|
||||
"pswfroles": { "caption": "工作流角色", "psmodeltype": "PSWFROLE" },
|
||||
"pswfworktimes": { "caption": "工作流时间", "psmodeltype": "PSWFWORKTIME" },
|
||||
"pssyspfplugins": { "caption": "前端模板插件", "psmodeltype": "PSSYSPFPLUGIN" },
|
||||
"pssyssfplugins": { "caption": "后台模板插件", "psmodeltype": "PSSYSSFPLUGIN" },
|
||||
"pssyseditorstyles": { "caption": "编辑器样式", "psmodeltype": "PSSYSEDITORSTYLE" },
|
||||
"pssysdelogicnodes": { "caption": "逻辑处理组件", "psmodeltype": "PSSYSDELOGICNODE" },
|
||||
"pssysdynamodels": { "caption": "动态模型", "psmodeltype": "PSSYSDYNAMODEL" },
|
||||
"pssysvaluerules": { "caption": "值规则", "psmodeltype": "PSSYSVALUERULE" },
|
||||
"pssubsysserviceapis": { "caption": "外部接口", "psmodeltype": "PSSUBSYSSERVICEAPI" },
|
||||
"pssyscontentcats": { "caption": "内容分类", "psmodeltype": "PSSYSCONTENTCAT" },
|
||||
"pssysresources": { "caption": "资源", "psmodeltype": "PSSYSRESOURCE" },
|
||||
"psdegroups": { "caption": "实体组", "psmodeltype": "PSDEGROUP" },
|
||||
"psdergroups": { "caption": "关系组", "psmodeltype": "PSDERGROUP" },
|
||||
"pssysmsgtempls": { "caption": "消息模板", "psmodeltype": "PSSYSMSGTEMPL" },
|
||||
"pssysbackservices": { "caption": "后台作业", "psmodeltype": "PSSYSBACKSERVICE" },
|
||||
"pssystestprjs": { "caption": "测试项目", "psmodeltype": "PSSYSTESTPRJ" },
|
||||
"pssysunits": { "caption": "单位", "psmodeltype": "PSSYSUNIT" }
|
||||
},
|
||||
"PSDATAENTITY": {
|
||||
"psdefields": { "caption": "属性", "psmodeltype": "PSDEFIELD" },
|
||||
"majorpsders": { "caption": "主关系", "psmodeltype": "PSDER" },
|
||||
"minorpsders": { "caption": "从关系", "psmodeltype": "PSDER" },
|
||||
"pscodelists": { "caption": "代码表", "psmodeltype": "PSCODELIST" },
|
||||
"psdedbcfgs": { "caption": "数据库配置", "psmodeltype": "PSDEDBCFG" },
|
||||
"psdedbindexs": { "caption": "数据库索引", "psmodeltype": "PSDEDBINDEX" },
|
||||
"pssysdmitems": { "caption": "数据库结构", "psmodeltype": "PSSYSDMITEM" },
|
||||
"pssyssearchdes": { "caption": "全文检索", "psmodeltype": "PSSYSSEARCHDE" },
|
||||
"pssysbdtables": { "caption": "大数据", "psmodeltype": "PSSYSBDTABLE" },
|
||||
"psdeactions": { "caption": "行为", "psmodeltype": "PSDEACTION" },
|
||||
"psdelogics": { "caption": "处理逻辑", "psmodeltype": "PSDELOGIC" },
|
||||
"psdedataqueries": { "caption": "数据查询", "psmodeltype": "PSDEDATAQUERY" },
|
||||
"psdedatasets": { "caption": "数据集合", "psmodeltype": "PSDEDATASET" },
|
||||
"psdeacmodes": { "caption": "自填模式", "psmodeltype": "PSDEACMODE" },
|
||||
"psdeactionlogics": { "caption": "行为附加逻辑", "psmodeltype": "PSDEACTIONLOGIC" },
|
||||
"dstpsdeactionlogics": { "caption": "行为附加逻辑(外)", "psmodeltype": "PSDEACTIONLOGIC" },
|
||||
"srcpsdemaps": { "caption": "映射", "psmodeltype": "PSDEMAP" },
|
||||
"psdefsfitems": { "caption": "搜索项", "psmodeltype": "PSDEFSFITEM" },
|
||||
"psdefvaluerules": { "caption": "值规则", "psmodeltype": "PSDEFVALUERULE" },
|
||||
"psdemainstates": { "caption": "主状态", "psmodeltype": "PSDEMAINSTATE" },
|
||||
"psdedataexps": { "caption": "数据导出", "psmodeltype": "PSDEDATAEXP" },
|
||||
"psdedatasyncs": { "caption": "数据同步", "psmodeltype": "PSDEDATASYNC" },
|
||||
"psdedataimps": { "caption": "数据导入", "psmodeltype": "PSDEDATAIMP" },
|
||||
"psdenotifies": { "caption": "实体通知", "psmodeltype": "PSDENOTIFY" },
|
||||
"psdtsqueues": { "caption": "分布事务队列", "psmodeltype": "PSDEDTSQUEUE" },
|
||||
"psdeforms": { "caption": "表单", "psmodeltype": "PSDEFORM" },
|
||||
"psdegrids": { "caption": "表格", "psmodeltype": "PSDEGRID" },
|
||||
"psdetreeviews": { "caption": "树视图", "psmodeltype": "PSDETREEVIEW" },
|
||||
"psdecharts": { "caption": "图表", "psmodeltype": "PSDECHART" },
|
||||
"psdelists": { "caption": "列表", "psmodeltype": "PSDELIST" },
|
||||
"psdedataviews": { "caption": "卡片", "psmodeltype": "PSDEDATAVIEW" },
|
||||
"psdetoolbars": { "caption": "工具栏", "psmodeltype": "PSDETOOLBAR" },
|
||||
"pssysdashboards": { "caption": "数据看板", "psmodeltype": "PSSYSDASHBOARD" },
|
||||
"pssysportlets": { "caption": "看板部件", "psmodeltype": "PSSYSPORTLET" },
|
||||
"psachandlers": { "caption": "界面处理", "psmodeltype": "PSACHANDLER" },
|
||||
"psdeviewbases": { "caption": "视图", "psmodeltype": "PSDEVIEWBASE" },
|
||||
"pssysviewpanels": { "caption": "面板", "psmodeltype": "PSSYSVIEWPANEL" },
|
||||
"pssysmapviews": { "caption": "地图", "psmodeltype": "PSSYSMAPVIEW" },
|
||||
"pssyscalendars": { "caption": "日历", "psmodeltype": "PSSYSCALENDAR" },
|
||||
"pssyssearchbars": { "caption": "搜索栏", "psmodeltype": "PSSYSSEARCHBAR" },
|
||||
"psdedatarelations": { "caption": "关系界面组", "psmodeltype": "PSDEDATARELATION" },
|
||||
"psdedrgroups": { "caption": "关系界面分组", "psmodeltype": "PSDEDRGROUP" },
|
||||
"psdedritems": { "caption": "关系界面", "psmodeltype": "PSDEDRITEM" },
|
||||
"psdeuilogics": { "caption": "界面逻辑", "psmodeltype": "PSDELOGIC" },
|
||||
"psctrllogicgroups": { "caption": "界面逻辑组", "psmodeltype": "PSCTRLLOGICGROUP" },
|
||||
"psdeuiactions": { "caption": "界面行为", "psmodeltype": "PSDEUIACTION" },
|
||||
"psdeuagroups": { "caption": "界面行为组", "psmodeltype": "PSDEUAGROUP" },
|
||||
"pssyscounters": { "caption": "计数器", "psmodeltype": "PSSYSCOUNTER" },
|
||||
"psdewizards": { "caption": "向导", "psmodeltype": "PSDEWIZARD" },
|
||||
"psdefuimodes": { "caption": "属性界面模式", "psmodeltype": "PSDEFFORMITEM" },
|
||||
"pswfdes": { "caption": "工作流实体", "psmodeltype": "PSWFDE" },
|
||||
"psdeprints": { "caption": "打印", "psmodeltype": "PSDEPRINT" },
|
||||
"psdereports": { "caption": "报表", "psmodeltype": "PSDEREPORT" },
|
||||
"psdeutildes": { "caption": "功能配置", "psmodeltype": "PSDEUTILDE" },
|
||||
"psdeserviceapis": { "caption": "服务实体", "psmodeltype": "PSDESERVICEAPI" },
|
||||
"psapplocaldes": { "caption": "应用实体", "psmodeltype": "PSAPPLOCALDE" },
|
||||
"psdeopprivs": { "caption": "操作标识", "psmodeltype": "PSDEOPPRIV" },
|
||||
"psdeuserroles": { "caption": "操作角色", "psmodeltype": "PSDEUSERROLE" },
|
||||
"pshelparticles": { "caption": "帮助文章", "psmodeltype": "PSHELPARTICLE" },
|
||||
"pssystasks": { "caption": "开发任务", "psmodeltype": "PSSYSTASK" },
|
||||
"pslanguageres": { "caption": "语言资源", "psmodeltype": "PSLANGUAGERES" },
|
||||
"psdesampledata": { "caption": "示例数据", "psmodeltype": "PSDESAMPLEDATA" },
|
||||
"pssystestdatas": { "caption": "测试数据", "psmodeltype": "PSSYSTESTDATA" },
|
||||
"pssystestcases": { "caption": "测试用例", "psmodeltype": "PSSYSTESTCASE" },
|
||||
"psdefgroups": { "caption": "属性组", "psmodeltype": "PSDEFGROUP" },
|
||||
"psdergroups": { "caption": "关系组", "psmodeltype": "PSDERGROUP" },
|
||||
"psdegroups": { "caption": "实体组", "psmodeltype": "PSDEGROUP" },
|
||||
"psdeactiongroups": { "caption": "行为组", "psmodeltype": "PSDEACTIONGROUP" }
|
||||
},
|
||||
"PSDEFIELD": {
|
||||
"psdefdtcols": { "caption": "数据库", "psmodeltype": "PSDEFDTCOL" },
|
||||
"psdefvaluerules": { "caption": "值规则", "psmodeltype": "PSDEFVALUERULE" },
|
||||
"psdefsfitems": { "caption": "搜索模式", "psmodeltype": "PSDEFSFITEM" },
|
||||
"psdefuimodes": { "caption": "界面模式", "psmodeltype": "PSDEFFORMITEM" },
|
||||
"psdefinputtips": { "caption": "输入提示", "psmodeltype": "PSDEFINPUTTIP" },
|
||||
"pssyssearchdefields": { "caption": "全文检索", "psmodeltype": "PSSYSSEARCHDEFIELD" },
|
||||
"pssystestcases": { "caption": "值规则测试用例", "psmodeltype": "PSSYSTESTCASE" },
|
||||
"pshelpsections": { "caption": "帮助章节", "psmodeltype": "PSHELPSECTION" },
|
||||
"psdefields": { "caption": "关系属性", "psmodeltype": "PSDEFIELD" }
|
||||
},
|
||||
"PSDER": {
|
||||
"psdedritems": { "caption": "关系界面", "psmodeltype": "PSDEDRITEM" },
|
||||
"psdefields": { "caption": "关系属性", "psmodeltype": "PSDEFIELD" },
|
||||
"psderdefmaps": { "caption": "属性值映射", "psmodeltype": "PSDERDEFMAP" },
|
||||
"psdeopprivs": { "caption": "操作标识映射", "psmodeltype": "PSDEOPPRIV" }
|
||||
},
|
||||
"PSAPPLOCALDE": {
|
||||
"psappviews": { "caption": "应用视图", "psmodeltype": "PSAPPVIEW" }
|
||||
},
|
||||
"PSAPPMODULE": {
|
||||
"psappviews": { "caption": "应用视图", "psmodeltype": "PSAPPVIEW" },
|
||||
"psapplocaldes": { "caption": "应用实体", "psmodeltype": "PSAPPLOCALDE" }
|
||||
},
|
||||
"PSAPPWF": {
|
||||
"psappwfvers": { "caption": "版本", "psmodeltype": "PSAPPWFVER" }
|
||||
},
|
||||
"PSCODELIST": {
|
||||
"pscodeitems": { "caption": "代码项", "psmodeltype": "PSCODEITEM" }
|
||||
},
|
||||
"PSCTRLLOGICGROUP": {
|
||||
"psctrllogicgrpdetails": { "caption": "组成员", "psmodeltype": "PSCTRLLOGICGRPDETAIL" }
|
||||
},
|
||||
"PSCTRLMSG": {
|
||||
"psctrlmsgitems": { "caption": "消息项", "psmodeltype": "PSCTRLMSGITEM" }
|
||||
},
|
||||
"PSDEACTION": {
|
||||
"psdeactionparams": { "caption": "行为参数", "psmodeltype": "PSDEACTIONPARAM" },
|
||||
"psdeactionlogics": { "caption": "附加逻辑", "psmodeltype": "PSDEACTIONLOGIC" },
|
||||
"psdeactionvrs": { "caption": "参数值规则", "psmodeltype": "PSDEACTIONVR" },
|
||||
"pssystestcases": { "caption": "测试用例", "psmodeltype": "PSSYSTESTCASE" }
|
||||
},
|
||||
"PSDEDBINDEX": {
|
||||
"psdedbidxfields": { "caption": "索引列", "psmodeltype": "PSDEDBIDXFIELD" }
|
||||
},
|
||||
"PSDEDATAIMP": {
|
||||
"psdedataimpitems": { "caption": "导入项", "psmodeltype": "PSDEDATAIMPITEM" }
|
||||
},
|
||||
"PSDEDATARELATION": {
|
||||
"psdedrdetails": { "caption": "关系成员", "psmodeltype": "PSDEDRDETAIL" }
|
||||
},
|
||||
"PSDEDATASET": {
|
||||
"psdedsdqs": { "caption": "查询项", "psmodeltype": "PSDEDSDQ" }
|
||||
},
|
||||
"PSDEFGROUP": {
|
||||
"psdefgroupdetails": { "caption": "组成员", "psmodeltype": "PSDEFGROUPDETAIL" }
|
||||
},
|
||||
"PSDEMAINSTATE": {
|
||||
"psdemsactions": { "caption": "控制行为", "psmodeltype": "PSDEMSACTION" },
|
||||
"psdemsopprivs": { "caption": "控制访问标识", "psmodeltype": "PSDEMSOPPRIV" }
|
||||
},
|
||||
"PSDEMAP": {
|
||||
"psdemapdetails": { "caption": "属性映射", "psmodeltype": "PSDEMAPDETAIL" },
|
||||
"psdemapactions": { "caption": "行为映射", "psmodeltype": "PSDEMAPACTION" },
|
||||
"psdemapds": { "caption": "数据集合映射", "psmodeltype": "PSDEMAPDS" },
|
||||
"psdemapdqs": { "caption": "数据查询映射", "psmodeltype": "PSDEMAPDQ" }
|
||||
},
|
||||
"PSDERGROUP": {
|
||||
"psdergroupdetails": { "caption": "组成员", "psmodeltype": "PSDERGROUPDETAIL" }
|
||||
},
|
||||
"PSDEREPORT": {
|
||||
"psderepitems": { "caption": "子报表", "psmodeltype": "PSDEREPITEM" }
|
||||
},
|
||||
"PSDESERVICEAPI": {
|
||||
"psdesadetails": { "caption": "方法", "psmodeltype": "PSDESADETAIL" },
|
||||
"minorpsdesarss": { "caption": "从关系", "psmodeltype": "PSDESARS" },
|
||||
"psdesavrs": { "caption": "值规则", "psmodeltype": "PSDESAVR" },
|
||||
"majorpsdesarss": { "caption": "主关系", "psmodeltype": "PSDESARS" },
|
||||
"pssystestcases": { "caption": "测试用例", "psmodeltype": "PSSYSTESTCASE" }
|
||||
},
|
||||
"PSDEUAGROUP": {
|
||||
"psdeuagrpdetails": { "caption": "组成员", "psmodeltype": "PSDEUAGRPDETAIL" }
|
||||
},
|
||||
"PSDEUSERROLE": {
|
||||
"psdeopprivroles": { "caption": "操作控制", "psmodeltype": "PSDEOPPRIVROLE" }
|
||||
},
|
||||
"PSLANGUAGERES": {
|
||||
"pslanguageitems": { "caption": "资源项", "psmodeltype": "PSLANGUAGEITEM" }
|
||||
},
|
||||
"PSSUBSYSSADE": {
|
||||
"pssubsyssadefields": { "caption": "属性", "psmodeltype": "PSSUBSYSSADEFIELD" },
|
||||
"majorpssubsyssaderss": { "caption": "主关系", "psmodeltype": "PSSUBSYSSADERS" },
|
||||
"minorpssubsyssaderss": { "caption": "从关系", "psmodeltype": "PSSUBSYSSADERS" },
|
||||
"pssubsyssadetails": { "caption": "行为", "psmodeltype": "PSSUBSYSSADETAIL" }
|
||||
},
|
||||
"PSSUBSYSSERVICEAPI": {
|
||||
"pssubsyssades": { "caption": "接口实体", "psmodeltype": "PSSUBSYSSADE" },
|
||||
"pssubsyssaderss": { "caption": "接口实体关系", "psmodeltype": "PSSUBSYSSADERS" }
|
||||
},
|
||||
"PSSYSAPP": {
|
||||
"psappmodules": { "caption": "应用模块", "psmodeltype": "PSAPPMODULE" },
|
||||
"psappviews": { "caption": "应用视图", "psmodeltype": "PSAPPVIEW" },
|
||||
"psappfuncs": { "caption": "应用功能", "psmodeltype": "PSAPPFUNC" },
|
||||
"psappmenus": { "caption": "应用菜单", "psmodeltype": "PSAPPMENU" },
|
||||
"psapputilpages": { "caption": "功能视图", "psmodeltype": "PSAPPUTILPAGE" },
|
||||
"psapppdtviews": { "caption": "预置视图", "psmodeltype": "PSAPPPDTVIEW" },
|
||||
"psappresources": { "caption": "资源", "psmodeltype": "PSAPPRESOURCE" },
|
||||
"psappportlets": { "caption": "看板部件", "psmodeltype": "PSAPPPORTLET" },
|
||||
"psappstoryboards": { "caption": "故事板", "psmodeltype": "PSAPPSTORYBOARD" },
|
||||
"psappuithemes": { "caption": "界面主题", "psmodeltype": "PSAPPUITHEME" },
|
||||
"psapplans": { "caption": "多语言", "psmodeltype": "PSAPPLAN" },
|
||||
"psapplocaldes": { "caption": "应用实体", "psmodeltype": "PSAPPLOCALDE" },
|
||||
"psmobappstartpages": { "caption": "移动端资源", "psmodeltype": "PSMOBAPPSTARTPAGE" },
|
||||
"psappuistyles": { "caption": "界面模式", "psmodeltype": "PSAPPUISTYLE" },
|
||||
"psappwfs": { "caption": "应用工作流", "psmodeltype": "PSAPPWF" },
|
||||
"psapputils": { "caption": "功能配置", "psmodeltype": "PSAPPUTIL" },
|
||||
"psapppkgs": { "caption": "组件包", "psmodeltype": "PSAPPPKG" },
|
||||
"pssystasks": { "caption": "开发任务", "psmodeltype": "PSSYSTASK" },
|
||||
"pssystestprjs": { "caption": "测试项目", "psmodeltype": "PSSYSTESTPRJ" }
|
||||
},
|
||||
"PSSYSBDSCHEME": {
|
||||
"pssysbdmodules": { "caption": "模块", "psmodeltype": "PSSYSBDMODULE" },
|
||||
"pssysbdparts": { "caption": "数据分区", "psmodeltype": "PSSYSBDPART" },
|
||||
"pssysbdtables": { "caption": "数据表", "psmodeltype": "PSSYSBDTABLE" },
|
||||
"pssysbdtablerses": { "caption": "数据表关系", "psmodeltype": "PSSYSBDTABLERS" }
|
||||
},
|
||||
"PSSYSBDTABLE": {
|
||||
"pssysbdtabledes": { "caption": "数据表实体", "psmodeltype": "PSSYSBDTABLEDE" },
|
||||
"pssysbdcolsets": { "caption": "列族", "psmodeltype": "PSSYSBDCOLSET" },
|
||||
"pssysbdcolumns": { "caption": "数据列", "psmodeltype": "PSSYSBDCOLUMN" }
|
||||
},
|
||||
"PSSYSCONTENTCAT": {
|
||||
"pssyscontentcats": { "caption": "子分类", "psmodeltype": "PSSYSCONTENTCAT" },
|
||||
"pssyscontents": { "caption": "内容", "psmodeltype": "PSSYSCONTENT" }
|
||||
},
|
||||
"PSSYSCOUNTER": {
|
||||
"pssyscounteritems": { "caption": "计数项", "psmodeltype": "PSSYSCOUNTERITEM" }
|
||||
},
|
||||
"PSSYSDBSCHEME": {
|
||||
"pssysdbtables": { "caption": "数据表", "psmodeltype": "PSSYSDBTABLE" }
|
||||
},
|
||||
"PSSYSDBTABLE": {
|
||||
"pssysdbcolumns": { "caption": "数据列", "psmodeltype": "PSSYSDBCOLUMN" }
|
||||
},
|
||||
"PSSYSMODELGROUP": {
|
||||
"psmodules": { "caption": "模块", "psmodeltype": "PSMODULE" }
|
||||
},
|
||||
"PSSYSOPPRIV": {
|
||||
"pssysuserrolereses": { "caption": "统一资源", "psmodeltype": "PSSYSUSERROLERES" },
|
||||
"pssysuserroledatas": { "caption": "实体角色", "psmodeltype": "PSSYSUSERROLEDATA" }
|
||||
},
|
||||
"PSSYSPFPLUGIN": {
|
||||
"pssyspfpitempls": { "caption": "插件模板", "psmodeltype": "PSSYSPFPITEMPL" }
|
||||
},
|
||||
"PSSYSREF": {
|
||||
"psmodules": { "caption": "模块", "psmodeltype": "PSMODULE" }
|
||||
},
|
||||
"PSSYSSFPLUGIN": {
|
||||
"pssyssfpitempls": { "caption": "插件模板", "psmodeltype": "PSSYSSFPITEMPL" }
|
||||
},
|
||||
"PSSYSSFPUB": {
|
||||
"pssyssfpubs": { "caption": "子体系", "psmodeltype": "PSSYSSFPUB" },
|
||||
"pssyssfpubpkgs": { "caption": "组件包", "psmodeltype": "PSSYSSFPUBPKG" }
|
||||
},
|
||||
"PSSYSSEARCHDE": {
|
||||
"pssyssearchdefields": { "caption": "检索属性", "psmodeltype": "PSSYSSEARCHDEFIELD" }
|
||||
},
|
||||
"PSSYSSEARCHDOC": {
|
||||
"pssyssearchfields": { "caption": "检索属性", "psmodeltype": "PSSYSSEARCHFIELD" },
|
||||
"pssyssearchdes": { "caption": "检索实体", "psmodeltype": "PSSYSSEARCHDE" }
|
||||
},
|
||||
"PSSYSSEARCHSCHEME": {
|
||||
"pssyssearchdocs": { "caption": "检索文档", "psmodeltype": "PSSYSSEARCHDOC" },
|
||||
"pssyssearchdes": { "caption": "检索实体", "psmodeltype": "PSSYSSEARCHDE" }
|
||||
},
|
||||
"PSSYSSERVICEAPI": {
|
||||
"psdeserviceapis": { "caption": "实体接口", "psmodeltype": "PSDESERVICEAPI" },
|
||||
"psdesarses": { "caption": "接口关系", "psmodeltype": "PSDESARS" },
|
||||
"pssystestprjs": { "caption": "测试项目", "psmodeltype": "PSSYSTESTPRJ" }
|
||||
},
|
||||
"PSSYSTESTDATA": {
|
||||
"pssystditems": { "caption": "数据项", "psmodeltype": "PSSYSTDITEM" }
|
||||
},
|
||||
"PSSYSTESTMODULE": {
|
||||
"pssystestcases": { "caption": "测试用例", "psmodeltype": "PSSYSTESTCASE" }
|
||||
},
|
||||
"PSSYSTESTPRJ": {
|
||||
"pssystestmodules": { "caption": "测试模块", "psmodeltype": "PSSYSTESTMODULE" }
|
||||
},
|
||||
"PSSYSWFSETTING": {
|
||||
"pswfutiluiactions": { "caption": "功能界面行为", "psmodeltype": "PSWFUTILUIACTION" }
|
||||
},
|
||||
"PSVIEWMSGGROUP": {
|
||||
"psviewmsggrpdetails": { "caption": "组成员", "psmodeltype": "PSVIEWMSGGRPDETAIL" }
|
||||
},
|
||||
"PSWORKFLOW": {
|
||||
"pswfversions": { "caption": "版本", "psmodeltype": "PSWFVERSION" },
|
||||
"pswfdes": { "caption": "相关实体", "psmodeltype": "PSWFDE" },
|
||||
"psappwfs": { "caption": "工作流应用", "psmodeltype": "PSAPPWF" }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
body {
|
||||
padding: 0;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
body {
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
}
|
|
@ -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="1638773269977" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M269.73866667 306.79466667a7.936 7.936 0 0 1 12.928 6.272v81.28c0 2.56-1.216 4.8-3.072 6.336L164.58666667 490.66666667l115.008 89.984c1.92 1.536 3.072 3.84 3.072 6.336v81.28a8 8 0 0 1-12.928 6.272L50.79466667 503.27466667a16.128 16.128 0 0 1 0-25.216z m430.656 1.344a7.936 7.936 0 0 1 11.2-1.344l193.088 151.04a255.552 255.552 0 0 0-141.696-9.28l-61.248-47.872a7.744 7.744 0 0 1-3.072-6.336v-81.28c0-1.792 0.64-3.52 1.728-4.928z m-230.592 366.4l-0.64 1.728-51.008 148.352-0.448 1.28-0.448 1.28-0.192 0.64-0.64 2.048a8.064 8.064 0 0 1-7.68 5.376H340.90666667a8 8 0 0 1-7.552-10.56L564.77866667 152.74666667a8.064 8.064 0 0 1 7.616-5.376h67.456a8.128 8.128 0 0 1 7.68 10.688l-7.36 21.44-0.192 0.768-0.192 0.832-167.808 487.168-2.176 6.272z" fill="#c5c5c5"></path><path d="M629.03466667 695.97866667c1.792-34.496 16.192-66.752 40.768-91.392a140.416 140.416 0 0 1 207.36 10.112l-23.04 17.92a8 8 0 0 0 3.008 14.08l93.248 22.528a8.064 8.064 0 0 0 9.92-7.68l0.64-95.424a8 8 0 0 0-12.928-6.4l-20.288 15.744a204.16 204.16 0 0 0-362.816 119.808c-0.192 4.48 3.52 8.32 8 8.32h48.128a7.936 7.936 0 0 0 8-7.616zM964.90666667 703.59466667h-48.128a7.936 7.936 0 0 0-7.936 7.616 139.008 139.008 0 0 1-40.832 91.392 140.416 140.416 0 0 1-207.36-10.112l23.04-17.92a8 8 0 0 0-3.008-14.08l-93.248-22.464a8.064 8.064 0 0 0-9.92 7.68l-0.64 95.36c0 6.72 7.68 10.56 12.928 6.4l20.288-15.744a204.16 204.16 0 0 0 362.816-119.808 8 8 0 0 0-8-8.32z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M707 212h-510A75.09 75.09 0 0 0 122 287v570C122 898.37 155.66 932 197 932h510c41.37 0 75-33.63 75-75v-570C782 245.66 748.37 212 707 212z m15 645c0 8.25-6.75 15-15 15h-510a15 15 0 0 1-15-15v-570a15 15 0 0 1 15-15h510a15 15 0 0 1 15 15v570z" fill="#c5c5c5"></path><path d="M827 92h-510a30 30 0 0 0 0 60h510a15 15 0 0 1 15 15v570a30 30 0 1 0 60 0v-570C902 125.66 868.37 92 827 92z" fill="#c5c5c5"></path><path d="M602 369.5H302a30 30 0 0 0 0 60h300a30 30 0 1 0 0-60zM602 519.5H302a30 30 0 1 0 0 60h300a30 30 0 1 0 0-60zM482 668.24H302a30 30 0 1 0 0 60h180a30 30 0 1 0 0-60z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 933 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.st0{opacity:0}.st0,.st1{fill:#2d2d30}.st2{fill:#c5c5c5}.st3{fill:#2b282e}</style><g id="outline"><path class="st0" d="M0 0h16v16H0z"/><path class="st1" d="M9.586 16L8 14.414 6.414 16H1.586L0 14.414v-3.828L1.586 9H3.53l1.333-2h-.278L3 5.414V1.586L4.585 0h6.829L13 1.586v3.828L11.414 7h-.278l1.334 2h1.944L16 10.586v3.828L14.414 16H9.586zM8 10.586l1.152-1.152L8 7.705 6.847 9.434 8 10.586z"/></g><path class="st2" d="M14 10h-2.065L9.268 6H11l1-1V2l-1-1H5L4 2v3l1 1h1.733l-2.667 4H2l-1 1v3l1 1h4l1-1v-3l-1-1h-.732l2.667-4h.131l2.667 4H10l-1 1v3l1 1h4l1-1v-3l-1-1zm-8 1v3H2v-3h4zM5 5V2h6v3H5zm9 9h-4v-3h4v3z" id="icon_x5F_bg"/><path class="st3" d="M14 11v3h-4v-3h4zM2 14h4v-3H2v3zm9-12H5v3h6V2z" id="icon_x5F_fg"/></svg>
|
After Width: | Height: | Size: 784 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{opacity:0;fill:#F6F6F6;} .icon-vs-bg{fill:#656565;} .icon-vs-fg{fill:#F0EFF1;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M4 15c-.97 0-2-.701-2-2v-10c0-1.299 1.03-2 2-2h6.061l3.939 3.556v8.444c0 .97-.701 2-2 2h-8z" id="outline"/><path class="icon-vs-bg" d="M9.641,2H3.964C3.964,2,3,2,3,3c0,0.805,0,7.442,0,10c0,1,0.965,1,0.965,1s7,0,8,0S13,13,13,13V5L9.641,2zM12,13H4V3h5v3h3V13z" id="iconBg"/><path class="icon-vs-fg" d="M4 3h5v3h3v7h-8v-10z" id="iconFg"/></svg>
|
After Width: | Height: | Size: 682 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#2d2d30;} .icon-vs-out{fill:#2d2d30;} .icon-vs-bg{fill:#c5c5c5;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 4.28l-11.673 11.72h-4.327v-4.406l11.477-11.594h.308l4.215 4.237v.043z" id="outline" style="display: none;"/><path class="icon-vs-bg" d="M14.598 4.25l-1.688 1.75-3-3 1.688-1.75 3 3zm-5.688-.25l-7 7 3 3 7-7-3-3zm-7.91 8.09v2.91h2.91l-2.91-2.91z" id="iconBg"/></svg>
|
After Width: | Height: | Size: 571 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{opacity:0;fill:#F6F6F6;} .icon-vs-fg{opacity:0;fill:#F0EFF1;} .icon-folder{fill:#C5C5C5;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 2.5v10c0 .827-.673 1.5-1.5 1.5h-11.996c-.827 0-1.5-.673-1.5-1.5v-8c0-.827.673-1.5 1.5-1.5h2.886l1-2h8.11c.827 0 1.5.673 1.5 1.5z" id="outline"/><path class="icon-folder" d="M14.5 2h-7.492l-1 2h-3.504c-.277 0-.5.224-.5.5v8c0 .276.223.5.5.5h11.996c.275 0 .5-.224.5-.5v-10c0-.276-.225-.5-.5-.5zm-.496 2h-6.496l.5-1h5.996v1z" id="iconBg"/><path class="icon-vs-fg" d="M14 3v1h-6.5l.5-1h6z" id="iconFg"/></svg>
|
After Width: | Height: | Size: 760 B |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M226.58 550.58c2.34 0 4.68 0.36 6.9 1.02a29.7 29.7 0 0 1 19.44 22.62 35.34 35.34 0 0 1-7.44 30.78l-10.92 12.78a124.62 124.62 0 0 0-24.9 108c7.98 37.5 33.9 67.56 68.04 79.02 8.1 2.58 16.5 3.84 24.9 3.78 25.92-0.12 50.64-11.94 68.04-32.58 32.82-40.14 56.16-50.94 69.9-32.34 13.8 18.6 3.36 44.28-31.26 76.92A139.8 139.8 0 0 1 302.6 872a139.5 139.5 0 0 1-105.72-50.4l-0.84-1.02c-58.74-70.44-58.74-177.12 0-247.56l10.92-12.84a25.56 25.56 0 0 1 19.62-9.6zM542.3 92a138.54 138.54 0 0 1 105.6 51.42c58.32 69.78 58.86 175.44 1.26 246l-10.8 12.78a24.9 24.9 0 0 1-19.2 8.82 25.02 25.02 0 0 1-18.96-9.42 35.64 35.64 0 0 1-0.36-44.4l10.92-12.6a124.8 124.8 0 0 0 25.44-108.42c-7.98-37.62-34.02-67.8-68.4-79.38a85.86 85.86 0 0 0-24.6-3.6 90.72 90.72 0 0 0-68.58 33.42L343.7 338.6c-28.38 34.2-36 82.86-19.68 125.22 14.16 38.94 48.72 64.92 87.6 65.76 2.1 0 4.14 0 6.18-0.18l2.04-0.18a26.58 26.58 0 0 1 22.62 14.16c5.46 9.6 6.12 21.6 1.74 31.8a27.48 27.48 0 0 1-22.98 17.4c-3.24 0.24-6.42 0.42-9.6 0.42a141.78 141.78 0 0 1-106.44-51.42c-58.8-70.44-58.8-177.12 0-247.56L436.1 141.8A138.24 138.24 0 0 1 542.3 92zM450.2 370.58c28.62 3.78 55.5 16.68 77.22 37.02 22.62 21 26.52 25.8 38.52 53.58s12 51.6-2.88 59.52c-14.82 7.86-34.62 4.98-46.8-35.28-24.06-42.6-61.62-49.74-72-52.02-10.38-2.28-13.98-5.1-18.3-11.58a34.98 34.98 0 0 1-5.82-23.22c0.9-15.48 12.6-27.72 27-28.2 1.08 0 2.1 0 3.06 0.18zM643.28 527a165 165 0 0 1 131.58 264.6l87.48 87.42a7.44 7.44 0 0 1 0 10.5l-29.04 29.1a7.56 7.56 0 0 1-5.28 2.16 7.32 7.32 0 0 1-5.22-2.16l-88.8-88.8a165 165 0 1 1-90.72-302.82z m0 60a105 105 0 1 0 0 210 105 105 0 1 0 0-210z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M551.326129 826.39452076c82.9423794 0 165.95626143 0 249.04164606 0.21450614-43.90225919-52.91151772-88.23353236-105.17951861-132.99381616-157.30451261a4441.85045607 4441.85045607 0 0 1-116.0478299 157.09000647z m157.30451261-219.29679145c45.04629259 54.69906955 88.80554821 110.39916726 131.06326076 167.10029482-0.57201585-126.70163505 0-253.54627533-0.35750969-380.17640941-39.82664224 72.93209274-82.22736001 144.86315731-130.70575107 213.07611459z m-314.60902689-213.07611459c3.78960817 135.9969023 60.06172342 262.19802413 124.41356994 380.17640941 33.60596373-55.12808187 65.92489221-110.82817957 98.45832519-166.74278511-72.71758657-72.71758657-144.00513267-147.0797198-222.87189513-213.4336243zM174.4388145 223.63222494c-3.36059586 199.99123916-5.86316881 400.19698279 1.64454662 600.04521841 98.67283134 4.07561693 197.63167143 2.57407386 296.59050988 2.93158355-131.77828182-184.40379075-256.69236502-381.67795251-298.2350565-602.97680196z m114.68929036-39.32612731a4110.93895971 4110.93895971 0 0 1 357.22425083 340.77877784c57.91666189-112.25822172 112.97324112-225.87498131 167.17179577-339.84925228-174.75101377-0.35750969-349.43052665 0.92952724-524.3960466-0.92952556zM118.73871511 118.73871511h783.01896871c4.29012309 262.12652153 5.14814772 524.39604658-0.35750973 786.52256978H118.73871511v-786.52256978z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M827.17961482 638.70293333c-16.86945185 0-33.7389037 5.33997037-50.60835557 10.8013037L607.63401482 353.01451852c28.15620741-26.94257778 50.60835555-59.34648889 50.60835555-102.43034074 0-75.48776297-61.89511111-134.83425185-140.65967407-134.83425186s-140.65967408 64.68645925-140.65967408 134.83425186c0 32.28254815 11.28675555 64.68645925 33.7389037 91.62903704L236.14198518 644.0429037c-11.28675555 0-22.45214815-5.33997037-33.7389037-5.33997037-78.76456297 0-140.65967408 59.34648889-140.65967407 134.71288889 0 75.48776297 61.89511111 134.83425185 140.65967407 134.83425186 67.59917037 0 123.79022222-48.54518518 135.07697777-113.23164445h348.91851853c11.28675555 64.68645925 67.59917037 113.23164445 135.07697777 113.23164445 78.76456297 0 140.65967408-59.34648889 140.65967408-134.83425186 0.12136297-75.3664-56.19105185-134.71288889-134.95561481-134.71288889zM697.68533333 741.13327408H343.18411852c-5.5826963-32.40391111-28.15620741-59.34648889-50.60835555-75.48776297l168.81588148-291.14974814c16.86945185 10.8013037 39.44296297 10.8013037 56.3124148 10.8013037 11.28675555 0 28.15620741 0 39.44296297-5.33997037L731.66696297 676.44681482c-16.99081482 16.14127408-28.27757037 37.74388148-33.98162964 64.68645926z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.451 5.609l-.579-.939-1.068.812-.076.094c-.335.415-.927 1.341-1.124 2.876l-.021.165.033.163.071.345c0 1.654-1.346 3-3 3-.795 0-1.545-.311-2.107-.868-.563-.567-.873-1.317-.873-2.111 0-1.431 1.007-2.632 2.351-2.929v2.926s2.528-2.087 2.984-2.461h.012l3.061-2.582-4.919-4.1h-1.137v2.404c-3.429.318-6.121 3.211-6.121 6.721 0 1.809.707 3.508 1.986 4.782 1.277 1.282 2.976 1.988 4.784 1.988 3.722 0 6.75-3.028 6.75-6.75 0-1.245-.349-2.468-1.007-3.536z" fill="#2D2D30"/><path d="M12.6 6.134l-.094.071c-.269.333-.746 1.096-.91 2.375.057.277.092.495.092.545 0 2.206-1.794 4-4 4-1.098 0-2.093-.445-2.817-1.164-.718-.724-1.163-1.718-1.163-2.815 0-2.206 1.794-4 4-4l.351.025v1.85s1.626-1.342 1.631-1.339l1.869-1.577-3.5-2.917v2.218l-.371-.03c-3.176 0-5.75 2.574-5.75 5.75 0 1.593.648 3.034 1.695 4.076 1.042 1.046 2.482 1.694 4.076 1.694 3.176 0 5.75-2.574 5.75-5.75-.001-1.106-.318-2.135-.859-3.012z" fill="#C5C5C5"/></svg>
|
After Width: | Height: | Size: 986 B |
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M794.09066667 147.81866667c14.976 0 27.072 12.224 27.072 27.392v323.392A197.312 197.312 0 0 0 765.61066667 490.66666667l-5.312 0.128V380.97066667H375.14666667v390.848h209.28c10.368 23.296 24.96 44.16 42.944 61.76h-455.04a27.2 27.2 0 0 1-26.944-27.52V175.27466667c0-15.168 12.032-27.392 27.008-27.392z m-473.024 61.696H206.18666667v562.304H321.06666667V209.51466667z m439.232 0H375.14666667V326.18666667h385.152V209.51466667z" fill="#c5c5c5"></path><path d="M751.78666667 521.64266667a155.584 155.584 0 0 1 154.88 155.84c0 35.968-12.352 69.376-32.896 95.808l77.76 78.208a18.624 18.624 0 0 1-0.32 27.072 18.176 18.176 0 0 1-26.56 0l-77.76-78.336c-26.24 20.672-59.136 33.088-95.168 33.088a155.648 155.648 0 0 1-154.88-155.84 155.648 155.648 0 0 1 154.88-155.84z m-0.96 38.144a119.424 119.424 0 0 0-118.976 119.744 119.424 119.424 0 0 0 118.976 119.68 119.424 119.424 0 0 0 118.912-119.68c0-66.048-53.184-119.68-118.912-119.744z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M490.667 97.766c84.468 0 164.13 8.447 224.278 23.666 30.584 7.792 54.905 17.112 72.454 27.67 8.52 5.098 15.656 10.632 21.117 16.603 9.976 10.705 15 22.574 15 35.608v1.966l-.145 1.966.146 166.025v135.514a236.658 236.658 0 00-46.895-24.176V259.422a281.805 281.805 0 01-47.331 17.84l-14.346 3.86c-60.147 15.291-139.81 23.738-224.278 23.738-84.469 0-164.132-8.374-224.28-23.738a320.762 320.762 0 01-61.894-21.846v428.169l.073 48.642c2.039 2.913 16.092 19.88 84.031 35.317 50.827 11.65 115.635 18.423 184.01 19.442 7.428 17.695 16.895 34.37 28.181 49.662h-10.121c-84.469 0-164.132-8.301-224.28-23.593-30.583-7.719-54.904-16.967-72.453-27.453-20.971-12.597-32.913-27.597-35.608-44.637l-.51-7.427V199.274a45.948 45.948 0 012.185-12.524c4.005-12.67 13.544-24.03 28.4-34.152l5.533-3.568c17.476-10.486 41.87-19.806 72.454-27.598 60.147-15.292 139.81-23.666 224.279-23.666zm0 49.735c-75.003 0-146.801 6.918-202.142 19.66-43.691 9.977-65.027 20.608-75.294 27.671a37.647 37.647 0 00-7.646 6.554c4.223 4.952 21.627 20.243 83.012 34.224 55.269 12.67 126.995 19.661 202.07 19.661 75.002 0 146.8-6.99 202.142-19.66 61.312-14.054 78.716-29.273 83.012-34.225a38.01 38.01 0 00-7.719-6.554c-10.194-7.063-31.675-17.694-75.293-27.67-55.342-12.743-127.067-19.661-202.142-19.661z" fill="#c5c5c5"/><path d="M686.692 518.653a178.404 178.404 0 01178.84 177.311c0 40.924-14.272 78.935-37.937 108.936l89.784 89.056a21.044 21.044 0 01-.364 30.802 21.117 21.117 0 01-30.657 0l-89.857-89.13a178.33 178.33 0 01-109.955 37.648 178.404 178.404 0 01-178.84-177.312 178.404 178.404 0 01178.913-177.31zm-1.02 43.327a136.897 136.897 0 00-137.406 136.315A136.897 136.897 0 00685.6 834.464a136.897 136.897 0 00137.334-136.17A136.897 136.897 0 00685.673 561.98z" fill="#c5c5c5"/></svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M912.81138357 813.88169609l-201.71651715-201.92745466c-2.35044608-2.35044608-4.94196405-4.12834845-7.4129469-6.05692035a332.19642893 332.19642893 0 0 0 53.96986643-181.82812499c0-184.47991095-149.40401798-333.97433047-333.79352738-333.97432966C239.58928595 90.09486643 90.09486643 239.58928595 90.09486643 424.06919607c0 184.51004453 149.49441953 333.97433047 333.76339215 333.97433048 67.078125 0 129.45535703-19.94866095 181.82812499-54.06026797 1.92857108 2.53125001 3.67633905 5.0625 5.96651798 7.3828125l201.77678595 201.92745547a70.09151798 70.09151798 0 0 0 99.35156251 0.0301344c27.421875-27.48214297 27.421875-71.98995548 0.03013356-99.44196486m-488.95312499-161.30691954c-125.86941952 0-228.35491095-102.515625-228.35491014-228.50558048 0-125.95982107 102.48549143-228.50558048 228.35491013-228.50557965 125.89955393 0 228.38504452 102.54575857 228.38504536 228.50557965 0 125.98995548-102.48549143 228.50558048-228.38504536 228.50558048" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -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="1638773282266" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M309.5 272a7.5 7.5 0 0 0-7.5 7.5v45c0 4.14 3.36 7.5 7.5 7.5h360a7.5 7.5 0 0 0 7.5-7.5v-45A7.5 7.5 0 0 0 669.5 272h-360z m180 187.5v-45A7.5 7.5 0 0 0 482 407H309.5a7.5 7.5 0 0 0-7.5 7.5v45c0 4.14 3.36 7.5 7.5 7.5H482a7.5 7.5 0 0 0 7.5-7.5z m-45 371.28H227v-660H752v322.44c0 4.2 3.36 7.5 7.5 7.5H812a7.5 7.5 0 0 0 7.5-7.5v-360a30 30 0 0 0-30-30h-600a30 30 0 0 0-30 30v735a30 30 0 0 0 30 30h255A7.5 7.5 0 0 0 452 890.78v-52.56a7.5 7.5 0 0 0-7.5-7.44z m97.62-108.42c1.68-32.34 15.18-62.58 38.22-85.68a131.64 131.64 0 0 1 194.4 9.48l-21.6 16.8a7.5 7.5 0 0 0 2.82 13.2l87.42 21.06a7.56 7.56 0 0 0 9.3-7.2l0.6-89.4a7.5 7.5 0 0 0-12.12-6l-19.02 14.76A191.4 191.4 0 0 0 482 721.7c-0.18 4.2 3.3 7.8 7.5 7.8h45.12a7.44 7.44 0 0 0 7.5-7.14z m314.88 7.14h-45.12a7.44 7.44 0 0 0-7.5 7.14 130.32 130.32 0 0 1-38.22 85.68 131.64 131.64 0 0 1-194.4-9.48l21.6-16.8a7.5 7.5 0 0 0-2.82-13.2l-87.42-21.06a7.56 7.56 0 0 0-9.3 7.2l-0.6 89.4c0 6.3 7.2 9.9 12.12 6l19.02-14.76a191.4 191.4 0 0 0 340.14-112.32 7.5 7.5 0 0 0-7.5-7.8z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M163.953125 754.578125h696.09375V269.421875H163.953125v485.15625zM90.125 195.59375h843.75v632.8125H90.125V195.59375z m200.07421875 475.875L248.328125 629.59765625l127.14257813-127.1953125L248.328125 375.25976562l41.87109375-41.87109374L459.265625 502.40234375l-169.06640625 169.06640625z m481.46484375 10.91601563H512V617.46875h259.61132813v64.86328125z" fill="#c5c5c5"></path></svg>
|
After Width: | Height: | Size: 716 B |
After Width: | Height: | Size: 4.5 KiB |
|
@ -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="1638773269977" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M269.73866667 306.79466667a7.936 7.936 0 0 1 12.928 6.272v81.28c0 2.56-1.216 4.8-3.072 6.336L164.58666667 490.66666667l115.008 89.984c1.92 1.536 3.072 3.84 3.072 6.336v81.28a8 8 0 0 1-12.928 6.272L50.79466667 503.27466667a16.128 16.128 0 0 1 0-25.216z m430.656 1.344a7.936 7.936 0 0 1 11.2-1.344l193.088 151.04a255.552 255.552 0 0 0-141.696-9.28l-61.248-47.872a7.744 7.744 0 0 1-3.072-6.336v-81.28c0-1.792 0.64-3.52 1.728-4.928z m-230.592 366.4l-0.64 1.728-51.008 148.352-0.448 1.28-0.448 1.28-0.192 0.64-0.64 2.048a8.064 8.064 0 0 1-7.68 5.376H340.90666667a8 8 0 0 1-7.552-10.56L564.77866667 152.74666667a8.064 8.064 0 0 1 7.616-5.376h67.456a8.128 8.128 0 0 1 7.68 10.688l-7.36 21.44-0.192 0.768-0.192 0.832-167.808 487.168-2.176 6.272z" fill="#424242"></path><path d="M629.03466667 695.97866667c1.792-34.496 16.192-66.752 40.768-91.392a140.416 140.416 0 0 1 207.36 10.112l-23.04 17.92a8 8 0 0 0 3.008 14.08l93.248 22.528a8.064 8.064 0 0 0 9.92-7.68l0.64-95.424a8 8 0 0 0-12.928-6.4l-20.288 15.744a204.16 204.16 0 0 0-362.816 119.808c-0.192 4.48 3.52 8.32 8 8.32h48.128a7.936 7.936 0 0 0 8-7.616zM964.90666667 703.59466667h-48.128a7.936 7.936 0 0 0-7.936 7.616 139.008 139.008 0 0 1-40.832 91.392 140.416 140.416 0 0 1-207.36-10.112l23.04-17.92a8 8 0 0 0-3.008-14.08l-93.248-22.464a8.064 8.064 0 0 0-9.92 7.68l-0.64 95.36c0 6.72 7.68 10.56 12.928 6.4l20.288-15.744a204.16 204.16 0 0 0 362.816-119.808 8 8 0 0 0-8-8.32z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M707 212h-510A75.09 75.09 0 0 0 122 287v570C122 898.37 155.66 932 197 932h510c41.37 0 75-33.63 75-75v-570C782 245.66 748.37 212 707 212z m15 645c0 8.25-6.75 15-15 15h-510a15 15 0 0 1-15-15v-570a15 15 0 0 1 15-15h510a15 15 0 0 1 15 15v570z" fill="#424242"></path><path d="M827 92h-510a30 30 0 0 0 0 60h510a15 15 0 0 1 15 15v570a30 30 0 1 0 60 0v-570C902 125.66 868.37 92 827 92z" fill="#424242"></path><path d="M602 369.5H302a30 30 0 0 0 0 60h300a30 30 0 1 0 0-60zM602 519.5H302a30 30 0 1 0 0 60h300a30 30 0 1 0 0-60zM482 668.24H302a30 30 0 1 0 0 60h180a30 30 0 1 0 0-60z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 933 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.st0{opacity:0}.st0,.st1{fill:#f6f6f6}.st2{fill:#424242}.st3{fill:#f0eff1}</style><g id="outline"><path class="st0" d="M0 0h16v16H0z"/><path class="st1" d="M9.586 16L8 14.414 6.414 16H1.586L0 14.414v-3.828L1.586 9H3.53l1.333-2h-.278L3 5.414V1.586L4.585 0h6.829L13 1.586v3.828L11.414 7h-.278l1.334 2h1.944L16 10.586v3.828L14.414 16H9.586zM8 10.586l1.152-1.152L8 7.705 6.847 9.434 8 10.586z"/></g><path class="st2" d="M14 10h-2.065L9.268 6H11l1-1V2l-1-1H5L4 2v3l1 1h1.733l-2.667 4H2l-1 1v3l1 1h4l1-1v-3l-1-1h-.732l2.667-4h.131l2.667 4H10l-1 1v3l1 1h4l1-1v-3l-1-1zm-8 1v3H2v-3h4zM5 5V2h6v3H5zm9 9h-4v-3h4v3z" id="icon_x5F_bg"/><path class="st3" d="M14 11v3h-4v-3h4zM2 14h4v-3H2v3zm9-12H5v3h6V2z" id="icon_x5F_fg"/></svg>
|
After Width: | Height: | Size: 784 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.icon-canvas-transparent{opacity:0;fill:#2d2d30}.icon-vs-out{fill:#2d2d30}.icon-vs-bg{fill:#c5c5c5}.icon-vs-fg{fill:#2b282e}</style><path class="icon-canvas-transparent" d="M16 16H0V0h16v16z" id="canvas"/><path class="icon-vs-out" d="M15 16H2V0h8.621L15 4.379V16z" id="outline"/><path class="icon-vs-fg" d="M13 14H4V2h5v4h4v8zm-3-9V2.207L12.793 5H10z" id="iconFg"/><path class="icon-vs-bg" d="M3 1v14h11V4.793L10.207 1H3zm10 13H4V2h5v4h4v8zm-3-9V2.207L12.793 5H10z" id="iconBg"/></svg>
|
After Width: | Height: | Size: 552 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{fill:#F6F6F6;} .icon-vs-bg{fill:#424242;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 4.28l-11.673 11.72h-4.327v-4.406l11.477-11.594h.308l4.215 4.237v.043z" id="outline" style="display: none;"/><path class="icon-vs-bg" d="M14.598 4.25l-1.688 1.75-3-3 1.688-1.75 3 3zm-5.688-.25l-7 7 3 3 7-7-3-3zm-7.91 8.09v2.91h2.91l-2.91-2.91z" id="iconBg"/></svg>
|
After Width: | Height: | Size: 571 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{opacity:0;fill:#F6F6F6;} .icon-vs-fg{fill:#F0EFF1;} .icon-folder{fill:#656565;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 2.5v10c0 .827-.673 1.5-1.5 1.5h-11.996c-.827 0-1.5-.673-1.5-1.5v-8c0-.827.673-1.5 1.5-1.5h2.886l1-2h8.11c.827 0 1.5.673 1.5 1.5z" id="outline"/><path class="icon-folder" d="M14.5 2h-7.492l-1 2h-3.504c-.277 0-.5.224-.5.5v8c0 .276.223.5.5.5h11.996c.275 0 .5-.224.5-.5v-10c0-.276-.225-.5-.5-.5zm-.496 2h-6.496l.5-1h5.996v1z" id="iconBg"/><path class="icon-vs-fg" d="M14 3v1h-6.5l.5-1h6z" id="iconFg"/></svg>
|
After Width: | Height: | Size: 750 B |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M226.58 550.58c2.34 0 4.68 0.36 6.9 1.02a29.7 29.7 0 0 1 19.44 22.62 35.34 35.34 0 0 1-7.44 30.78l-10.92 12.78a124.62 124.62 0 0 0-24.9 108c7.98 37.5 33.9 67.56 68.04 79.02 8.1 2.58 16.5 3.84 24.9 3.78 25.92-0.12 50.64-11.94 68.04-32.58 32.82-40.14 56.16-50.94 69.9-32.34 13.8 18.6 3.36 44.28-31.26 76.92A139.8 139.8 0 0 1 302.6 872a139.5 139.5 0 0 1-105.72-50.4l-0.84-1.02c-58.74-70.44-58.74-177.12 0-247.56l10.92-12.84a25.56 25.56 0 0 1 19.62-9.6zM542.3 92a138.54 138.54 0 0 1 105.6 51.42c58.32 69.78 58.86 175.44 1.26 246l-10.8 12.78a24.9 24.9 0 0 1-19.2 8.82 25.02 25.02 0 0 1-18.96-9.42 35.64 35.64 0 0 1-0.36-44.4l10.92-12.6a124.8 124.8 0 0 0 25.44-108.42c-7.98-37.62-34.02-67.8-68.4-79.38a85.86 85.86 0 0 0-24.6-3.6 90.72 90.72 0 0 0-68.58 33.42L343.7 338.6c-28.38 34.2-36 82.86-19.68 125.22 14.16 38.94 48.72 64.92 87.6 65.76 2.1 0 4.14 0 6.18-0.18l2.04-0.18a26.58 26.58 0 0 1 22.62 14.16c5.46 9.6 6.12 21.6 1.74 31.8a27.48 27.48 0 0 1-22.98 17.4c-3.24 0.24-6.42 0.42-9.6 0.42a141.78 141.78 0 0 1-106.44-51.42c-58.8-70.44-58.8-177.12 0-247.56L436.1 141.8A138.24 138.24 0 0 1 542.3 92zM450.2 370.58c28.62 3.78 55.5 16.68 77.22 37.02 22.62 21 26.52 25.8 38.52 53.58s12 51.6-2.88 59.52c-14.82 7.86-34.62 4.98-46.8-35.28-24.06-42.6-61.62-49.74-72-52.02-10.38-2.28-13.98-5.1-18.3-11.58a34.98 34.98 0 0 1-5.82-23.22c0.9-15.48 12.6-27.72 27-28.2 1.08 0 2.1 0 3.06 0.18zM643.28 527a165 165 0 0 1 131.58 264.6l87.48 87.42a7.44 7.44 0 0 1 0 10.5l-29.04 29.1a7.56 7.56 0 0 1-5.28 2.16 7.32 7.32 0 0 1-5.22-2.16l-88.8-88.8a165 165 0 1 1-90.72-302.82z m0 60a105 105 0 1 0 0 210 105 105 0 1 0 0-210z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M551.326129 826.39452076c82.9423794 0 165.95626143 0 249.04164606 0.21450614-43.90225919-52.91151772-88.23353236-105.17951861-132.99381616-157.30451261a4441.85045607 4441.85045607 0 0 1-116.0478299 157.09000647z m157.30451261-219.29679145c45.04629259 54.69906955 88.80554821 110.39916726 131.06326076 167.10029482-0.57201585-126.70163505 0-253.54627533-0.35750969-380.17640941-39.82664224 72.93209274-82.22736001 144.86315731-130.70575107 213.07611459z m-314.60902689-213.07611459c3.78960817 135.9969023 60.06172342 262.19802413 124.41356994 380.17640941 33.60596373-55.12808187 65.92489221-110.82817957 98.45832519-166.74278511-72.71758657-72.71758657-144.00513267-147.0797198-222.87189513-213.4336243zM174.4388145 223.63222494c-3.36059586 199.99123916-5.86316881 400.19698279 1.64454662 600.04521841 98.67283134 4.07561693 197.63167143 2.57407386 296.59050988 2.93158355-131.77828182-184.40379075-256.69236502-381.67795251-298.2350565-602.97680196z m114.68929036-39.32612731a4110.93895971 4110.93895971 0 0 1 357.22425083 340.77877784c57.91666189-112.25822172 112.97324112-225.87498131 167.17179577-339.84925228-174.75101377-0.35750969-349.43052665 0.92952724-524.3960466-0.92952556zM118.73871511 118.73871511h783.01896871c4.29012309 262.12652153 5.14814772 524.39604658-0.35750973 786.52256978H118.73871511v-786.52256978z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M827.17961482 638.70293333c-16.86945185 0-33.7389037 5.33997037-50.60835557 10.8013037L607.63401482 353.01451852c28.15620741-26.94257778 50.60835555-59.34648889 50.60835555-102.43034074 0-75.48776297-61.89511111-134.83425185-140.65967407-134.83425186s-140.65967408 64.68645925-140.65967408 134.83425186c0 32.28254815 11.28675555 64.68645925 33.7389037 91.62903704L236.14198518 644.0429037c-11.28675555 0-22.45214815-5.33997037-33.7389037-5.33997037-78.76456297 0-140.65967408 59.34648889-140.65967407 134.71288889 0 75.48776297 61.89511111 134.83425185 140.65967407 134.83425186 67.59917037 0 123.79022222-48.54518518 135.07697777-113.23164445h348.91851853c11.28675555 64.68645925 67.59917037 113.23164445 135.07697777 113.23164445 78.76456297 0 140.65967408-59.34648889 140.65967408-134.83425186 0.12136297-75.3664-56.19105185-134.71288889-134.95561481-134.71288889zM697.68533333 741.13327408H343.18411852c-5.5826963-32.40391111-28.15620741-59.34648889-50.60835555-75.48776297l168.81588148-291.14974814c16.86945185 10.8013037 39.44296297 10.8013037 56.3124148 10.8013037 11.28675555 0 28.15620741 0 39.44296297-5.33997037L731.66696297 676.44681482c-16.99081482 16.14127408-28.27757037 37.74388148-33.98162964 64.68645926z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.451 5.609l-.579-.939-1.068.812-.076.094c-.335.415-.927 1.341-1.124 2.876l-.021.165.033.163.071.345c0 1.654-1.346 3-3 3-.795 0-1.545-.311-2.107-.868-.563-.567-.873-1.317-.873-2.111 0-1.431 1.007-2.632 2.351-2.929v2.926s2.528-2.087 2.984-2.461h.012l3.061-2.582-4.919-4.1h-1.137v2.404c-3.429.318-6.121 3.211-6.121 6.721 0 1.809.707 3.508 1.986 4.782 1.277 1.282 2.976 1.988 4.784 1.988 3.722 0 6.75-3.028 6.75-6.75 0-1.245-.349-2.468-1.007-3.536z" fill="#F6F6F6"/><path d="M12.6 6.134l-.094.071c-.269.333-.746 1.096-.91 2.375.057.277.092.495.092.545 0 2.206-1.794 4-4 4-1.098 0-2.093-.445-2.817-1.164-.718-.724-1.163-1.718-1.163-2.815 0-2.206 1.794-4 4-4l.351.025v1.85s1.626-1.342 1.631-1.339l1.869-1.577-3.5-2.917v2.218l-.371-.03c-3.176 0-5.75 2.574-5.75 5.75 0 1.593.648 3.034 1.695 4.076 1.042 1.046 2.482 1.694 4.076 1.694 3.176 0 5.75-2.574 5.75-5.75-.001-1.106-.318-2.135-.859-3.012z" fill="#424242"/></svg>
|
After Width: | Height: | Size: 986 B |
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M794.09066667 147.81866667c14.976 0 27.072 12.224 27.072 27.392v323.392A197.312 197.312 0 0 0 765.61066667 490.66666667l-5.312 0.128V380.97066667H375.14666667v390.848h209.28c10.368 23.296 24.96 44.16 42.944 61.76h-455.04a27.2 27.2 0 0 1-26.944-27.52V175.27466667c0-15.168 12.032-27.392 27.008-27.392z m-473.024 61.696H206.18666667v562.304H321.06666667V209.51466667z m439.232 0H375.14666667V326.18666667h385.152V209.51466667z" fill="#424242"></path><path d="M751.78666667 521.64266667a155.584 155.584 0 0 1 154.88 155.84c0 35.968-12.352 69.376-32.896 95.808l77.76 78.208a18.624 18.624 0 0 1-0.32 27.072 18.176 18.176 0 0 1-26.56 0l-77.76-78.336c-26.24 20.672-59.136 33.088-95.168 33.088a155.648 155.648 0 0 1-154.88-155.84 155.648 155.648 0 0 1 154.88-155.84z m-0.96 38.144a119.424 119.424 0 0 0-118.976 119.744 119.424 119.424 0 0 0 118.976 119.68 119.424 119.424 0 0 0 118.912-119.68c0-66.048-53.184-119.68-118.912-119.744z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M490.667 97.766c84.468 0 164.13 8.447 224.278 23.666 30.584 7.792 54.905 17.112 72.454 27.67 8.52 5.098 15.656 10.632 21.117 16.603 9.976 10.705 15 22.574 15 35.608v1.966l-.145 1.966.146 166.025v135.514a236.658 236.658 0 00-46.895-24.176V259.422a281.805 281.805 0 01-47.331 17.84l-14.346 3.86c-60.147 15.291-139.81 23.738-224.278 23.738-84.469 0-164.132-8.374-224.28-23.738a320.762 320.762 0 01-61.894-21.846v428.169l.073 48.642c2.039 2.913 16.092 19.88 84.031 35.317 50.827 11.65 115.635 18.423 184.01 19.442 7.428 17.695 16.895 34.37 28.181 49.662h-10.121c-84.469 0-164.132-8.301-224.28-23.593-30.583-7.719-54.904-16.967-72.453-27.453-20.971-12.597-32.913-27.597-35.608-44.637l-.51-7.427V199.274a45.948 45.948 0 012.185-12.524c4.005-12.67 13.544-24.03 28.4-34.152l5.533-3.568c17.476-10.486 41.87-19.806 72.454-27.598 60.147-15.292 139.81-23.666 224.279-23.666zm0 49.735c-75.003 0-146.801 6.918-202.142 19.66-43.691 9.977-65.027 20.608-75.294 27.671a37.647 37.647 0 00-7.646 6.554c4.223 4.952 21.627 20.243 83.012 34.224 55.269 12.67 126.995 19.661 202.07 19.661 75.002 0 146.8-6.99 202.142-19.66 61.312-14.054 78.716-29.273 83.012-34.225a38.01 38.01 0 00-7.719-6.554c-10.194-7.063-31.675-17.694-75.293-27.67-55.342-12.743-127.067-19.661-202.142-19.661z" fill="#424242"/><path d="M686.692 518.653a178.404 178.404 0 01178.84 177.311c0 40.924-14.272 78.935-37.937 108.936l89.784 89.056a21.044 21.044 0 01-.364 30.802 21.117 21.117 0 01-30.657 0l-89.857-89.13a178.33 178.33 0 01-109.955 37.648 178.404 178.404 0 01-178.84-177.312 178.404 178.404 0 01178.913-177.31zm-1.02 43.327a136.897 136.897 0 00-137.406 136.315A136.897 136.897 0 00685.6 834.464a136.897 136.897 0 00137.334-136.17A136.897 136.897 0 00685.673 561.98z" fill="#424242"/></svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M912.81138357 813.88169609l-201.71651715-201.92745466c-2.35044608-2.35044608-4.94196405-4.12834845-7.4129469-6.05692035a332.19642893 332.19642893 0 0 0 53.96986643-181.82812499c0-184.47991095-149.40401798-333.97433047-333.79352738-333.97432966C239.58928595 90.09486643 90.09486643 239.58928595 90.09486643 424.06919607c0 184.51004453 149.49441953 333.97433047 333.76339215 333.97433048 67.078125 0 129.45535703-19.94866095 181.82812499-54.06026797 1.92857108 2.53125001 3.67633905 5.0625 5.96651798 7.3828125l201.77678595 201.92745547a70.09151798 70.09151798 0 0 0 99.35156251 0.0301344c27.421875-27.48214297 27.421875-71.98995548 0.03013356-99.44196486m-488.95312499-161.30691954c-125.86941952 0-228.35491095-102.515625-228.35491014-228.50558048 0-125.95982107 102.48549143-228.50558048 228.35491013-228.50557965 125.89955393 0 228.38504452 102.54575857 228.38504536 228.50557965 0 125.98995548-102.48549143 228.50558048-228.38504536 228.50558048" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -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="1638773282266" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M309.5 272a7.5 7.5 0 0 0-7.5 7.5v45c0 4.14 3.36 7.5 7.5 7.5h360a7.5 7.5 0 0 0 7.5-7.5v-45A7.5 7.5 0 0 0 669.5 272h-360z m180 187.5v-45A7.5 7.5 0 0 0 482 407H309.5a7.5 7.5 0 0 0-7.5 7.5v45c0 4.14 3.36 7.5 7.5 7.5H482a7.5 7.5 0 0 0 7.5-7.5z m-45 371.28H227v-660H752v322.44c0 4.2 3.36 7.5 7.5 7.5H812a7.5 7.5 0 0 0 7.5-7.5v-360a30 30 0 0 0-30-30h-600a30 30 0 0 0-30 30v735a30 30 0 0 0 30 30h255A7.5 7.5 0 0 0 452 890.78v-52.56a7.5 7.5 0 0 0-7.5-7.44z m97.62-108.42c1.68-32.34 15.18-62.58 38.22-85.68a131.64 131.64 0 0 1 194.4 9.48l-21.6 16.8a7.5 7.5 0 0 0 2.82 13.2l87.42 21.06a7.56 7.56 0 0 0 9.3-7.2l0.6-89.4a7.5 7.5 0 0 0-12.12-6l-19.02 14.76A191.4 191.4 0 0 0 482 721.7c-0.18 4.2 3.3 7.8 7.5 7.8h45.12a7.44 7.44 0 0 0 7.5-7.14z m314.88 7.14h-45.12a7.44 7.44 0 0 0-7.5 7.14 130.32 130.32 0 0 1-38.22 85.68 131.64 131.64 0 0 1-194.4-9.48l21.6-16.8a7.5 7.5 0 0 0-2.82-13.2l-87.42-21.06a7.56 7.56 0 0 0-9.3 7.2l-0.6 89.4c0 6.3 7.2 9.9 12.12 6l19.02-14.76a191.4 191.4 0 0 0 340.14-112.32 7.5 7.5 0 0 0-7.5-7.8z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><style type="text/css"></style></defs><path d="M163.953125 754.578125h696.09375V269.421875H163.953125v485.15625zM90.125 195.59375h843.75v632.8125H90.125V195.59375z m200.07421875 475.875L248.328125 629.59765625l127.14257813-127.1953125L248.328125 375.25976562l41.87109375-41.87109374L459.265625 502.40234375l-169.06640625 169.06640625z m481.46484375 10.91601563H512V617.46875h259.61132813v64.86328125z" fill="#424242"></path></svg>
|
After Width: | Height: | Size: 716 B |
|
@ -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 viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><defs><style type="text/css"></style></defs><path d="M551.326129 826.39452076c82.9423794 0 165.95626143 0 249.04164606 0.21450614-43.90225919-52.91151772-88.23353236-105.17951861-132.99381616-157.30451261a4441.85045607 4441.85045607 0 0 1-116.0478299 157.09000647z m157.30451261-219.29679145c45.04629259 54.69906955 88.80554821 110.39916726 131.06326076 167.10029482-0.57201585-126.70163505 0-253.54627533-0.35750969-380.17640941-39.82664224 72.93209274-82.22736001 144.86315731-130.70575107 213.07611459z m-314.60902689-213.07611459c3.78960817 135.9969023 60.06172342 262.19802413 124.41356994 380.17640941 33.60596373-55.12808187 65.92489221-110.82817957 98.45832519-166.74278511-72.71758657-72.71758657-144.00513267-147.0797198-222.87189513-213.4336243zM174.4388145 223.63222494c-3.36059586 199.99123916-5.86316881 400.19698279 1.64454662 600.04521841 98.67283134 4.07561693 197.63167143 2.57407386 296.59050988 2.93158355-131.77828182-184.40379075-256.69236502-381.67795251-298.2350565-602.97680196z m114.68929036-39.32612731a4110.93895971 4110.93895971 0 0 1 357.22425083 340.77877784c57.91666189-112.25822172 112.97324112-225.87498131 167.17179577-339.84925228-174.75101377-0.35750969-349.43052665 0.92952724-524.3960466-0.92952556zM118.73871511 118.73871511h783.01896871c4.29012309 262.12652153 5.14814772 524.39604658-0.35750973 786.52256978H118.73871511v-786.52256978z"></path></svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1,17 @@
|
|||
(function () {
|
||||
const vscode = acquireVsCodeApi();
|
||||
// 消息转发中间层
|
||||
addEventListener('message', event => {
|
||||
if (event.data) {
|
||||
const message = event.data;
|
||||
switch (message.target) {
|
||||
// 收到 vscode 消息,转发给 iframe
|
||||
case 'vscode':
|
||||
return iframe.contentWindow.postMessage(message, '*');
|
||||
// 收到 iframe 消息,转发给 vscode
|
||||
case 'iframe':
|
||||
return vscode.postMessage(message);
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
|
@ -0,0 +1,22 @@
|
|||
import { commands, Uri } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { ctx } from '../../context';
|
||||
|
||||
/**
|
||||
* 打开 iBizModeling 工具
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 17:12:13
|
||||
* @export
|
||||
* @class OpenIBizModelingCommand
|
||||
*/
|
||||
export class OpenIBizModelingCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.IBIZ_MODELING.OPEN, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(): Promise<void> {
|
||||
const openUri = Uri.parse(`${ctx.toolAddress}/mos-dynamic-mgr/#/mosdynamicmgr/${ctx.get('psdevslnsys')}`);
|
||||
commands.executeCommand(CommandConst.VSCODE.OPEN, openUri);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
import { ExtensionContext } from 'vscode';
|
||||
import { OpenIBizModelingCommand } from './ibiz-modeling/open-ibiz-modeling';
|
||||
import { CopyPathCommand } from './mos-fs/copy-path';
|
||||
import { OpenFileCommand } from './mos-fs/open-file';
|
||||
import { OpenRuntimeCommand } from './mos-fs/open-runtime';
|
||||
import { SearchEntityCommand } from './mos-fs/search-entity';
|
||||
import { SearchEntityViewCommand } from './mos-fs/search-entity-view';
|
||||
import { SearchModelCommand } from './mos-fs/search-model';
|
||||
import { SystemInfoTerminalShowCommand } from './system-info-terminal/show';
|
||||
import { SystemPublishCommand } from './system/publish';
|
||||
import { TemplatePublishCommand } from './template/publish';
|
||||
import { UserLoginCommand } from './user/login';
|
||||
|
||||
/**
|
||||
* 安装命令处理程序
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 11:11:08
|
||||
* @export
|
||||
* @param {ExtensionContext} _context
|
||||
*/
|
||||
export function installCommands(_context: ExtensionContext): void {
|
||||
new OpenIBizModelingCommand();
|
||||
// mos-fs 相关
|
||||
{
|
||||
new CopyPathCommand();
|
||||
new OpenFileCommand();
|
||||
new OpenRuntimeCommand();
|
||||
new SearchModelCommand();
|
||||
new SearchEntityCommand();
|
||||
new SearchEntityViewCommand();
|
||||
}
|
||||
new SystemPublishCommand();
|
||||
new SystemInfoTerminalShowCommand();
|
||||
new TemplatePublishCommand();
|
||||
new UserLoginCommand();
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
import { commands, env } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { PSMosFile } from '../../entities';
|
||||
import { Directory, Entry, File } from '../../file-system';
|
||||
|
||||
/**
|
||||
* 拷贝路径至粘贴板
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 16:12:46
|
||||
* @export
|
||||
* @class CopyPathCommand
|
||||
*/
|
||||
export class CopyPathCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.MOS_FS.COPY_PATH, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(param: Entry | PSMosFile | string): Promise<void> {
|
||||
let path = '';
|
||||
if (param instanceof Directory || param instanceof File) {
|
||||
path = param.fullPath;
|
||||
} else {
|
||||
if (param instanceof PSMosFile) {
|
||||
path = param.fullPath;
|
||||
} else {
|
||||
path = path;
|
||||
}
|
||||
}
|
||||
env.clipboard.writeText(path);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
import { commands, Uri, window } from 'vscode';
|
||||
import { CommandConst, FileExtensionConst } from '../../constants';
|
||||
import { ctx } from '../../context';
|
||||
import { PSMosFile } from '../../entities';
|
||||
import { Directory, Entry, File, IBizMosFSCustom } from '../../file-system';
|
||||
import { isNilOrEmpty } from '../../util';
|
||||
|
||||
/**
|
||||
* mos-fs 虚拟文件系统支持命令
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 14:11:13
|
||||
* @export
|
||||
* @class OpenFileCommand
|
||||
*/
|
||||
export class OpenFileCommand {
|
||||
protected get fs(): IBizMosFSCustom {
|
||||
return ctx.mosFS;
|
||||
}
|
||||
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.MOS_FS.OPEN_FILE, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(param: Entry | PSMosFile | string): Promise<void> {
|
||||
if (isNilOrEmpty(param)) {
|
||||
throw new Error('未指定需要打开的模型');
|
||||
}
|
||||
let uri: Uri;
|
||||
let file: Entry;
|
||||
if (param instanceof Directory || param instanceof File) {
|
||||
uri = param.getUri();
|
||||
file = param;
|
||||
} else {
|
||||
if (param instanceof PSMosFile) {
|
||||
uri = this.fs.getUri(param.fullPath);
|
||||
} else {
|
||||
uri = this.fs.getUri(param);
|
||||
}
|
||||
file = await this.fs.stat(uri);
|
||||
}
|
||||
if (!file) {
|
||||
window.showErrorMessage(`打开文件失败,文件不存在:${uri.path}`);
|
||||
return;
|
||||
}
|
||||
switch (file.content.extension) {
|
||||
case FileExtensionConst.MODEL_UI:
|
||||
case FileExtensionConst.MODEL_RUNTIME:
|
||||
commands.executeCommand(CommandConst.VSCODE.OPEN, uri);
|
||||
return;
|
||||
default:
|
||||
const openUri = Uri.parse(
|
||||
`${ctx.toolAddress}/mos-dynamic-mgr/#/mosdynamicmgr/${ctx.get('psdevslnsys')}/vscode-redirect-view?path=${encodeURIComponent(file.content.path)}`,
|
||||
);
|
||||
commands.executeCommand(CommandConst.VSCODE.OPEN, openUri);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
import { commands, Uri, window } from 'vscode';
|
||||
import { CommandConst, FileExtensionConst } from '../../constants';
|
||||
import { ctx } from '../../context';
|
||||
import { PSMosFile } from '../../entities';
|
||||
import { Directory, Entry, File, IBizMosFSCustom } from '../../file-system';
|
||||
import { isNilOrEmpty } from '../../util';
|
||||
|
||||
/**
|
||||
* mos-fs 虚拟文件系统支持命令
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 14:11:13
|
||||
* @export
|
||||
* @class OpenRuntimeCommand
|
||||
*/
|
||||
export class OpenRuntimeCommand {
|
||||
protected get fs(): IBizMosFSCustom {
|
||||
return ctx.mosFS;
|
||||
}
|
||||
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.MOS_FS.OPEN_RUNTIME, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(param: Entry | PSMosFile | string): Promise<void> {
|
||||
if (isNilOrEmpty(param)) {
|
||||
throw new Error('未指定需要打开的模型');
|
||||
}
|
||||
let path = '';
|
||||
if (param instanceof Directory || param instanceof File) {
|
||||
path = param.path;
|
||||
} else {
|
||||
if (param instanceof PSMosFile) {
|
||||
path = param.fullPath;
|
||||
} else {
|
||||
path = param;
|
||||
}
|
||||
}
|
||||
if (!path.endsWith(FileExtensionConst.MODEL_RUNTIME)) {
|
||||
path += FileExtensionConst.MODEL_RUNTIME;
|
||||
}
|
||||
const file = await this.fs.stat(this.fs.getUri(path));
|
||||
if (!file) {
|
||||
window.showErrorMessage(`${path} 暂未支持运行时`);
|
||||
return;
|
||||
}
|
||||
const uri = file.getUri();
|
||||
commands.executeCommand(CommandConst.VSCODE.OPEN, uri);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
import { commands } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { IBizMOSService } from '../../file-system';
|
||||
|
||||
/**
|
||||
* 搜索实体视图
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-06 19:12:35
|
||||
* @export
|
||||
* @class SearchEntityViewCommand
|
||||
*/
|
||||
export class SearchEntityViewCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.MOS_FS.SEARCH_ENTITY_VIEW, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(): Promise<void> {
|
||||
const service = IBizMOSService.getInstance();
|
||||
const entityViews = await service.listFiles('/psdeviewbases');
|
||||
console.log(entityViews);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
import { commands, window } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { MosFilePickItem } from '../../entities';
|
||||
import { IBizMOSService } from '../../file-system';
|
||||
|
||||
/**
|
||||
* 搜索实体
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-06 19:12:28
|
||||
* @export
|
||||
* @class SearchEntityCommand
|
||||
*/
|
||||
export class SearchEntityCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.MOS_FS.SEARCH_ENTITY, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(): Promise<void> {
|
||||
// 加载实体信息
|
||||
const promise = new Promise<readonly MosFilePickItem[]>(async resolve => {
|
||||
const arr: MosFilePickItem[] = [];
|
||||
const service = IBizMOSService.getInstance();
|
||||
const entities = await service.listFiles('/psdataentities');
|
||||
if (entities) {
|
||||
for (let i = 0; i < entities.length; i++) {
|
||||
arr.push(new MosFilePickItem(entities[i]));
|
||||
}
|
||||
}
|
||||
resolve(arr);
|
||||
});
|
||||
const entity = await window.showQuickPick(promise, {
|
||||
title: '查找实体',
|
||||
placeHolder: '请输入实体名称',
|
||||
});
|
||||
if (entity) {
|
||||
commands.executeCommand(CommandConst.MOS_FS.OPEN_FILE, entity.data);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
import { commands, Uri, window } from 'vscode';
|
||||
import { CommandConst, GlobalConst } from '../../constants';
|
||||
|
||||
/**
|
||||
* 查找模型
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-05 18:12:44
|
||||
* @export
|
||||
* @class SearchModelCommand
|
||||
*/
|
||||
export class SearchModelCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.MOS_FS.SEARCH_MODEL_BY_PATH, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(basePath?: string): Promise<void> {
|
||||
const defaultUri = Uri.parse(`${GlobalConst.MOS_FS_PROTOCOL}${basePath ? basePath : '/'}`);
|
||||
const uriArr = await window.showOpenDialog({
|
||||
title: '根据路路径查找模型',
|
||||
openLabel: '请输入想要查找或打开的模型路径',
|
||||
defaultUri,
|
||||
canSelectFiles: true,
|
||||
canSelectFolders: true,
|
||||
canSelectMany: false,
|
||||
});
|
||||
if (uriArr) {
|
||||
for (let i = 0; i < uriArr.length; i++) {
|
||||
const uri = uriArr[i];
|
||||
commands.executeCommand(CommandConst.MOS_FS.OPEN_FILE, uri.path);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
import { commands } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { wsOutput } from '../../terminal';
|
||||
|
||||
export class SystemInfoTerminalShowCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.SYSTEM_INFO_TERMINAL.SHOW, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(): Promise<void> {
|
||||
wsOutput.openTerminal();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
import { commands, ProgressLocation, window } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { ctx } from '../../context';
|
||||
import { CoreAPI } from '../../service';
|
||||
|
||||
/**
|
||||
* 系统发布
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-25 18:11:34
|
||||
* @export
|
||||
* @class SystemPublishCommand
|
||||
*/
|
||||
export class SystemPublishCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.SYSTEM.PUBLISH, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(): Promise<void> {
|
||||
const psDevSlnSys = ctx.get('psdevslnsys');
|
||||
return window.withProgress({ location: ProgressLocation.Notification, title: '系统发布' }, progress => {
|
||||
return new Promise(resolve => {
|
||||
setTimeout(async () => {
|
||||
progress.report({ message: '正在建立发布任务...' });
|
||||
const res = await CoreAPI.cli('ExecuteSysCLICmd', { pstscmdname: 'devsys_pubcode', psdevslnsysid: psDevSlnSys });
|
||||
if (res) {
|
||||
window.showInformationMessage(`已建立 <${ctx.get('psdevslnsysname')}> 系统代码发布`);
|
||||
}
|
||||
resolve();
|
||||
}, 300);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
import { commands, ProgressLocation, window } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { TemplatePickItem } from '../../entities';
|
||||
import { CoreAPI } from '../../service';
|
||||
|
||||
/**
|
||||
* 发布模板
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-25 19:11:10
|
||||
* @export
|
||||
* @class TemplatePublishCommand
|
||||
*/
|
||||
export class TemplatePublishCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.TEMPLATE.PUBLISH, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(): Promise<void> {
|
||||
// 加载可刷新的模板
|
||||
const promise = new Promise<readonly TemplatePickItem[]>(async resolve => {
|
||||
const arr: TemplatePickItem[] = [];
|
||||
const templates = await CoreAPI.curUserTemplates();
|
||||
templates.forEach(item => {
|
||||
arr.push(new TemplatePickItem(item));
|
||||
});
|
||||
resolve(arr);
|
||||
});
|
||||
// 选择模板
|
||||
const temp = await window.showQuickPick(promise, {
|
||||
title: '发布模板',
|
||||
placeHolder: '请选择需要发布的模板',
|
||||
});
|
||||
if (temp) {
|
||||
await window.withProgress({ location: ProgressLocation.Notification, title: '发布模板' }, async progress => {
|
||||
progress.report({ message: '正在发布模板...' });
|
||||
const res = await CoreAPI.cli('ExecuteTemplCLICmd', { pstscmdname: 'devtempl_publish', psdevslntemplid: temp.data.psdevslntemplid });
|
||||
if (res) {
|
||||
window.showInformationMessage(`发布成功: ${temp.label}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
import { commands } from 'vscode';
|
||||
import { CommandConst } from '../../constants';
|
||||
import { login } from '../../service';
|
||||
|
||||
export class UserLoginCommand {
|
||||
constructor() {
|
||||
commands.registerCommand(CommandConst.USER.LOGIN, this.execute.bind(this));
|
||||
}
|
||||
|
||||
protected async execute(): Promise<void> {
|
||||
login.login();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
export class DesignToolUrl {
|
||||
/**
|
||||
* 所有支持设计界面的模型设计界面地址
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-28 15:11:05
|
||||
* @static
|
||||
*/
|
||||
static readonly urls = {
|
||||
// 编辑表单
|
||||
EDITFORM: `/form-design/#/home/___instance___/psdeforms/___srfkey___/views/design`,
|
||||
// 搜索表单
|
||||
SEARCHFORM: `/form-design/#/home/___instance___/psdeforms/___srfkey___/views/design`,
|
||||
// 表格
|
||||
PSDEGRID: `/grid-design/#/home/___instance___/psdegrids/___srfkey___/views/design`,
|
||||
// 应用视图
|
||||
PSAPPVIEW: `/view-design/#/dynainst/___instance___/psdeviewbases/___srfkey___/views/design`,
|
||||
// 实体视图
|
||||
PSDEVIEWBASE: `/view-design/#/dynainst/___instance___/psdeviewbases/___srfkey___/views/design`,
|
||||
// 首页
|
||||
APPINDEXVIEW: '/index-design/#/indexdesign/___instance___/psappindexviews/___srfkey___/views/design',
|
||||
// 首页
|
||||
PSAPPINDEXVIEW: `/toolbar-design/indexdesign.html#/indexdesign/___instance___/psappindexviews/___srfkey___/views/design`,
|
||||
// 系统数据看板
|
||||
PSSYSDASHBOARD: `/form-design/sysportaldesign.html#/sysportaldesign/___instance___/pssysdashboards/___srfkey___/views/design`,
|
||||
// 系统面板
|
||||
PSSYSVIEWPANEL: `/form-design/paneldesign.html#/paneldesign/___instance___/pssysviewpanels/___srfkey___/views/design`,
|
||||
// 应用看板视图
|
||||
PSAPPPORTALVIEW: `/form-design/portaldesign.html#/portaldesign/___instance___/psappportalviews/___srfkey___/views/design`,
|
||||
// 工作流
|
||||
PSWFVERSION: `/wf-design/#/home/___instance___/pswfversions/___srfkey___/views/design`,
|
||||
// 树
|
||||
PSDETREEVIEW: `/tree-design/#/home/___instance___/psdetreeviews/___srfkey___/views/design`,
|
||||
// 列表
|
||||
PSDELIST: `/md-design/#/home/___instance___/psdelists/___srfkey___/views/design`,
|
||||
// 数据视图
|
||||
PSDEDATAVIEW: `/md-design/carddesign.html#/carddesign/___instance___/psdedataviews/___srfkey___/views/design`,
|
||||
// 工具栏
|
||||
PSDETOOLBAR: `/toolbar-design/#/toolbardesign/___instance___/psdetoolbars/___srfkey___/views/design`,
|
||||
// 图表设计
|
||||
PSDECHART: `/chart-design/dynainst.html#/dynainst/F37F67FD-E3C1-496E-AB99-BC42017AE84C/psdecharts/___srfkey___/views/design`,
|
||||
// 实体处理逻辑
|
||||
DELOGIC: `/logic-design/#/home/___instance___/psdelogics/___srfkey___/views/design`,
|
||||
// 界面逻辑
|
||||
UILOGIC: `/logic-design/design.html#/design/___instance___/psdelogics/___srfkey___/views/uldesign`,
|
||||
// 实体属性值规则
|
||||
PSDEFVALUERULE: `/rule-design/#/valueruledesign/___instance___/psdefvaluerules/___srfkey___/views/design`,
|
||||
// er 图
|
||||
PSSYSERMAP: `/er-design/#/home/___instance___/pssysermaps/___srfkey___/views/design`,
|
||||
// 用例图
|
||||
PSSYSUCMAP: `/usecase-design/#/home/___instance___/pssysucmaps/___srfkey___/views/design`,
|
||||
// 查询设计
|
||||
PSDEDATAQUERY: '/dataquery-design/#/home/___instance___/psdedataqueries/___srfkey___/views/design',
|
||||
// 应用菜单
|
||||
PSAPPMENU: `/appmenu-design/#/appmenudesign/___instance___/psappmenus/___srfkey___/views/design`,
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据类型获取url
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-28 15:11:15
|
||||
* @static
|
||||
* @param {string} type
|
||||
* @return {*} {(string | null)}
|
||||
*/
|
||||
static getUrl(type: string): string | null {
|
||||
if ((this.urls as any)[type]) {
|
||||
return (this.urls as any)[type];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型是否支持
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-28 15:11:50
|
||||
* @static
|
||||
* @param {string} type
|
||||
* @return {*} {boolean}
|
||||
*/
|
||||
static has(type: string): boolean {
|
||||
if ((this.urls as any)[type]) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,234 @@
|
|||
import { IBizModelFSCustomChildConfigItem, IBizModelFSCustomConfigItem } from './interface/ibiz-model-fs-custom-config-item';
|
||||
|
||||
/**
|
||||
* 模型导航树配置
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 17:11:47
|
||||
* @export
|
||||
* @class IBizModelFSCustomConfig
|
||||
*/
|
||||
export class IBizModelFSCustomConfig {
|
||||
protected static readonly regStr = '[^\n\r/]+';
|
||||
|
||||
static readonly configs: IBizModelFSCustomConfigItem[] = [
|
||||
{
|
||||
path: '/',
|
||||
children: [
|
||||
{
|
||||
path: '/pssysucmaps',
|
||||
name: 'pssysucmaps',
|
||||
logicName: '系统用例看板',
|
||||
},
|
||||
{
|
||||
path: '/pssysermaps',
|
||||
name: 'pssysermaps',
|
||||
logicName: '实体模型看板',
|
||||
},
|
||||
// {
|
||||
// path: '/pssyssfpubs',
|
||||
// name: 'pssyssfpubs',
|
||||
// logicName: '后台体系',
|
||||
// },
|
||||
// {
|
||||
// path: '/pssysdbschemes',
|
||||
// name: 'pssysdbschemes',
|
||||
// logicName: '数据库架构',
|
||||
// },
|
||||
// {
|
||||
// path: '/pssysserviceapis',
|
||||
// name: 'pssysserviceapis',
|
||||
// logicName: '服务接口',
|
||||
// },
|
||||
// {
|
||||
// path: '/pssubsysserviceapis',
|
||||
// name: 'pssubsysserviceapis',
|
||||
// logicName: '外部接口',
|
||||
// },
|
||||
{
|
||||
path: '/pssysapps',
|
||||
name: 'pssysapps',
|
||||
logicName: '前端应用',
|
||||
},
|
||||
{
|
||||
path: '/psmodules',
|
||||
name: 'psmodules',
|
||||
logicName: '系统',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*',
|
||||
children: [
|
||||
{
|
||||
path: '/psmodules/*/psdataentities',
|
||||
name: 'psdataentities',
|
||||
logicName: '实体',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*',
|
||||
children: [
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdeforms',
|
||||
name: 'psdeforms',
|
||||
logicName: '表单',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdegrids',
|
||||
name: 'psdegrids',
|
||||
logicName: '数据表格',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdetreeviews',
|
||||
name: 'psdetreeviews',
|
||||
logicName: '树视图',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdecharts',
|
||||
name: 'psdecharts',
|
||||
logicName: '数据图表',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdelists',
|
||||
name: 'psdelists',
|
||||
logicName: '数据列表',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdedataviews',
|
||||
name: 'psdedataviews',
|
||||
logicName: '卡片视图',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdetoolbars',
|
||||
name: 'psdetoolbars',
|
||||
logicName: '工具栏',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/pssysviewpanels',
|
||||
name: 'pssysviewpanels',
|
||||
logicName: '面板',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/pssysdashboards',
|
||||
name: 'pssysdashboards',
|
||||
logicName: '数据看板',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/pssysportlets',
|
||||
name: 'pssysportlets',
|
||||
logicName: '数据看板部件',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/pssyscalendars',
|
||||
name: 'pssyscalendars',
|
||||
logicName: '日历',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdeviewbases',
|
||||
name: 'psdeviewbases',
|
||||
logicName: '实体视图',
|
||||
},
|
||||
{
|
||||
path: '/psmodules/*/psdataentities/*/psdedataqueries',
|
||||
name: 'psdedataqueries',
|
||||
logicName: '数据查询',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/pssysapps/*',
|
||||
children: [
|
||||
{
|
||||
path: '/pssysapps/*/psappmenus',
|
||||
name: 'psappmenus',
|
||||
logicName: '应用菜单',
|
||||
},
|
||||
{
|
||||
path: '/pssysapps/*/psappviews',
|
||||
name: 'psappviews',
|
||||
logicName: '应用视图',
|
||||
},
|
||||
// {
|
||||
// path: '/pssysapps/*/psappmodules',
|
||||
// name: 'psappmodules',
|
||||
// logicName: '应用模块',
|
||||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/pssysapps/*/psappmodules/*',
|
||||
children: [
|
||||
{
|
||||
path: '/pssysapps/*/psappmodules/*/psapplocaldes',
|
||||
name: 'psapplocaldes',
|
||||
logicName: '应用实体',
|
||||
},
|
||||
{
|
||||
path: '/pssysapps/*/psappmodules/*/psappviews',
|
||||
name: 'psappviews',
|
||||
logicName: '应用视图',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* 特殊转为叶子节点
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 11:12:23
|
||||
* @static
|
||||
* @type {string[]}
|
||||
*/
|
||||
static leafConfigs: string[] = ['/pssysapps/*/psappmodules/*/psapplocaldes/*', '/pssysapps/*/psappmodules/*/psapplocaldes/*'];
|
||||
|
||||
/**
|
||||
* 索引型模型对象
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-05 13:12:58
|
||||
* @static
|
||||
* @type {string[]}
|
||||
*/
|
||||
static indexConfigs: RegExp[] = [new RegExp(`^/psmodules/${this.regStr}/psdataentities/${this.regStr}$`)];
|
||||
|
||||
/**
|
||||
* 根据路径获取子目录
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 19:11:13
|
||||
* @static
|
||||
* @param {string} path
|
||||
* @return {*} {IBizModelFSCustomChildConfigItem[]}
|
||||
*/
|
||||
static getItems(path: string): IBizModelFSCustomChildConfigItem[] | null {
|
||||
if (path === '/' || path === '') {
|
||||
return this.configs.find(item => item.path === '/')!.children;
|
||||
}
|
||||
const config = this.configs.find(c => {
|
||||
if (!c.reg) {
|
||||
c.reg = new RegExp(`^${c.path.replace(/\*/g, this.regStr)}$`);
|
||||
}
|
||||
return c.reg.test(path);
|
||||
});
|
||||
if (config) {
|
||||
return config.children;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算是否为索引型模型
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-05 13:12:33
|
||||
* @static
|
||||
* @param {string} path
|
||||
* @return {*} {boolean}
|
||||
*/
|
||||
static ownIndex(path: string): boolean {
|
||||
return this.indexConfigs.some(reg => reg.test(path));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
/**
|
||||
* 配置子项
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 09:12:08
|
||||
* @export
|
||||
* @interface IBizModelFSCustomChildConfigItem
|
||||
*/
|
||||
export interface IBizModelFSCustomChildConfigItem {
|
||||
/**
|
||||
* 逻辑名称
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 18:11:57
|
||||
* @type {string}
|
||||
*/
|
||||
logicName: string;
|
||||
/**
|
||||
* 路径
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 18:11:02
|
||||
* @type {string}
|
||||
*/
|
||||
path: string;
|
||||
/**
|
||||
* 标识名称
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 18:11:06
|
||||
* @type {string}
|
||||
*/
|
||||
name: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置项
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 17:11:32
|
||||
* @export
|
||||
* @interface IBizModelFSCustomConfigItem
|
||||
*/
|
||||
export interface IBizModelFSCustomConfigItem {
|
||||
/**
|
||||
* 路径
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 16:11:38
|
||||
* @type {string}
|
||||
*/
|
||||
path: string;
|
||||
/**
|
||||
* 路径匹配正则
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 18:11:03
|
||||
* @type {RegExp}
|
||||
*/
|
||||
reg?: RegExp;
|
||||
/**
|
||||
* 子项
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 17:11:01
|
||||
* @type {IBizModelFSCustomChildConfigItem[]}
|
||||
*/
|
||||
children: IBizModelFSCustomChildConfigItem[];
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
export { loadConfig } from './load-config/load-config';
|
||||
export { DesignToolUrl } from './design-tool-url/design-tool-url';
|
||||
export { IBizModelFSCustomConfig } from './ibiz-model-fs-custom/ibiz-model-fs-custom';
|
|
@ -0,0 +1,47 @@
|
|||
import { join } from 'path';
|
||||
import { Uri, window, workspace } from 'vscode';
|
||||
import { load } from 'js-yaml';
|
||||
import { ctx } from '../../context';
|
||||
|
||||
// .ibizproject 配置文件
|
||||
export const globalConfig: Record<string, any> = {};
|
||||
|
||||
/**
|
||||
* 读取项目 .ibizproject 配置信息
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 12:11:53
|
||||
* @export
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
export async function loadConfig(): Promise<void> {
|
||||
if (workspace.workspaceFolders) {
|
||||
for (let i = 0; i < workspace.workspaceFolders.length; i++) {
|
||||
const folder = workspace.workspaceFolders[i];
|
||||
// 不为实际文件系统时忽略
|
||||
if (folder.uri.scheme !== 'file') {
|
||||
continue;
|
||||
}
|
||||
// 工作区目录
|
||||
const path = folder.uri.path;
|
||||
// 配置文件地址
|
||||
const uri = Uri.file(join(path, '.ibizproject'));
|
||||
// 查看配置文件是否存在
|
||||
const file = await workspace.fs.stat(uri);
|
||||
if (file) {
|
||||
// 读取配置文件
|
||||
const val = await workspace.fs.readFile(uri);
|
||||
// 加载 yaml 格式的文件内容
|
||||
const config = load(val.toString()) as Record<string, any>;
|
||||
// 将全局配置放入上下文中
|
||||
ctx.set('type', config.type);
|
||||
ctx.set('psdevsln', config.psdevsln);
|
||||
ctx.set('psdevslnsys', config.psdevslnsys);
|
||||
ctx.set('psdevslnsysname', config.psdevslnsysname);
|
||||
Object.assign(globalConfig, config);
|
||||
} else {
|
||||
window.showErrorMessage('埃必致 系统插件启动失败,未识别到项目根目录中的 .ibizproject 配置文件');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import { IBizModeling } from './ibiz-modeling/ibiz-modeling';
|
||||
import { MosFSConst } from './mos-fs/mos-fs';
|
||||
import { SystemInfoTerminalConst } from './system-info-terminal/system-info-terminal';
|
||||
import { SystemConst } from './system/system';
|
||||
import { TemplateConst } from './template/template';
|
||||
import { UserConst } from './user/user';
|
||||
import { VSCodeConst } from './vs-code/vs-code';
|
||||
import { WorkbenchConst } from './workbench/workbench';
|
||||
|
||||
/**
|
||||
* 文件后缀
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-11 10:11:19
|
||||
* @export
|
||||
* @class CommandConst
|
||||
*/
|
||||
export class CommandConst {
|
||||
static readonly IBIZ_MODELING: IBizModeling = new IBizModeling();
|
||||
|
||||
static readonly WORKBENCH: WorkbenchConst = new WorkbenchConst();
|
||||
|
||||
static readonly VSCODE: VSCodeConst = new VSCodeConst();
|
||||
|
||||
static readonly SYSTEM_INFO_TERMINAL: SystemInfoTerminalConst = new SystemInfoTerminalConst();
|
||||
|
||||
static readonly SYSTEM: SystemConst = new SystemConst();
|
||||
|
||||
static readonly TEMPLATE: TemplateConst = new TemplateConst();
|
||||
|
||||
static readonly USER: UserConst = new UserConst();
|
||||
|
||||
static readonly MOS_FS: MosFSConst = new MosFSConst();
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* iBizModeling 命令集
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 17:12:57
|
||||
* @export
|
||||
* @class IBizModeling
|
||||
*/
|
||||
export class IBizModeling {
|
||||
/**
|
||||
* 打开 iBizModeling 工具
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 17:12:12
|
||||
*/
|
||||
readonly OPEN = 'ibiz-modeling-studio.open-ibiz-modeling';
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* MosFS 虚拟文件系统指令集
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:05
|
||||
* @export
|
||||
* @class MosFSConst
|
||||
*/
|
||||
export class MosFSConst {
|
||||
/**
|
||||
* 拷贝路径
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 16:12:41
|
||||
*/
|
||||
readonly COPY_PATH = 'ibiz-modeling-studio.mos-fs.copy-path';
|
||||
/**
|
||||
* 打开文件
|
||||
*
|
||||
* @description 支持打开 PSMosFile、Directory、File、path 类型参数
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:06
|
||||
*/
|
||||
readonly OPEN_FILE = 'ibiz-modeling-studio.mos-fs.open-file';
|
||||
/**
|
||||
* 打开运行时
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 14:12:45
|
||||
*/
|
||||
readonly OPEN_RUNTIME = 'ibiz-modeling-studio.mos-fs.open-runtime';
|
||||
/**
|
||||
* 搜索模型
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-05 18:12:31
|
||||
*/
|
||||
readonly SEARCH_MODEL_BY_PATH = 'ibiz-modeling-studio.mos-fs.search-model-by-path';
|
||||
/**
|
||||
* 搜索实体
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-06 19:12:02
|
||||
*/
|
||||
readonly SEARCH_ENTITY = 'ibiz-modeling-studio.mos-fs.search-entity';
|
||||
/**
|
||||
* 搜索实体视图
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-06 19:12:07
|
||||
*/
|
||||
readonly SEARCH_ENTITY_VIEW = 'ibiz-modeling-studio.mos-fs.search-entity-view';
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 系统信息终端指令集
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:39
|
||||
* @export
|
||||
* @class SystemInfoTerminalConst
|
||||
*/
|
||||
export class SystemInfoTerminalConst {
|
||||
/**
|
||||
* 显示终端
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:51
|
||||
*/
|
||||
readonly SHOW = 'ibiz-modeling-studio.system-info-terminal.show';
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 系统相关命令
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:52
|
||||
* @export
|
||||
* @class SystemConst
|
||||
*/
|
||||
export class SystemConst {
|
||||
/**
|
||||
* 发布代码
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:53
|
||||
*/
|
||||
readonly PUBLISH = 'ibiz-modeling-studio.system.publish.code';
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 模板相关指令集
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:51
|
||||
* @export
|
||||
* @class TemplateConst
|
||||
*/
|
||||
export class TemplateConst {
|
||||
/**
|
||||
* 发布模板
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:54
|
||||
*/
|
||||
readonly PUBLISH = 'ibiz-modeling-studio.template.publish';
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 用户指令集
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:34
|
||||
* @export
|
||||
* @class UserConst
|
||||
*/
|
||||
export class UserConst {
|
||||
/**
|
||||
* 用户登录
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:23
|
||||
*/
|
||||
readonly LOGIN = 'ibiz-modeling-studio.user.login';
|
||||
/**
|
||||
* 登录回转地址处理
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-06 16:12:08
|
||||
*/
|
||||
readonly LOGIN_REPLY_PATH_HANDLE = 'ibiz-modeling-studio.user.login-reply-path-handle';
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* vs code 指令集
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:40
|
||||
* @export
|
||||
* @class VSCodeConst
|
||||
*/
|
||||
export class VSCodeConst {
|
||||
/**
|
||||
* 打开地址
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:47
|
||||
*/
|
||||
readonly OPEN = 'vscode.open';
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 工作台指令集
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:14
|
||||
* @export
|
||||
* @class Workbench
|
||||
*/
|
||||
export class WorkbenchConst {
|
||||
/**
|
||||
* 重新加载窗口
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:22
|
||||
*/
|
||||
readonly RELOAD_WINDOW = 'workbench.action.reloadWindow';
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 在 vscode 中的配置参数
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-15 17:11:22
|
||||
* @export
|
||||
* @class ConfigConst
|
||||
*/
|
||||
export class ConfigConst {
|
||||
/**
|
||||
* 建模工场域
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-29 14:11:15
|
||||
* @static
|
||||
* @type {string}
|
||||
*/
|
||||
static readonly IBIZ_MODELING_STUDIO_DOMAIN = 'ibiz-modeling-studio-domain';
|
||||
/**
|
||||
* 系统 console 日志输入配置
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-25 11:11:39
|
||||
* @static
|
||||
*/
|
||||
static readonly CONSOLE = {
|
||||
// 控制台关闭时,收到消息是否自动弹出
|
||||
AUTO_DISPLAY: 'console.auto-display',
|
||||
};
|
||||
/**
|
||||
* 模型链接识别是否启用
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-03 15:12:24
|
||||
* @static
|
||||
*/
|
||||
static readonly IBIZ_MODELING_LINK = {
|
||||
// 启用模型链接识别
|
||||
ENABLE: 'ibiz-modeling-link.enable',
|
||||
};
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
/**
|
||||
* 已支持的资源管理器
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 09:11:25
|
||||
* @export
|
||||
* @class ExplorerConst
|
||||
*/
|
||||
export class ExplorerConst {
|
||||
/**
|
||||
* 模型树导航视图标识
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 09:11:57
|
||||
* @static
|
||||
*/
|
||||
static readonly MODEL_EXP_TREE = 'iBizExplorer.ModelExpTree';
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 文件后缀
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-11 10:11:19
|
||||
* @export
|
||||
* @class FileExtensionConst
|
||||
*/
|
||||
export class FileExtensionConst {
|
||||
/**
|
||||
* 模型编辑文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-11 10:11:10
|
||||
* @static
|
||||
*/
|
||||
static readonly MODEL = '.ibizmodel';
|
||||
/**
|
||||
* 模型编辑文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-11 10:11:10
|
||||
* @static
|
||||
*/
|
||||
// static readonly MODEL_YAML = FileExtensionConst.MODEL + '.yaml';
|
||||
/**
|
||||
* 模型图形编辑文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-15 15:11:58
|
||||
* @static
|
||||
*/
|
||||
static readonly MODEL_UI = FileExtensionConst.MODEL + '.ui';
|
||||
/**
|
||||
* 对象运行时
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-19 14:11:21
|
||||
* @static
|
||||
*/
|
||||
static readonly MODEL_RUNTIME = FileExtensionConst.MODEL + '.runtime';
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* 全局静态变量
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-14 17:11:13
|
||||
* @export
|
||||
* @class GlobalConst
|
||||
*/
|
||||
export class GlobalConst {
|
||||
/**
|
||||
* 插件标识
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-01 15:12:24
|
||||
* @static
|
||||
*/
|
||||
static readonly PLUGIN_CODE = 'ibiz-modeling-studio';
|
||||
/**
|
||||
* 当前插件名称
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-27 10:11:20
|
||||
* @static
|
||||
*/
|
||||
static readonly PLUGIN_NAME = 'iBizModeling';
|
||||
/**
|
||||
* 当前插件名称
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-27 10:11:20
|
||||
* @static
|
||||
*/
|
||||
static readonly PLUGIN_LOGIC_NAME = 'iBiz建模工场';
|
||||
/**
|
||||
* 模型编辑文件域名称
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-11 10:11:10
|
||||
* @static
|
||||
*/
|
||||
static readonly MOS_FS_PROTOCOL = 'ibizmos:';
|
||||
/**
|
||||
* 模型链接域名称
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-04 22:12:59
|
||||
* @static
|
||||
*/
|
||||
static readonly MODELING_PATH_PROTOCOL = 'iBizModeling:';
|
||||
/**
|
||||
* 插件域
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-26 19:11:56
|
||||
* @static
|
||||
*/
|
||||
static readonly AUTHORITY = 'ibizlab.ibiz-modeling-studio';
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
export { ConfigConst } from './config/config';
|
||||
export { FileExtensionConst } from './file-extension/file-extension';
|
||||
export { GlobalConst } from './global/global';
|
||||
export { CommandConst } from './command/command';
|
||||
export { RTContextConst } from './vscode-rt-context/vscode-rt-context';
|
|
@ -0,0 +1,19 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* vscode 运行时上下文变量,可在 when 中判断使用
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-03 10:12:47
|
||||
* @export
|
||||
* @class RTContextConst
|
||||
*/
|
||||
export class RTContextConst {
|
||||
/**
|
||||
* 插件是否启用
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-03 10:12:08
|
||||
* @static
|
||||
*/
|
||||
static readonly ENABLE_PLUGIN = 'ibiz-modeling-studio.enable-plugin';
|
||||
}
|
|
@ -0,0 +1,328 @@
|
|||
import { commands, ExtensionContext, workspace, WorkspaceConfiguration } from 'vscode';
|
||||
import { ConfigConst, RTContextConst } from '../constants';
|
||||
import { IBizMosFSCustom } from '../file-system';
|
||||
import { GlobalContextData } from '../interface';
|
||||
import { Websocket } from '../ws';
|
||||
|
||||
/**
|
||||
* 全局上下文
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 11:11:52
|
||||
* @export
|
||||
* @class GlobalContext
|
||||
*/
|
||||
export class GlobalContext {
|
||||
protected static readonly instance: GlobalContext = new GlobalContext();
|
||||
/**
|
||||
* 上下文数据
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 14:11:09
|
||||
* @private
|
||||
* @type {GlobalContextData}
|
||||
*/
|
||||
private readonly data: GlobalContextData = {};
|
||||
|
||||
/**
|
||||
* 系统 ws 消息
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-24 20:11:03
|
||||
* @private
|
||||
* @type {Websocket}
|
||||
*/
|
||||
private _ws!: Websocket;
|
||||
get ws(): Websocket {
|
||||
return this._ws;
|
||||
}
|
||||
|
||||
/**
|
||||
* vscode 插件运行上下文
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-14 11:11:13
|
||||
* @private
|
||||
* @type {ExtensionContext}
|
||||
*/
|
||||
private _extensionContext!: ExtensionContext;
|
||||
get extensionContext(): ExtensionContext {
|
||||
return this._extensionContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* mos 系统虚拟文件服务
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-15 17:11:52
|
||||
* @private
|
||||
* @type {IBizMosFSCustom}
|
||||
*/
|
||||
private _mosFS!: IBizMosFSCustom;
|
||||
get mosFS(): IBizMosFSCustom {
|
||||
return this._mosFS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 认证信息缓存标识
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-29 13:11:29
|
||||
* @readonly
|
||||
* @type {string}
|
||||
*/
|
||||
get tokenKey(): string {
|
||||
return 'token_' + this.get('psdevslnsys');
|
||||
}
|
||||
|
||||
/**
|
||||
* 认证信息
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-29 13:11:35
|
||||
* @private
|
||||
* @type {string}
|
||||
*/
|
||||
private _token?: string;
|
||||
get token(): string | undefined {
|
||||
return this._token;
|
||||
}
|
||||
|
||||
get config(): WorkspaceConfiguration {
|
||||
return workspace.getConfiguration('ibiz-modeling-studio');
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化完成
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 17:11:07
|
||||
* @protected
|
||||
* @type {boolean}
|
||||
*/
|
||||
protected _completed: boolean = false;
|
||||
get completed(): boolean {
|
||||
return this._completed;
|
||||
}
|
||||
|
||||
/**
|
||||
* 工具域地址
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-27 09:11:35
|
||||
* @readonly
|
||||
* @type {string}
|
||||
*/
|
||||
get studioAddress(): string {
|
||||
return ctx.config.get(ConfigConst.IBIZ_MODELING_STUDIO_DOMAIN)!;
|
||||
}
|
||||
|
||||
/**
|
||||
* studio 系统服务地址
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-27 02:11:35
|
||||
* @readonly
|
||||
* @type {string}
|
||||
*/
|
||||
get serviceApiAddress(): string {
|
||||
return this.studioAddress + '/MosDynamicBackend';
|
||||
}
|
||||
|
||||
/**
|
||||
* 设计工具地址
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-27 02:11:38
|
||||
* @readonly
|
||||
* @type {string}
|
||||
*/
|
||||
get toolAddress(): string {
|
||||
return this.studioAddress + '/mosdynamictool';
|
||||
}
|
||||
|
||||
/**
|
||||
* 核心服务地址
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-27 02:11:25
|
||||
* @readonly
|
||||
* @type {string}
|
||||
*/
|
||||
get coreApiAddress(): string {
|
||||
return this.studioAddress + '/MosDynamic';
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of GlobalContext.
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-26 20:11:20
|
||||
*/
|
||||
constructor() {
|
||||
if (GlobalContext.instance) {
|
||||
throw new Error('GlobalContext is a singleton class');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 vscode 运行上下文
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-14 11:11:05
|
||||
* @param {ExtensionContext} context
|
||||
*/
|
||||
setExtensionContext(context: ExtensionContext): void {
|
||||
this._extensionContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 mosFS 虚拟文件系统
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-14 15:11:41
|
||||
* @param {IBizMosFSCustom} mosFS
|
||||
*/
|
||||
setMosFS(mosFS: IBizMosFSCustom): void {
|
||||
this._mosFS = mosFS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 studio 系统 ws 连接
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-24 20:11:03
|
||||
* @param {Websocket} ws
|
||||
*/
|
||||
setWS(ws: Websocket): void {
|
||||
this._ws = ws;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置认证缓存
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-29 13:11:55
|
||||
* @param {string} token
|
||||
*/
|
||||
setToken(token: string): void {
|
||||
this._token = token;
|
||||
this.cacheToken(token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 缓存认证信息
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-29 13:11:01
|
||||
* @param {string} token
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
async cacheToken(token: string): Promise<void> {
|
||||
this.extensionContext.secrets.store(this.tokenKey, token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置上下文
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 14:11:37
|
||||
* @template K
|
||||
* @param {K} key
|
||||
* @param {GlobalContextData[K]} val
|
||||
*/
|
||||
set<K extends keyof GlobalContextData>(key: K, val: GlobalContextData[K]): void {
|
||||
this.data[key] = val;
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取上下文
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 14:11:09
|
||||
* @template K
|
||||
* @param {K} key
|
||||
* @return {*} {GlobalContextData[K]}
|
||||
*/
|
||||
get<K extends keyof GlobalContextData>(key: K): GlobalContextData[K] {
|
||||
return this.data[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空值
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-21 21:11:18
|
||||
* @template K
|
||||
* @param {K} key
|
||||
*/
|
||||
clear<K extends keyof GlobalContextData>(key: K): void {
|
||||
delete this.data[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 vscode 运行上下文,可以在 package.json 中用 wen 的地方使用
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-02 20:12:23
|
||||
* @param {string} key
|
||||
* @param {unknown} val
|
||||
*/
|
||||
setContext(key: string, val: unknown): void {
|
||||
commands.executeCommand('setContext', key, val);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置为初始化完毕
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 17:11:45
|
||||
*/
|
||||
completedEnd(): void {
|
||||
this._completed = true;
|
||||
ctx.setContext(RTContextConst.ENABLE_PLUGIN, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 等待插件环境初始化完毕
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 17:11:50
|
||||
* @param {number} [num=0]
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
async waitCompleted(num: number = 0): Promise<void> {
|
||||
if (this.completed) {
|
||||
return;
|
||||
}
|
||||
if (num > 300) {
|
||||
return;
|
||||
}
|
||||
await new Promise(resolve => {
|
||||
setTimeout(resolve, 100);
|
||||
});
|
||||
num++;
|
||||
return this.waitCompleted(num);
|
||||
}
|
||||
|
||||
static getInstance(): GlobalContext {
|
||||
return this.instance;
|
||||
}
|
||||
}
|
||||
// 全局上下文
|
||||
export const ctx: GlobalContext = GlobalContext.getInstance();
|
||||
/**
|
||||
* 初始化上下文
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-16 14:11:57
|
||||
* @export
|
||||
* @param {ExtensionContext} context
|
||||
*/
|
||||
export function initCtx(context: ExtensionContext): void {
|
||||
// 将插件上下文设置到上下文中
|
||||
ctx.setExtensionContext(context);
|
||||
// 初始化 MosFS 虚拟文件系统并设置到上下文中
|
||||
const iBizMosFSCustom = new IBizMosFSCustom();
|
||||
ctx.setMosFS(iBizMosFSCustom);
|
||||
}
|
|
@ -0,0 +1,152 @@
|
|||
import { APIMessageItem } from '@ibiz/vscode-editor-api';
|
||||
import { CancellationToken, CustomTextEditorProvider, Disposable, ExtensionContext, TextDocument, Uri, ViewColumn, Webview, WebviewPanel, window, workspace } from 'vscode';
|
||||
import { GlobalConst } from '../../constants';
|
||||
import { ctx } from '../../context';
|
||||
import { PSMosFile } from '../../entities';
|
||||
import { notNilEmpty } from '../../util';
|
||||
|
||||
/**
|
||||
* 自定义文本编辑器基类
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-19 16:11:18
|
||||
* @export
|
||||
* @abstract
|
||||
* @class CustomEditorBase
|
||||
* @implements {CustomTextEditorProvider}
|
||||
*/
|
||||
export abstract class CustomEditorBase implements CustomTextEditorProvider {
|
||||
protected static readonly viewType: string = '';
|
||||
|
||||
constructor(protected readonly context: ExtensionContext) {}
|
||||
|
||||
public static register(context: ExtensionContext, customEditorClass: any): Disposable {
|
||||
const provider = new customEditorClass(context);
|
||||
const providerRegistration = window.registerCustomEditorProvider(customEditorClass.viewType, provider, { webviewOptions: { retainContextWhenHidden: true } });
|
||||
return providerRegistration;
|
||||
}
|
||||
|
||||
async resolveCustomTextEditor(document: TextDocument, webviewPanel: WebviewPanel, token: CancellationToken): Promise<void> {
|
||||
const webview = webviewPanel.webview;
|
||||
webview.options = {
|
||||
enableScripts: true,
|
||||
};
|
||||
webview.html = this.getHtmlForWebview(document, webview);
|
||||
webview.onDidReceiveMessage((message: APIMessageItem) => {
|
||||
switch (message.type) {
|
||||
case 'init':
|
||||
// 发送上下文数据
|
||||
const context = {
|
||||
token: ctx.token,
|
||||
psdevslnsys: ctx.get('psdevslnsys'),
|
||||
};
|
||||
this.sendContext(webview, context);
|
||||
// 发送当前文件数据
|
||||
const data = document.getText();
|
||||
if (notNilEmpty(data)) {
|
||||
try {
|
||||
const json = JSON.parse(data);
|
||||
this.sendData(webview, json);
|
||||
} catch (err) {
|
||||
console.error('json格式转换错误,数据', data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'command':
|
||||
this.commandMessage(webview, message);
|
||||
break;
|
||||
case 'data': // 接收编辑器的数据变更
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected abstract getHtmlForWebview(_document: TextDocument, _webview: Webview): string;
|
||||
|
||||
protected getIframeElement(href: string): string {
|
||||
return `<iframe id='iframe' src='${href}' frameborder='0' style='width:100%;height:100%;'></iframe>`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 向编辑器发送数据
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-16 17:11:45
|
||||
* @protected
|
||||
* @param {Webview} webview
|
||||
* @param {*} context
|
||||
*/
|
||||
protected sendContext(webview: Webview, context: any) {
|
||||
const msg: APIMessageItem = {
|
||||
target: 'vscode',
|
||||
type: 'context',
|
||||
context,
|
||||
};
|
||||
webview.postMessage(msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 向编辑器发送数据
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-16 17:11:45
|
||||
* @protected
|
||||
* @param {Webview} webview
|
||||
* @param {*} data
|
||||
*/
|
||||
protected sendData(webview: Webview, data: any) {
|
||||
const msg: APIMessageItem = {
|
||||
target: 'vscode',
|
||||
type: 'data',
|
||||
data,
|
||||
};
|
||||
webview.postMessage(msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行指令消息
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-16 17:11:51
|
||||
* @protected
|
||||
* @param {Webview} webview
|
||||
* @param {APIMessageItem} msg
|
||||
*/
|
||||
protected commandMessage(webview: Webview, msg: APIMessageItem) {
|
||||
switch (msg.command) {
|
||||
case 'showTextDocument':
|
||||
const mosFile = new PSMosFile(msg.data);
|
||||
const uri = ctx.mosFS.getUri(mosFile.fullPath);
|
||||
window.showTextDocument(uri, { viewColumn: ViewColumn.Two });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取资源路径
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-19 16:11:47
|
||||
* @protected
|
||||
* @param {string} customEditorPath
|
||||
* @return {*} {Uri}
|
||||
*/
|
||||
protected getCustomEditorSourceUri(customEditorPath: string): Uri {
|
||||
const uri = Uri.joinPath(this.context.extensionUri, 'packages/custom-editor', customEditorPath);
|
||||
return uri.with({ scheme: 'vscode-resource' });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 resources 目录下资源文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-21 14:11:49
|
||||
* @protected
|
||||
* @param {string} resourcesPath
|
||||
* @return {*} {Uri}
|
||||
*/
|
||||
protected getResourcesUri(resourcesPath: string): Uri {
|
||||
const uri = Uri.joinPath(this.context.extensionUri, 'resources', resourcesPath);
|
||||
return uri.with({ scheme: 'vscode-resource' });
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
import { Disposable, ExtensionContext } from 'vscode';
|
||||
import { ctx } from '../../context';
|
||||
import { CustomEditorBase } from '../custom-editor-base/custom-editor-base';
|
||||
|
||||
/**
|
||||
* 索引模型编辑器
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-19 16:11:34
|
||||
* @export
|
||||
* @class IBizModelRuntimeEditorProvider
|
||||
* @extends {CustomEditorBase}
|
||||
*/
|
||||
export class IBizModelRuntimeEditorProvider extends CustomEditorBase {
|
||||
protected static readonly viewType = 'iBizCustomEditor.iBizModelRuntime';
|
||||
|
||||
public static register(context: ExtensionContext): Disposable {
|
||||
return super.register(context, IBizModelRuntimeEditorProvider);
|
||||
}
|
||||
|
||||
protected getHtmlForWebview(): string {
|
||||
const address = ctx.toolAddress;
|
||||
const resetCssUri = this.getResourcesUri('css/custom-editor-reset.css');
|
||||
const cssUri = this.getResourcesUri('css/custom-iframe-editor.css');
|
||||
const jsUri = this.getResourcesUri('js/custom-iframe-editor.js');
|
||||
const iframe = this.getIframeElement(`${address}/model-runtime/`);
|
||||
return `<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||
<title>模型运行时</title>
|
||||
<link rel='stylesheet' href='${resetCssUri}'>
|
||||
<link rel='stylesheet' href='${cssUri}'>
|
||||
</head>
|
||||
<body>
|
||||
${iframe}
|
||||
<script src='${jsUri}'></script>
|
||||
</body>
|
||||
</html>`;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
import { Disposable, ExtensionContext, TextDocument, Webview } from 'vscode';
|
||||
import { DesignToolUrl } from '../../config';
|
||||
import { ctx } from '../../context';
|
||||
import { isNilOrEmpty, notNilEmpty } from '../../util';
|
||||
import { CustomEditorBase } from '../custom-editor-base/custom-editor-base';
|
||||
|
||||
/**
|
||||
* 模型编辑器
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 15:11:47
|
||||
* @export
|
||||
* @class IBizModelUIEditorProvider
|
||||
* @implements {CustomTextEditorProvider}
|
||||
*/
|
||||
export class IBizModelUIEditorProvider extends CustomEditorBase {
|
||||
protected static readonly viewType = 'iBizCustomEditor.iBizModelUI';
|
||||
|
||||
public static register(context: ExtensionContext): Disposable {
|
||||
return super.register(context, IBizModelUIEditorProvider);
|
||||
}
|
||||
|
||||
protected getHtmlForWebview(document: TextDocument, webview: Webview): string {
|
||||
const data = document.getText();
|
||||
let json = {};
|
||||
if (notNilEmpty(data)) {
|
||||
try {
|
||||
json = JSON.parse(data);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const content = this.getModelContent(json);
|
||||
return this.getWebContainer(webview, content);
|
||||
}
|
||||
|
||||
protected getWebContainer(_webview: Webview, content: string): string {
|
||||
const resetCssUri = this.getResourcesUri('css/custom-editor-reset.css');
|
||||
const cssUri = this.getResourcesUri('css/custom-iframe-editor.css');
|
||||
const jsUri = this.getResourcesUri('js/custom-iframe-editor.js');
|
||||
return `<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||
<title>设计工具</title>
|
||||
<link rel='stylesheet' href='${resetCssUri}'>
|
||||
<link rel='stylesheet' href='${cssUri}'>
|
||||
</head>
|
||||
<body>
|
||||
${content}
|
||||
<script src='${jsUri}'></script>
|
||||
</body>
|
||||
</html>`;
|
||||
}
|
||||
|
||||
protected getModelContent(data: Record<string, null>): string {
|
||||
const address = ctx.toolAddress;
|
||||
const type = data.psmodeltype!;
|
||||
const subType = data.psmodelsubtype!;
|
||||
let url: string | null = DesignToolUrl.getUrl(subType);
|
||||
if (isNilOrEmpty(url)) {
|
||||
url = DesignToolUrl.getUrl(type);
|
||||
}
|
||||
if (notNilEmpty(url)) {
|
||||
let iframeUrl = `${address}${url?.replace('___instance___', ctx.get('psdevslnsys')!).replace('___srfkey___', data.psmodelid!)}`;
|
||||
// 临时处理补充 query 参数
|
||||
{
|
||||
const urls = iframeUrl.split('#');
|
||||
let url = urls[0];
|
||||
if (url.indexOf('?') === -1) {
|
||||
url += '?';
|
||||
} else if (!url.endsWith('&')) {
|
||||
url += '&';
|
||||
}
|
||||
url += `platform=vscode`;
|
||||
urls[0] = url;
|
||||
iframeUrl = urls.join('#');
|
||||
}
|
||||
return this.getIframeElement(iframeUrl);
|
||||
}
|
||||
return `暂未支持的类型 ${type}` + (subType ? ` or 子类型 ${subType}` : '');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
import { ExtensionContext } from 'vscode';
|
||||
|
||||
import { IBizModelUIEditorProvider } from './ibiz-model-ui/ibiz-model-ui';
|
||||
import { IBizModelRuntimeEditorProvider } from './ibiz-model-runtime/ibiz-model-runtime';
|
||||
|
||||
export function installCustomEditor(context: ExtensionContext) {
|
||||
// 注册自定义编辑器
|
||||
context.subscriptions.push(IBizModelUIEditorProvider.register(context));
|
||||
context.subscriptions.push(IBizModelRuntimeEditorProvider.register(context));
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
export { PSMosFile } from './mos-file/ps-mos-file';
|
||||
export { MosFilePickItem } from './quick-pick-item/mos-file-pick-item';
|
||||
export { TemplatePickItem } from './quick-pick-item/template-pick-item';
|
|
@ -0,0 +1,241 @@
|
|||
/**
|
||||
* 实体-模型系统文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 10:11:44
|
||||
* @export
|
||||
* @class PSMosFileBase
|
||||
*/
|
||||
export class PSMosFileBase {
|
||||
/**
|
||||
* 完整路径
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
fullpath?: any;
|
||||
/**
|
||||
* 模型标记
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
modelv2tag?: any;
|
||||
/**
|
||||
* 文件夹
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
folderflag?: any;
|
||||
/**
|
||||
* 建立时间
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
createdate?: any;
|
||||
/**
|
||||
* 标记集合
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
tags?: any;
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
psmosfilename?: any;
|
||||
/**
|
||||
* 子文件数量
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
filecnt?: any;
|
||||
/**
|
||||
* 界面行为参数
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
uiactionparams?: any;
|
||||
/**
|
||||
* 模型系统文件标识
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
psmosfileid?: any;
|
||||
/**
|
||||
* 用户建立
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
userflag?: any;
|
||||
/**
|
||||
* 更新人
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
updateman?: any;
|
||||
/**
|
||||
* 文件标记3
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
filetag3?: any;
|
||||
/**
|
||||
* 模型类型
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
psmodeltype?: any;
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
updatedate?: any;
|
||||
/**
|
||||
* 文件标记4
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
filetag4?: any;
|
||||
/**
|
||||
* 文件标记2
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
filetag2?: any;
|
||||
/**
|
||||
* 模型标识
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
psmodelid?: any;
|
||||
/**
|
||||
* 备注
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
memo?: any;
|
||||
/**
|
||||
* 系统
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
pssystemname?: any;
|
||||
/**
|
||||
* 文件标记
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
filetag?: any;
|
||||
/**
|
||||
* 颜色
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
color?: any;
|
||||
/**
|
||||
* 界面样式表
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
css?: any;
|
||||
/**
|
||||
* 系统
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
pssystemid?: any;
|
||||
/**
|
||||
* 建立人
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
createman?: any;
|
||||
/**
|
||||
* 父文件
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
ppsmosfilename?: any;
|
||||
/**
|
||||
* 界面行为集合
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
uiactions?: any;
|
||||
/**
|
||||
* 文件属性
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
fileattr?: any;
|
||||
/**
|
||||
* 父文件
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
ppsmosfileid?: any;
|
||||
/**
|
||||
* 是否启用
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
validflag?: any;
|
||||
/**
|
||||
* 排序值
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
ordervalue?: any;
|
||||
/**
|
||||
* 数据
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
data?: any;
|
||||
/**
|
||||
* 模型子类型
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
psmodelsubtype?: any;
|
||||
/**
|
||||
* 文件分类
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PSMosFileBase
|
||||
*/
|
||||
filecat?: any;
|
||||
}
|
|
@ -0,0 +1,223 @@
|
|||
import { DesignToolUrl, IBizModelFSCustomConfig } from '../../config';
|
||||
import { FileExtensionConst } from '../../constants';
|
||||
import { PSMosFileBase } from './ps-mos-file-base';
|
||||
|
||||
/**
|
||||
* 实体-模型系统文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 10:11:01
|
||||
* @export
|
||||
* @class PSMosFile
|
||||
* @extends {PSMosFileBase}
|
||||
*/
|
||||
export class PSMosFile extends PSMosFileBase {
|
||||
/**
|
||||
/**
|
||||
* 分隔符
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-14 17:11:30
|
||||
* @static
|
||||
*/
|
||||
static readonly pathSeparator = '/';
|
||||
/**
|
||||
* 主键
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PsMOSFile
|
||||
*/
|
||||
get id() {
|
||||
return this.psmodelid;
|
||||
}
|
||||
/**
|
||||
* 主文本信息
|
||||
*
|
||||
* @type {*}
|
||||
* @memberof PsMOSFile
|
||||
*/
|
||||
get name(): string {
|
||||
return this.psmosfilename;
|
||||
}
|
||||
/**
|
||||
* 父路径
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-14 17:11:44
|
||||
* @protected
|
||||
* @type {(string | null | undefined)}
|
||||
*/
|
||||
protected _pPath: string | null | undefined = undefined;
|
||||
/**
|
||||
* 父路径
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-14 17:11:40
|
||||
* @readonly
|
||||
* @type {(string | null)}
|
||||
*/
|
||||
get pPath(): string | null {
|
||||
if (this._pPath !== undefined) {
|
||||
return this._pPath;
|
||||
}
|
||||
const paths = this.path.split(PSMosFile.pathSeparator);
|
||||
if (paths.length > 2) {
|
||||
paths.pop();
|
||||
this._pPath = paths.join(PSMosFile.pathSeparator);
|
||||
} else {
|
||||
this._pPath = null;
|
||||
}
|
||||
return this._pPath;
|
||||
}
|
||||
/**
|
||||
* 路径
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PsMOSFile
|
||||
*/
|
||||
get path(): string {
|
||||
if (this.isLink) {
|
||||
return this.filetag2;
|
||||
}
|
||||
return this.psmosfileid;
|
||||
}
|
||||
/**
|
||||
* 是否为文件夹
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof PsMOSFile
|
||||
*/
|
||||
get isFolder(): boolean {
|
||||
return this.folderflag !== 0;
|
||||
}
|
||||
/**
|
||||
* 文件类型
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 10:11:16
|
||||
* @readonly
|
||||
* @type {('MODEL' | 'LINK' | 'DR' | 'GROUP' | 'RECENTS' | 'BOOKMARKS' | 'MODELREPOS')}
|
||||
*/
|
||||
get type(): 'MODEL' | 'LINK' | 'DR' | 'GROUP' | 'RECENTS' | 'BOOKMARKS' | 'MODELREPOS' {
|
||||
return this.filetag;
|
||||
}
|
||||
/**
|
||||
* 是否为链接文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-24 16:11:49
|
||||
* @readonly
|
||||
* @type {boolean}
|
||||
*/
|
||||
get isLink(): boolean {
|
||||
return this.type === 'LINK';
|
||||
}
|
||||
/**
|
||||
* 是否有索引文件
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 10:11:58
|
||||
* @readonly
|
||||
* @type {boolean}
|
||||
*/
|
||||
get ownIndex(): boolean {
|
||||
return IBizModelFSCustomConfig.ownIndex(this.path);
|
||||
}
|
||||
/**
|
||||
* 文件类型
|
||||
*
|
||||
* @type {(0 | 1 | 3)} 0:文件、1:文件夹、3:文件夹并默认展开
|
||||
* @memberof PsMOSFile
|
||||
*/
|
||||
folderflag!: 0 | 1 | 3;
|
||||
|
||||
/**
|
||||
* 指定扩展名
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-18 11:11:51
|
||||
* @protected
|
||||
* @type {string}
|
||||
*/
|
||||
protected _extension?: string;
|
||||
|
||||
/**
|
||||
* 当前文件扩展类型
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-16 17:11:45
|
||||
* @readonly
|
||||
* @type {string}
|
||||
*/
|
||||
get extension(): string {
|
||||
if (this._extension) {
|
||||
return this._extension;
|
||||
}
|
||||
const type = this.psmodeltype as string;
|
||||
const subType = this.psmodelsubtype as string;
|
||||
if (DesignToolUrl.has(subType) || DesignToolUrl.has(type)) {
|
||||
return FileExtensionConst.MODEL_UI;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 特殊指定扩展名称
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-18 11:11:36
|
||||
*/
|
||||
set extension(str: string) {
|
||||
this._extension = str;
|
||||
}
|
||||
|
||||
get fullPath(): string {
|
||||
return `${this.path}${this.extension}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of PSMosFile.
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 10:11:51
|
||||
* @param {Record<string, any>} data
|
||||
*/
|
||||
constructor(data: Record<string, any>) {
|
||||
super();
|
||||
this.fill(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充数据
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-10 10:11:14
|
||||
* @protected
|
||||
* @param {*} data
|
||||
*/
|
||||
protected fill(data: any) {
|
||||
const self = this as any;
|
||||
for (const key in data) {
|
||||
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||||
const val = data[key];
|
||||
self[key.toLowerCase()] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转为 JSON 字符串
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-11 09:11:37
|
||||
* @return {*} {string}
|
||||
*/
|
||||
toString(): string {
|
||||
try {
|
||||
return JSON.stringify(this, null, 2);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
import { QuickPickItem } from 'vscode';
|
||||
import { notNilEmpty } from '../../util';
|
||||
import { PSMosFile } from '../mos-file/ps-mos-file';
|
||||
|
||||
/**
|
||||
* mos file 选择项
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 11:12:49
|
||||
* @export
|
||||
* @class MosFilePickItem
|
||||
* @implements {QuickPickItem}
|
||||
*/
|
||||
export class MosFilePickItem implements QuickPickItem {
|
||||
/**
|
||||
* 显示 label 内容
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 11:12:52
|
||||
* @type {string}
|
||||
*/
|
||||
readonly label!: string;
|
||||
readonly description?: string | undefined;
|
||||
readonly detail?: string | undefined;
|
||||
readonly picked?: boolean | undefined;
|
||||
readonly alwaysShow?: boolean | undefined;
|
||||
readonly data: PSMosFile;
|
||||
|
||||
/**
|
||||
* Creates an instance of MosFilePickItem.
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 11:12:13
|
||||
* @param {PSMosFile} mosFile
|
||||
*/
|
||||
constructor(mosFile: PSMosFile) {
|
||||
this.data = mosFile;
|
||||
if (notNilEmpty(mosFile.filetag4)) {
|
||||
this.label = mosFile.filetag4;
|
||||
}
|
||||
if (notNilEmpty(this.label)) {
|
||||
this.description = mosFile.psmosfilename;
|
||||
} else {
|
||||
this.label = mosFile.psmosfilename;
|
||||
}
|
||||
this.detail = mosFile.filetag2 || mosFile.psmosfileid;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
import { QuickPickItem } from 'vscode';
|
||||
|
||||
/**
|
||||
* 模板选择项
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 11:12:27
|
||||
* @export
|
||||
* @class TemplatePickItem
|
||||
* @implements {QuickPickItem}
|
||||
*/
|
||||
export class TemplatePickItem implements QuickPickItem {
|
||||
readonly label: string;
|
||||
readonly description?: string | undefined;
|
||||
readonly detail?: string | undefined;
|
||||
readonly picked?: boolean | undefined;
|
||||
readonly alwaysShow?: boolean | undefined;
|
||||
readonly data: Record<string, string>;
|
||||
|
||||
/**
|
||||
* Creates an instance of TemplatePickItem.
|
||||
* @author chitanda
|
||||
* @date 2021-12-07 11:12:30
|
||||
* @param {Record<string, string>} temp
|
||||
*/
|
||||
constructor(temp: Record<string, string>) {
|
||||
this.data = temp;
|
||||
let description = '';
|
||||
if (temp.templtype === 'PSPF') {
|
||||
description = '前端模板';
|
||||
if (temp.pspfname) {
|
||||
description += ` - ${temp.pspfname}`;
|
||||
}
|
||||
} else {
|
||||
description = '后端模板';
|
||||
if (temp.pssfname) {
|
||||
description += ` - ${temp.pssfname}`;
|
||||
}
|
||||
}
|
||||
this.label = temp.psdevslntemplname;
|
||||
this.description = description;
|
||||
if (temp.memo) {
|
||||
this.detail = temp.memo;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import { ExtensionContext } from 'vscode';
|
||||
import { ModelExpTree } from './model-exp/model-exp';
|
||||
|
||||
/**
|
||||
* 安装 资源管理器
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 10:11:47
|
||||
* @export
|
||||
* @param {ExtensionContext} context
|
||||
*/
|
||||
export function installExplorer(context: ExtensionContext): void {
|
||||
new ModelExpTree(context);
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
import { ExtensionContext, window } from 'vscode';
|
||||
import { ExplorerConst } from '../../constants/explorer/explorer';
|
||||
import { ctx } from '../../context';
|
||||
import { ModelExpTreeProvider } from './provider/model-exp-tree';
|
||||
|
||||
/**
|
||||
* 模型导航资源管理器
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 09:11:18
|
||||
* @export
|
||||
* @class ModelExpTree
|
||||
*/
|
||||
export class ModelExpTree {
|
||||
constructor(context: ExtensionContext) {
|
||||
const treeDataProvider = new ModelExpTreeProvider(context, ctx.mosFS);
|
||||
context.subscriptions.push(window.createTreeView(ExplorerConst.MODEL_EXP_TREE, { treeDataProvider, showCollapseAll: true }));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
import { FileType, TreeItem, TreeItemCollapsibleState } from 'vscode';
|
||||
import { CommandConst } from '../../../constants';
|
||||
import { Entry } from '../../../file-system';
|
||||
|
||||
/**
|
||||
* 模型树节点
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 12:11:35
|
||||
* @export
|
||||
* @class ModelTreeItem
|
||||
* @extends {TreeItem}
|
||||
*/
|
||||
export class ModelTreeItem extends TreeItem {
|
||||
constructor(protected file: Entry) {
|
||||
super(file.getUri(), file.type === FileType.Directory ? TreeItemCollapsibleState.Collapsed : TreeItemCollapsibleState.None);
|
||||
this.label = file.logicName || file.name;
|
||||
if (file.type === FileType.File || file.type === (FileType.SymbolicLink | FileType.File)) {
|
||||
this.command = { command: CommandConst.MOS_FS.OPEN_FILE, title: '打开文件', arguments: [file.fullPath] };
|
||||
}
|
||||
this.contextValue = file.content.type;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
import { Event, EventEmitter, ExtensionContext, TreeDataProvider } from 'vscode';
|
||||
import { Entry, IBizMosFSCustom } from '../../../file-system';
|
||||
import { ModelTreeItem } from '../model-tree-item/model-tree-item';
|
||||
|
||||
/**
|
||||
* 模型导航树
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-30 10:11:47
|
||||
* @export
|
||||
* @class ModelExpTreeProvider
|
||||
* @implements {TreeDataProvider<Entry>}
|
||||
*/
|
||||
export class ModelExpTreeProvider implements TreeDataProvider<Entry> {
|
||||
private _onDidChangeTreeData: EventEmitter<any> = new EventEmitter<any>();
|
||||
onDidChangeTreeData?: Event<void | Entry | null | undefined> | undefined = this._onDidChangeTreeData.event;
|
||||
|
||||
constructor(protected context: ExtensionContext, protected iBizMosFS: IBizMosFSCustom) {}
|
||||
|
||||
async getTreeItem(file: Entry): Promise<ModelTreeItem> {
|
||||
const treeItem = new ModelTreeItem(file);
|
||||
return treeItem;
|
||||
}
|
||||
|
||||
async getChildren(file?: Entry): Promise<Entry[]> {
|
||||
const entries: Entry[] = await this.iBizMosFS.loadDir(file?.path || '');
|
||||
return entries;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
import { ExtensionContext, workspace } from 'vscode';
|
||||
import { installCommands } from './commands';
|
||||
import { loadConfig } from './config';
|
||||
import { ctx, initCtx } from './context';
|
||||
import { installCustomEditor } from './custom-editor';
|
||||
import { installExplorer } from './explorer';
|
||||
import { installLanguages } from './languages';
|
||||
import { login, serviceApi } from './service';
|
||||
import { wsOutput } from './terminal';
|
||||
import { Interceptor, isNilOrEmpty, notNilEmpty } from './util';
|
||||
import { Websocket } from './ws';
|
||||
|
||||
export function activate(context: ExtensionContext): void {
|
||||
// 初始化插件上下文
|
||||
initCtx(context);
|
||||
// 注册系统虚拟文件适配器
|
||||
workspace.registerFileSystemProvider('ibizmos', ctx.mosFS, { isCaseSensitive: true });
|
||||
// 注册拦截器
|
||||
new Interceptor();
|
||||
// 安装命令
|
||||
installCommands(context);
|
||||
// 安装自定义资源管理器
|
||||
installExplorer(context);
|
||||
// 安装语言服务适配器
|
||||
installLanguages(context);
|
||||
// 注册自定义编辑器
|
||||
installCustomEditor(context);
|
||||
// 一些异步激活的东西
|
||||
asyncActivate(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* 需要异步激活的参数
|
||||
*
|
||||
* @author chitanda
|
||||
* @date 2021-11-29 10:11:36
|
||||
* @export
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
export async function asyncActivate(context: ExtensionContext): Promise<void> {
|
||||
// 读取配置文件
|
||||
await loadConfig();
|
||||
{
|
||||
// 从 vscode 缓存中初始化登录信息
|
||||
const token = await context.secrets.get(ctx.tokenKey);
|
||||
if (notNilEmpty(token)) {
|
||||
ctx.setToken(token!);
|
||||
}
|
||||
}
|
||||
{
|
||||
// 在读取配置文件后,获取应用基本信息
|
||||
const appData = (await serviceApi.getAppData()) as Record<string, string>;
|
||||
if (notNilEmpty(appData)) {
|
||||
// 初始化 mqtt 服务
|
||||
ctx.setWS(new Websocket({ psdsconsoleurl: appData.psdsconsoleurl, psdevslnsysid: appData.psdevslnsysid }));
|
||||
// 初始化系统 output terminal
|
||||
wsOutput.init(ctx.ws, ctx.get('psdevslnsysname') || '未知');
|
||||
}
|
||||
}
|
||||
{
|
||||
// 未登录提示登录,已登录时自动更新工作区
|
||||
const token = ctx.token;
|
||||
if (isNilOrEmpty(token)) {
|
||||
login.notLogged();
|
||||
}
|
||||
}
|
||||
ctx.completedEnd();
|
||||
}
|
||||
|
||||
export function deactivate() {}
|