chore: import upstream snapshot with attribution
@@ -0,0 +1,5 @@
|
||||
.idea
|
||||
runtime
|
||||
.git
|
||||
|
||||
**/node_modules/**
|
||||
@@ -0,0 +1,11 @@
|
||||
node_modules
|
||||
.next
|
||||
dist
|
||||
lib
|
||||
|
||||
**/.next/**
|
||||
**/dist/**
|
||||
**/static/**
|
||||
**/build/**
|
||||
**/public/**
|
||||
**/diagram.js
|
||||
@@ -0,0 +1,2 @@
|
||||
# 第三方依赖太多,导致项目主语言被冲散
|
||||
*.js linguist-language=typescript
|
||||
@@ -0,0 +1,13 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
custom: ['https://think-1256095494.cos.ap-shanghai.myqcloud.com/think-wechat.jpg', 'https://think-1256095494.cos.ap-shanghai.myqcloud.com/think-alipay.jpg']
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: 功能请求
|
||||
about: 为项目提供想法
|
||||
title: "[FEATURE]"
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## 请描述功能点
|
||||
|
||||
## 也可提供功能的实现方案
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: Bug 反馈
|
||||
about: 反馈 Bug 以改善项目
|
||||
title: "[BUG]"
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## 1. 问题的表现是怎样的?
|
||||
|
||||
## 2. 问题的复现路径
|
||||
|
||||
## 3. 预期是什么?
|
||||
@@ -0,0 +1,24 @@
|
||||
node_modules
|
||||
.DS_Store
|
||||
.idea
|
||||
|
||||
dist
|
||||
dist-ssr
|
||||
coverage
|
||||
test-results
|
||||
.pnpm-store
|
||||
tsconfig.tsbuildinfo
|
||||
|
||||
.env
|
||||
*.local
|
||||
*.cache
|
||||
*error.log
|
||||
*debug.log
|
||||
*.conf
|
||||
|
||||
**/prod.yaml
|
||||
|
||||
scripts/update.sh
|
||||
|
||||
output
|
||||
runtime
|
||||
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
pnpm run precommit
|
||||
@@ -0,0 +1,9 @@
|
||||
node_modules
|
||||
.next
|
||||
dist
|
||||
lib
|
||||
|
||||
**/.next/**
|
||||
**/dist/**
|
||||
**/build/**
|
||||
**/public/**
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"quoteProps": "consistent",
|
||||
"bracketSpacing": true,
|
||||
"jsxBracketSameLine": false,
|
||||
"arrowParens": "always",
|
||||
"trailingComma": "es5",
|
||||
"tabWidth": 2,
|
||||
"semi": true,
|
||||
"printWidth": 120,
|
||||
"endOfLine": "lf"
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
module.exports = {
|
||||
processors: [],
|
||||
plugins: ['stylelint-order'],
|
||||
extends: ['stylelint-config-standard', 'stylelint-config-css-modules'],
|
||||
rules: {
|
||||
'selector-class-pattern': [
|
||||
// 命名规范 -
|
||||
'(.)+$',
|
||||
{
|
||||
message: 'Expected class selector to be kebab-case',
|
||||
},
|
||||
],
|
||||
'string-quotes': 'single', // 单引号
|
||||
'at-rule-empty-line-before': null,
|
||||
'at-rule-no-unknown': null,
|
||||
'at-rule-name-case': 'lower', // 指定@规则名的大小写
|
||||
'length-zero-no-unit': true, // 禁止零长度的单位(可自动修复)
|
||||
'shorthand-property-no-redundant-values': true, // 简写属性
|
||||
'number-leading-zero': 'always', // 小数不带0
|
||||
'declaration-block-no-duplicate-properties': true, // 禁止声明快重复属性
|
||||
'no-descending-specificity': true, // 禁止在具有较高优先级的选择器后出现被其覆盖的较低优先级的选择器。
|
||||
'selector-max-id': 3, // 限制一个选择器中 ID 选择器的数量
|
||||
'max-nesting-depth': 5,
|
||||
'indentation': [
|
||||
2,
|
||||
{
|
||||
// 指定缩进 warning 提醒
|
||||
severity: 'warning',
|
||||
},
|
||||
],
|
||||
'order/properties-order': [
|
||||
// 规则顺序
|
||||
'position',
|
||||
'top',
|
||||
'right',
|
||||
'bottom',
|
||||
'left',
|
||||
'z-index',
|
||||
'display',
|
||||
'float',
|
||||
'width',
|
||||
'height',
|
||||
'max-width',
|
||||
'max-height',
|
||||
'min-width',
|
||||
'min-height',
|
||||
'padding',
|
||||
'padding-top',
|
||||
'padding-right',
|
||||
'padding-bottom',
|
||||
'padding-left',
|
||||
'margin',
|
||||
'margin-top',
|
||||
'margin-right',
|
||||
'margin-bottom',
|
||||
'margin-left',
|
||||
'margin-collapse',
|
||||
'margin-top-collapse',
|
||||
'margin-right-collapse',
|
||||
'margin-bottom-collapse',
|
||||
'margin-left-collapse',
|
||||
'overflow',
|
||||
'overflow-x',
|
||||
'overflow-y',
|
||||
'clip',
|
||||
'clear',
|
||||
'font',
|
||||
'font-family',
|
||||
'font-size',
|
||||
'font-smoothing',
|
||||
'osx-font-smoothing',
|
||||
'font-style',
|
||||
'font-weight',
|
||||
'line-height',
|
||||
'letter-spacing',
|
||||
'word-spacing',
|
||||
'color',
|
||||
'text-align',
|
||||
'text-decoration',
|
||||
'text-indent',
|
||||
'text-overflow',
|
||||
'text-rendering',
|
||||
'text-size-adjust',
|
||||
'text-shadow',
|
||||
'text-transform',
|
||||
'word-break',
|
||||
'word-wrap',
|
||||
'white-space',
|
||||
'vertical-align',
|
||||
'list-style',
|
||||
'list-style-type',
|
||||
'list-style-position',
|
||||
'list-style-image',
|
||||
'pointer-events',
|
||||
'cursor',
|
||||
'background',
|
||||
'background-color',
|
||||
'border',
|
||||
'border-radius',
|
||||
'content',
|
||||
'outline',
|
||||
'outline-offset',
|
||||
'opacity',
|
||||
'filter',
|
||||
'visibility',
|
||||
'size',
|
||||
'transform',
|
||||
],
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
FROM node:18-alpine as builder
|
||||
COPY . /app/
|
||||
WORKDIR /app
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
RUN npm config set registry http://mirrors.cloud.tencent.com/npm/
|
||||
RUN npm i -g pm2 @nestjs/cli pnpm
|
||||
RUN apk --no-cache add bash dos2unix \
|
||||
&& find . -name "*.sh" -exec dos2unix {} \; \
|
||||
&& apk del dos2unix
|
||||
RUN bash build-output.sh
|
||||
|
||||
FROM node:18-alpine as prod
|
||||
ENV TZ=Asia/Shanghai
|
||||
COPY --from=builder /app/docker/* /app/docker/
|
||||
COPY --from=builder /app/output/ /app/
|
||||
WORKDIR /app
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
RUN npm config set registry http://mirrors.cloud.tencent.com/npm/
|
||||
RUN set -x \
|
||||
&& apk update \
|
||||
&& apk add --no-cache tzdata redis \
|
||||
&& chmod +x /app/docker/start.sh \
|
||||
&& npm i -g pm2 @nestjs/cli pnpm \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
ENTRYPOINT sh /app/docker/start.sh
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 fantasticit
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,56 @@
|
||||
# think
|
||||
|
||||
## 声明
|
||||
|
||||
1. 请先阅读[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)
|
||||
2. 如果希望参与独立编辑器开发,可以到[这个仓库](https://github.com/fantasticit/sailkit)参与
|
||||
3. 由于服务器成本和免费的 SSL 证书也没了,网站不定期会挂,敬请谅解
|
||||
|
||||
## 简介
|
||||
|
||||
Think 是一款开源知识管理工具。通过独立的知识库空间,结构化地组织在线协作文档,实现知识的积累与沉淀,促进知识的复用与流通。同时支持多人协作文档。使用的技术如下:
|
||||
|
||||
- `MySQL`:数据存储
|
||||
- `next.js`:前端页面框架
|
||||
- `nest.js`:服务端框架
|
||||
- `tiptap`:编辑器及文档协作
|
||||
|
||||
可访问[云策文档帮助中心](https://think.codingit.cn/share/wiki/WoiR8N5uj4i7),查看更多功能文档。
|
||||
|
||||
## 链接
|
||||
|
||||
[云策文档](https://think.codingit.cn)已经部署上线,可前往注册使用。
|
||||
|
||||
## 预览
|
||||
|
||||
<details>
|
||||
<summary>查看预览图</summary>
|
||||
<img alt="知识库" src="http://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-20/YN67GM4VQMBTZFZ88TYP8X/image.png" width="420" />
|
||||
<img alt="新建文档" src="http://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-20/YN67GM4VQMBTZFZ88TYPQX/image.png" width="420" />
|
||||
<img alt="编辑器" src="http://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-20/YN67GM4VQMBTZFZ88TYPZX/image.png" width="420" />
|
||||
</details>
|
||||
|
||||
## 项目开发
|
||||
|
||||
[项目开发说明](./let-us-start.md)。
|
||||
|
||||
## 自动化部署
|
||||
|
||||
> 思路:在服务器部署 webhook,然后在 github setting 中配置相应钩子,实现自动化部署
|
||||
|
||||
参考:[webhook](https://github.com/adnanh/webhook/blob/master/docs/Hook-Examples.md#incoming-github-webhook)
|
||||
|
||||
## 赞助
|
||||
|
||||
如果这个项目对您有帮助,并且您希望支持该项目的开发和维护,请随时扫描一下二维码进行捐赠。非常感谢您的捐款,谢谢!
|
||||
|
||||
<div style="display: flex;">
|
||||
<img width="300" alt="alipay" src="https://think-1256095494.cos.ap-shanghai.myqcloud.com/think-alipay.jpg" />
|
||||
<img width="300" alt="wechat" src="https://think-1256095494.cos.ap-shanghai.myqcloud.com/think-wechat.jpg" />
|
||||
</div>
|
||||
|
||||
## 贡献者
|
||||
|
||||
感谢所有为本项目作出贡献的同学!
|
||||
|
||||
<a href="https://github.com/fantasticit/think/contributors"><img src="https://opencollective.com/think/contributors.svg?width=890" /></a>
|
||||
@@ -0,0 +1,7 @@
|
||||
# WeHub 来源说明
|
||||
|
||||
- 原始项目:`fantasticit/think`
|
||||
- 原始仓库:https://github.com/fantasticit/think
|
||||
- 导入方式:上游默认分支的最新快照
|
||||
- 原作者、版权和许可证信息以原始仓库及本仓库 LICENSE 为准
|
||||
- 本文件仅用于记录来源,不代表 WeHub 是原项目作者
|
||||
@@ -0,0 +1,82 @@
|
||||
#! /bin/bash
|
||||
# 该脚本只保留生产环境运行所需文件到统一目录
|
||||
if [ ! -f './config/prod.yaml' ]; then
|
||||
echo "缺少 config/prod.yaml 文件,可参考 docker-prod-sample.yaml 进行配置"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 构建
|
||||
pnpm fetch --prod
|
||||
pnpm install
|
||||
pnpm run build
|
||||
|
||||
outputDir="output"
|
||||
|
||||
# 新建输出目录
|
||||
if [ -d ${outputDir} ]; then
|
||||
rm -rfv ${outputDir}
|
||||
fi
|
||||
mkdir -p ${outputDir}
|
||||
cd ${outputDir}
|
||||
mkdir -p packages
|
||||
mkdir -p packages/config
|
||||
mkdir -p packages/constants
|
||||
mkdir -p packages/domains
|
||||
mkdir -p packages/client
|
||||
mkdir -p packages/server
|
||||
cd ../
|
||||
|
||||
# 复制文件
|
||||
cp -v -L -r config ${outputDir}
|
||||
cd ${outputDir}/config
|
||||
rm -f dev.yaml
|
||||
cd ../../
|
||||
cp -v -L package.json ${outputDir}
|
||||
cp -v -L pnpm-lock.yaml ${outputDir}
|
||||
cp -v -L pnpm-workspace.yaml ${outputDir}
|
||||
|
||||
# packages/config
|
||||
cd packages/config
|
||||
configOutput="../../${outputDir}/packages/config"
|
||||
cp -v -L package.json ${configOutput}
|
||||
cp -v -L -r lib ${configOutput}
|
||||
cd ../../
|
||||
|
||||
# packages/constants
|
||||
cd packages/constants
|
||||
constantsOutput="../../${outputDir}/packages/constants"
|
||||
cp -v -L package.json ${constantsOutput}
|
||||
cp -v -L -r lib ${constantsOutput}
|
||||
cd ../../
|
||||
|
||||
# packages/domains
|
||||
cd packages/domains
|
||||
domainsOutput="../../${outputDir}/packages/domains"
|
||||
cp -v -L package.json ${domainsOutput}
|
||||
cp -v -L -r lib ${domainsOutput}
|
||||
cd ../../
|
||||
|
||||
# packages/client
|
||||
cd packages/client
|
||||
clientOutput="../../${outputDir}/packages/client"
|
||||
cp -v -L package.json ${clientOutput}
|
||||
cp -v -L prod-server.js ${clientOutput}
|
||||
cp -v -L -r public ${clientOutput}
|
||||
cp -v -L -r .next ${clientOutput}
|
||||
cd ../../
|
||||
|
||||
# packages/server
|
||||
cd packages/server
|
||||
serverOutput="../../${outputDir}/packages/server"
|
||||
cp -v -L package.json ${serverOutput}
|
||||
cp -v -L nest-cli.json ${serverOutput}
|
||||
cp -v -L -r dist ${serverOutput}
|
||||
cd ../../
|
||||
|
||||
# @see https://github.com/typicode/husky/issues/914#issuecomment-826768549
|
||||
cd ${outputDir}
|
||||
npm set-script prepare ""
|
||||
pnpm install -r --offline --prod
|
||||
cd ../
|
||||
|
||||
echo "${outputDir} 打包完成"
|
||||
@@ -0,0 +1,74 @@
|
||||
# 开发环境配置
|
||||
client:
|
||||
port: 5001
|
||||
assetPrefix: '/'
|
||||
apiUrl: 'http://localhost:5002/api'
|
||||
collaborationUrl: 'ws://localhost:5003'
|
||||
# 预先连接的来源,空格分割(比如图片存储服务器)
|
||||
dnsPrefetch: '//wipi.oss-cn-shanghai.aliyuncs.com'
|
||||
# 站点地址(如:https://think.codingit.cn/),一定要设置,否则会出现 cookie、跨域等问题
|
||||
siteUrl:
|
||||
'http://localhost:5001'
|
||||
# 一定要设置,否则会出现 cookie、跨域等问题,注意如果网页部署在 https://think.codingit.cn,那这里的值应当为 .codingit.cn(没有 think)
|
||||
siteDomain: ''
|
||||
|
||||
server:
|
||||
prefix: '/api'
|
||||
port: 5002
|
||||
collaborationPort: 5003
|
||||
maxDocumentVersion: 20 # 最大版本记录数
|
||||
logRetainDays: 3 # 日志保留天数,比如只保留近三天日志
|
||||
enableRateLimit: true # 是否限流
|
||||
rateLimitWindowMs: 60000 # 限流时间
|
||||
rateLimitMax: 1000 # 单位限流时间内单个 ip 最大访问数量
|
||||
email: # 邮箱服务,参考 http://help.163.com/09/1223/14/5R7P6CJ600753VB8.html?servCode=6010376 获取 SMTP 配置
|
||||
host: ''
|
||||
port: 465
|
||||
user: ''
|
||||
password: ''
|
||||
admin:
|
||||
name: 'admin' # 注意修改
|
||||
password: 'admin' # 注意修改
|
||||
email: 'admin@think.com' # 注意修改为真实邮箱地址
|
||||
|
||||
# 数据库配置
|
||||
db:
|
||||
mysql:
|
||||
host: '127.0.0.1'
|
||||
username: 'think'
|
||||
password: 'think'
|
||||
database: 'think'
|
||||
port: 3306
|
||||
charset: 'utf8mb4'
|
||||
timezone: '+08:00'
|
||||
synchronize: true
|
||||
redis:
|
||||
host: '127.0.0.1'
|
||||
port: '6379'
|
||||
password: 'root'
|
||||
db: 0
|
||||
|
||||
# oss 文件存储服务
|
||||
oss:
|
||||
local:
|
||||
enable: true
|
||||
# 线上更改为服务端地址(如:https://api.codingit.cn)
|
||||
server: 'http://localhost:5002'
|
||||
s3:
|
||||
enable: false
|
||||
config:
|
||||
# isp 提供商,可选 minio,s3,aliyun,tencent
|
||||
cloudisp: 'minio'
|
||||
accessKeyId: ''
|
||||
secretAccessKey: ''
|
||||
bucket: ''
|
||||
region: ''
|
||||
# 仅cloudisp 的值为 minio/s3 时配置,其它提供商为空
|
||||
forcePathStyle: false
|
||||
# 仅cloudisp 的值为 minio 时配置,其它提供商为空
|
||||
endpoint: ''
|
||||
|
||||
# jwt 配置
|
||||
jwt:
|
||||
secretkey: 'zA_Think+KNOWLEDGE+WIKI+DOCUMENTS@2022'
|
||||
expiresIn: '6h'
|
||||
@@ -0,0 +1,75 @@
|
||||
# 开发环境配置
|
||||
client:
|
||||
port: 5001
|
||||
assetPrefix: '/'
|
||||
apiUrl: 'http://localhost:5002/api'
|
||||
collaborationUrl: 'ws://localhost:5003'
|
||||
# 以下为页面 meta 配置
|
||||
seoAppName: '云策文档'
|
||||
seoDescription: '云策文档是一款开源知识管理工具。通过独立的知识库空间,结构化地组织在线协作文档,实现知识的积累与沉淀,促进知识的复用与流通。'
|
||||
seoKeywords: '云策文档,协作,文档,fantasticit,https://github.com/fantasticit/think'
|
||||
# 预先连接的来源,空格分割(比如图片存储服务器)
|
||||
dnsPrefetch: '//wipi.oss-cn-shanghai.aliyuncs.com'
|
||||
# 站点地址(如:http://think.codingit.cn/),一定要设置,否则会出现 cookie、跨域等问题
|
||||
siteUrl: 'http://localhost:5001'
|
||||
siteDomain: ''
|
||||
|
||||
server:
|
||||
prefix: '/api'
|
||||
port: 5002
|
||||
collaborationPort: 5003
|
||||
maxDocumentVersion: 20 # 最大版本记录数
|
||||
logRetainDays: 3 # 日志保留天数,比如只保留近三天日志
|
||||
enableRateLimit: true # 是否限流
|
||||
rateLimitWindowMs: 60000 # 限流时间
|
||||
rateLimitMax: 1000 # 单位限流时间内单个 ip 最大访问数量
|
||||
email: # 邮箱服务,参考 http://help.163.com/09/1223/14/5R7P6CJ600753VB8.html?servCode=6010376 获取 SMTP 配置
|
||||
host: ''
|
||||
port: 465
|
||||
user: ''
|
||||
password: ''
|
||||
admin:
|
||||
name: 'admin' # 注意修改
|
||||
password: 'admin' # 注意修改
|
||||
email: 'admin@think.com' # 注意修改为真实邮箱地址
|
||||
|
||||
# 数据库配置
|
||||
db:
|
||||
mysql:
|
||||
host: 'mysql-for-think'
|
||||
username: 'think'
|
||||
password: 'think'
|
||||
database: 'think'
|
||||
port: 3306
|
||||
charset: 'utf8mb4'
|
||||
timezone: '+08:00'
|
||||
synchronize: true
|
||||
redis:
|
||||
host: 'redis-for-think'
|
||||
port: '6379'
|
||||
password: 'root'
|
||||
|
||||
# oss 文件存储服务
|
||||
oss:
|
||||
local:
|
||||
enable: true
|
||||
# 线上更改为服务端地址(如:https://api.codingit.cn)
|
||||
server: 'http://localhost:5002'
|
||||
s3:
|
||||
enable: true
|
||||
config:
|
||||
# isp 提供商,可选 minio,s3,aliyun,tencent
|
||||
cloudisp: 'minio'
|
||||
accessKeyId: ''
|
||||
secretAccessKey: ''
|
||||
bucket: ''
|
||||
region: ''
|
||||
# 仅cloudisp 的值为 minio/s3 时配置,其它提供商为空
|
||||
forcePathStyle: false
|
||||
# 仅cloudisp 的值为 minio 时配置,其它提供商为空
|
||||
endpoint: ''
|
||||
|
||||
# jwt 配置
|
||||
jwt:
|
||||
secretkey: 'zA_Think+KNOWLEDGE+WIKI+DOCUMENTS@2022'
|
||||
expiresIn: '6h'
|
||||
@@ -0,0 +1,60 @@
|
||||
version: '3'
|
||||
services:
|
||||
think:
|
||||
build:
|
||||
context: .
|
||||
image: think
|
||||
container_name: think
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
- ./runtime/static:/app/packages/server/static
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
expose:
|
||||
- '5001-5003'
|
||||
ports:
|
||||
- '5001-5003:5001-5003'
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
networks:
|
||||
- think
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
restart: always
|
||||
container_name: mysql-for-think
|
||||
volumes:
|
||||
- ./runtime/mysql:/var/lib/mysql
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
- MYSQL_ROOT_PASSWORD=root
|
||||
- MYSQL_DATABASE=think
|
||||
- MYSQL_USER=think
|
||||
- MYSQL_PASSWORD=think
|
||||
expose:
|
||||
- '3306'
|
||||
ports:
|
||||
- '3306:3306'
|
||||
command:
|
||||
- '--character-set-server=utf8mb4'
|
||||
- '--collation-server=utf8mb4_unicode_ci'
|
||||
networks:
|
||||
- think
|
||||
redis:
|
||||
image: redis:latest
|
||||
restart: always
|
||||
container_name: redis-for-think
|
||||
command: >
|
||||
--requirepass root
|
||||
expose:
|
||||
- '6379'
|
||||
ports:
|
||||
- '6379:6379'
|
||||
volumes:
|
||||
- ./runtime/redis:/data
|
||||
privileged: true
|
||||
networks:
|
||||
- think
|
||||
networks:
|
||||
think:
|
||||
driver: bridge
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
### Author:jonnyan404
|
||||
### date:2022年5月22日
|
||||
|
||||
pnpm run pm2
|
||||
pm2 startup
|
||||
pm2 save
|
||||
pm2 logs
|
||||
@@ -0,0 +1,12 @@
|
||||
# 以下为前台动态渲染的配置,修改后,无需打包,重启服务即可
|
||||
dynamic:
|
||||
# 输入 logo 的图片地址
|
||||
logo: ''
|
||||
appName: '云策文档'
|
||||
appDescription: '云策文档是一款开源知识管理工具。通过独立的知识库空间,结构化地组织在线协作文档,实现知识的积累与沉淀,促进知识的复用与流通。'
|
||||
appKeywords: '云策文档,协作,文档,fantasticit,https://github.com/fantasticit/think'
|
||||
# 版权信息,可以是 HTML
|
||||
copyrightInformation: '<p>Develop by fantasticit</p>'
|
||||
# 外部跳转按钮配置
|
||||
externalButtonText: 'Github'
|
||||
externalButtonURL: 'https://github.com/fantasticit/think'
|
||||
@@ -0,0 +1,178 @@
|
||||
# 使用 docker-compose 进行项目部署
|
||||
|
||||
> 目标:使用 http://dev.think.codingit.cn 访问客户端;使用 http://dev.api.codingit.cn 访问服务端。
|
||||
|
||||
## 1. 新建 config/prod.yaml
|
||||
|
||||
```yaml
|
||||
# 开发环境配置
|
||||
client:
|
||||
port: 5001
|
||||
assetPrefix: '/'
|
||||
apiUrl: 'http://dev.api.codingit.cn/api'
|
||||
collaborationUrl: 'ws://dev.api.codingit.cn/think/wss'
|
||||
# 以下为页面 meta 配置
|
||||
seoAppName: '云策文档'
|
||||
seoDescription: '云策文档是一款开源知识管理工具。通过独立的知识库空间,结构化地组织在线协作文档,实现知识的积累与沉淀,促进知识的复用与流通。'
|
||||
seoKeywords: '云策文档,协作,文档,fantasticit,https://github.com/fantasticit/think'
|
||||
# 预先连接的来源,空格分割(比如图片存储服务器)
|
||||
dnsPrefetch: '//wipi.oss-cn-shanghai.aliyuncs.com'
|
||||
# 站点地址(如:http://think.codingit.cn/),一定要设置,否则会出现 cookie、跨域等问题
|
||||
siteUrl: 'http://dev.think.codingit.cn'
|
||||
siteDomain: ''
|
||||
|
||||
server:
|
||||
prefix: '/api'
|
||||
port: 5002
|
||||
collaborationPort: 5003
|
||||
maxDocumentVersion: 20 # 最大版本记录数
|
||||
logRetainDays: 3 # 日志保留天数,比如只保留近三天日志
|
||||
enableRateLimit: true # 是否限流
|
||||
rateLimitWindowMs: 60000 # 限流时间
|
||||
rateLimitMax: 1000 # 单位限流时间内单个 ip 最大访问数量
|
||||
email: # 邮箱服务,参考 http://help.163.com/09/1223/14/5R7P6CJ600753VB8.html?servCode=6010376 获取 SMTP 配置
|
||||
host: ''
|
||||
port: 465
|
||||
user: ''
|
||||
password: ''
|
||||
admin:
|
||||
name: 'admin' # 注意修改
|
||||
password: 'admin' # 注意修改
|
||||
email: 'admin@think.com' # 注意修改为真实邮箱地址
|
||||
|
||||
# 数据库配置
|
||||
db:
|
||||
mysql:
|
||||
host: 'mysql-for-think'
|
||||
username: 'think'
|
||||
password: 'think'
|
||||
database: 'think'
|
||||
port: 3306
|
||||
charset: 'utf8mb4'
|
||||
timezone: '+08:00'
|
||||
synchronize: true
|
||||
redis:
|
||||
host: 'redis-for-think'
|
||||
port: '6379'
|
||||
password: 'root'
|
||||
|
||||
# oss 文件存储服务
|
||||
oss:
|
||||
local:
|
||||
enable: true
|
||||
# 线上更改为服务端地址(如:https://api.codingit.cn)
|
||||
server: 'http://dev.api.codingit.cn'
|
||||
# 以下为各厂商 sdk 配置,不要修改字段,填入值即可
|
||||
tencent:
|
||||
enable: false
|
||||
config:
|
||||
SecretId: ''
|
||||
SecretKey: ''
|
||||
Bucket: ''
|
||||
Region: ''
|
||||
aliyun:
|
||||
enable: false
|
||||
config:
|
||||
accessKeyId: ''
|
||||
accessKeySecret: ''
|
||||
bucket: ''
|
||||
https: true
|
||||
region: ''
|
||||
|
||||
# jwt 配置
|
||||
jwt:
|
||||
secretkey: 'zA_Think+KNOWLEDGE+WIKI+DOCUMENTS@2022'
|
||||
expiresIn: '6h'
|
||||
```
|
||||
|
||||
## 2. 新建 nginx.conf
|
||||
|
||||
```shell
|
||||
upstream think_client {
|
||||
server 127.0.0.1:5001;
|
||||
keepalive 64;
|
||||
}
|
||||
|
||||
upstream think_server {
|
||||
server 127.0.0.1:5002;
|
||||
keepalive 64;
|
||||
}
|
||||
|
||||
upstream think_wss {
|
||||
server 127.0.0.1:5003;
|
||||
keepalive 64;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name dev.api.codingit.cn;
|
||||
|
||||
client_max_body_size 100m;
|
||||
|
||||
location /api {
|
||||
proxy_pass http://think_server;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_send_timeout 300s;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
}
|
||||
|
||||
location /think/wss {
|
||||
proxy_pass http://think_wss;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_send_timeout 300s;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
proxy_pass http://think_server;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name dev.think.codingit.cn;
|
||||
|
||||
location / {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header X-Nginx-Proxy true;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
proxy_pass http://think_client;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
3. 构建项目
|
||||
|
||||
```shell
|
||||
cd think
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. 可选:配置 hosts
|
||||
|
||||
```shell
|
||||
127.0.0.1 dev.api.codingit.cn
|
||||
127.0.0.1 dev.think.codingit.cn
|
||||
```
|
||||
|
||||
5. 访问
|
||||
|
||||
浏览器访问:http://dev.think.codingit.cn。
|
||||
@@ -0,0 +1,126 @@
|
||||
# think
|
||||
|
||||
## 项目结构
|
||||
|
||||
本项目依赖 pnpm 使用 monorepo 形式进行代码组织,分包如下:
|
||||
|
||||
- `@think/config`: 客户端、服务端、OSS、MySQL、Redis 等配置管理
|
||||
- `@think/domains`:领域模型数据定义
|
||||
- `@think/constants`:常量配置
|
||||
- `@think/server`:服务端
|
||||
- `@think/client`:客户端
|
||||
|
||||
## 项目依赖
|
||||
|
||||
为了将项目运行起来,至少需要以下依赖。
|
||||
|
||||
- nodejs >=16.5.0:推荐使用 nvm 安装
|
||||
- pnpm:安装 nodejs 后,运行 `npm i -g pnpm` 即可安装
|
||||
- pm2:安装 nodejs 后,运行 `npm i -g pm2` 即可安装
|
||||
- MySQL 5.7
|
||||
- Redis
|
||||
|
||||
## 配置文件
|
||||
|
||||
项目所有的配置文件都在 `config` 目录下,其中 `dev.yaml` 中各字段均有解释,生产环境打包依赖 `prod.yaml`(需要自行修改为所需配置)。如果运行不起来,请对比 `dev.yaml` 检查配置。
|
||||
|
||||
**如果部署遇到问题,首先请确认相应配置是否正确!**
|
||||
|
||||
## 项目运行
|
||||
|
||||
无论是开发环境,还是生产环境,项目运行成功后会在 3 个端口启动相应服务(默认 5001、5002、5003),具体端口号由 `config` 文件夹下的配置文件决定。
|
||||
|
||||
- 前台页面地址:`http://localhost:5001`
|
||||
- 服务接口地址:`http://localhost:5002`
|
||||
- 协作接口地址:`http://localhost:5003`
|
||||
|
||||
### 本地开发
|
||||
|
||||
1. 安装数据库
|
||||
|
||||
首先安装 `MySQL` 和 `Redis`,推荐使用 docker 进行安装。
|
||||
|
||||
```bash
|
||||
docker image pull mysql:5.7
|
||||
# m1 的 mac 可以用:docker image pull --platform linux/x86_64 mysql:5.7
|
||||
docker run -d --restart=always --name mysql-for-think-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=think -e MYSQL_PASSWORD=think -e MYSQL_DATABASE=think mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||
|
||||
docker pull redis:latest
|
||||
docker run --name redis-for-think-dev -p 6379:6379 -d redis --appendonly yes --requirepass "root"
|
||||
```
|
||||
|
||||
2. 安装依赖并运行
|
||||
|
||||
```bash
|
||||
git clone https://github.com/fantasticit/think.git
|
||||
cd think
|
||||
pnpm install
|
||||
pnpm run build:dep
|
||||
pnpm run dev
|
||||
```
|
||||
|
||||
### 生产部署
|
||||
|
||||
首先确认在 `config` 文件夹下新建 `prod.yaml` 配置文件,然后运行以下命令。
|
||||
|
||||
**编译打包过程比较吃内存(大约 2G),小内存服务器建议本地构建后上传,可以在配置文件完成后,运行 build-output.sh,将打包后的 output 压缩发送到服务器后运行**。
|
||||
|
||||
```bash
|
||||
git clone https://github.com/fantasticit/think.git
|
||||
cd think
|
||||
pnpm install # 安装依赖
|
||||
pnpm run build # 项目打包
|
||||
|
||||
# 以下如果没有安装 pm2,直接 pnpm run start,推荐使用 pm2
|
||||
pnpm run pm2
|
||||
pm2 startup
|
||||
pm2 save
|
||||
```
|
||||
|
||||
#### swc 导致打包失败
|
||||
|
||||
要么根据报错安装相关系统环境依赖,要么在`think/packages/client`目录下加入 **.babelrc** 文件。
|
||||
|
||||
文件内容:
|
||||
|
||||
```
|
||||
{
|
||||
"presets": ["next/babel"]
|
||||
}
|
||||
```
|
||||
|
||||
### docker-compose
|
||||
|
||||
也可以使用 docker-compose 进行项目部署。首先,根据需要修改 `docker-compose.yml` 中的数据库、Redis 相关用户名、密码等配置,然后,从 `config/docker-prod-sample.yaml` 复制出 `config/prod.yaml` 并修改其中对应的配置。
|
||||
|
||||
```bash
|
||||
# 首次安装
|
||||
git clone https://github.com/fantasticit/think.git
|
||||
cd think
|
||||
docker-compose up -d
|
||||
|
||||
# 二次更新升级
|
||||
cd think
|
||||
git pull
|
||||
docker-compose build
|
||||
docker-compose up -d
|
||||
|
||||
# 如果二次更新有问题
|
||||
docker-compose kill
|
||||
docker-compose rm
|
||||
docker image rm think # 删掉构建的镜像
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
更多细节可以查看 [how-to-use-docker.md](./how-to-use-docker.md)。
|
||||
|
||||
### nginx 配置参考
|
||||
|
||||
无论以何种方式进行项目部署,项目运行成功后会在 3 个端口启动服务(默认 5001、5002、5003,具体由配置文件决定)。`nginx` 配置参考 <[think/nginx.conf.sample](https://github.com/fantasticit/think/blob/main/nginx.conf.sample)>。
|
||||
|
||||
特别强调,在 `config` 文件夹的配置中 `client.siteUrl` 一定要配置正确,否则客户端可能无法正常运行。
|
||||
|
||||
```yaml
|
||||
# 站点地址(如:http://think.codingit.cn/),一定要设置,否则会出现 cookie、跨域等问题
|
||||
siteUrl: 'http://localhost:5001'
|
||||
```
|
||||
@@ -0,0 +1,69 @@
|
||||
upstream think_client {
|
||||
server 127.0.0.1:5001;
|
||||
keepalive 64;
|
||||
}
|
||||
|
||||
upstream think_server {
|
||||
server 127.0.0.1:5002;
|
||||
keepalive 64;
|
||||
}
|
||||
|
||||
upstream think_wss {
|
||||
server 127.0.0.1:5003;
|
||||
keepalive 64;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name dev.api.codingit.cn;
|
||||
|
||||
client_max_body_size 100m;
|
||||
|
||||
location /api {
|
||||
proxy_pass http://think_server;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_send_timeout 300s;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
}
|
||||
|
||||
location /think/wss {
|
||||
proxy_pass http://think_wss;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_send_timeout 300s;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
proxy_pass http://think_server;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name dev.think.codingit.cn;
|
||||
|
||||
location / {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header X-Nginx-Proxy true;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
proxy_pass http://think_client;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "think",
|
||||
"private": true,
|
||||
"author": "fantasticit",
|
||||
"scripts": {
|
||||
"clean": "npx rimraf ./node_modules ./packages/**/node_modules ./packages/**/.next",
|
||||
"dev": "concurrently 'pnpm:dev:*'",
|
||||
"dev:server": "pnpm run --dir packages/server dev",
|
||||
"dev:client": "pnpm run --dir packages/client dev",
|
||||
"build": "pnpm build:dep && pnpm build:server && pnpm build:client",
|
||||
"build:dep": "pnpm build:constants && pnpm build:domains && pnpm build:config",
|
||||
"build:constants": "pnpm run --dir packages/constants build",
|
||||
"build:domains": "pnpm run --dir packages/domains build",
|
||||
"build:config": "pnpm run --dir packages/config build",
|
||||
"build:server": "pnpm run --dir packages/server build",
|
||||
"build:client": "pnpm run --dir packages/client build",
|
||||
"start": "concurrently 'pnpm:start:*'",
|
||||
"start:server": "pnpm run --dir packages/server start",
|
||||
"start:client": "pnpm run --dir packages/client start",
|
||||
"pm2": "pnpm run pm2:server && pnpm run pm2:client",
|
||||
"pm2:server": "pnpm run --dir packages/server pm2",
|
||||
"pm2:client": "pnpm run --dir packages/client pm2",
|
||||
"lint": "concurrently 'pnpm:lint:*'",
|
||||
"lint:client": "eslint --fix './packages/client/**/*.{ts,tsx,js,jsx}'",
|
||||
"lint:server": "eslint --fix './packages/server/**/*.{ts,js}'",
|
||||
"format": "concurrently 'pnpm:format:*'",
|
||||
"format:ts": "prettier --write --parser typescript 'packages/**/*.{ts,tsx,js,jsx}'",
|
||||
"format:css": "stylelint --fix --formatter verbose --allow-empty-input 'packages/**/*.{css,scss,sass}'",
|
||||
"prepare": "husky install",
|
||||
"precommit": "lint-staged"
|
||||
},
|
||||
"dependencies": {
|
||||
"concurrently": "^7.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"fs-extra": "^10.0.0",
|
||||
"rimraf": "^3.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^17.0.35",
|
||||
"husky": "^7.0.4",
|
||||
"lint-staged": "^12.4.1",
|
||||
"prettier": "^2.3.2",
|
||||
"stylelint": "^14.6.1",
|
||||
"stylelint-config-css-modules": "^4.1.0",
|
||||
"stylelint-config-prettier": "^9.0.3",
|
||||
"stylelint-config-standard": "^25.0.0",
|
||||
"stylelint-config-standard-scss": "^3.0.0",
|
||||
"stylelint-order": "^5.0.0",
|
||||
"stylelint-prettier": "^2.0.0",
|
||||
"typescript": "^4.5.5"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{ts,tsx,js,jsx}": "prettier --write",
|
||||
"./packages/client/**/*.{ts,tsx,js,jsx}": [
|
||||
"eslint --fix"
|
||||
],
|
||||
"./packages/server/src/*.{ts,js}": [
|
||||
"eslint --fix"
|
||||
],
|
||||
"*.{css,scss,sass}": "stylelint --fix --formatter verbose --allow-empty-input"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
module.exports = {
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint', 'react-hooks', 'simple-import-sort', 'prettier'],
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:react/recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:prettier/recommended',
|
||||
],
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.ts', '*.tsx', '.js', '.jsx'],
|
||||
parserOptions: {
|
||||
project: ['./tsconfig.json'],
|
||||
tsconfigRootDir: __dirname,
|
||||
sourceType: 'module',
|
||||
},
|
||||
},
|
||||
],
|
||||
settings: {
|
||||
'react': {
|
||||
version: 'detect',
|
||||
},
|
||||
'import/resolver': {
|
||||
node: {
|
||||
paths: ['src'],
|
||||
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
||||
},
|
||||
},
|
||||
},
|
||||
env: {
|
||||
es6: true,
|
||||
browser: true,
|
||||
node: true,
|
||||
},
|
||||
rules: {
|
||||
'func-names': 0,
|
||||
'no-shadow': 0,
|
||||
'@typescript-eslint/no-shadow': 0,
|
||||
'@typescript-eslint/no-unused-vars': [0, { argsIgnorePattern: '^_' }],
|
||||
'@typescript-eslint/no-use-before-define': 0,
|
||||
'@typescript-eslint/ban-ts-ignore': 0,
|
||||
'@typescript-eslint/no-empty-function': 0,
|
||||
'@typescript-eslint/ban-ts-comment': 0,
|
||||
'@typescript-eslint/no-var-requires': 0,
|
||||
'@typescript-eslint/no-explicit-any': 0,
|
||||
'@typescript-eslint/no-this-alias': 0,
|
||||
'@typescript-eslint/explicit-module-boundary-types': 0,
|
||||
'@typescript-eslint/ban-types': 0,
|
||||
'react-hooks/rules-of-hooks': 2,
|
||||
'react-hooks/exhaustive-deps': 2,
|
||||
'testing-library/no-unnecessary-act': 0,
|
||||
'prettier/prettier': ['error', {}, { usePrettierrc: true }],
|
||||
'react/react-in-jsx-scope': 'off',
|
||||
'react/prop-types': 'off',
|
||||
'@typescript-eslint/explicit-function-return-type': 'off',
|
||||
'simple-import-sort/imports': [
|
||||
'error',
|
||||
{
|
||||
groups: [
|
||||
['react'],
|
||||
['@douyinfe(.*)$'],
|
||||
['(@)?think(.*)$'],
|
||||
['(@)?tiptap(.*)$'],
|
||||
['^@?\\w'],
|
||||
['@/(.*)'],
|
||||
['^[./]'],
|
||||
['(.*).module.scss'],
|
||||
],
|
||||
},
|
||||
],
|
||||
'simple-import-sort/exports': 'error',
|
||||
},
|
||||
ignorePatterns: ['dist/', 'node_modules', 'scripts', 'examples'],
|
||||
};
|
||||
@@ -0,0 +1,42 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
|
||||
# service-worker.js
|
||||
/public/manifest.json
|
||||
/public/service-worker.js
|
||||
/public/workbox-*.js
|
||||
@@ -0,0 +1,3 @@
|
||||
# @think/client
|
||||
|
||||
> 客户端。
|
||||
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* 将流程图编辑器所需的资源拷贝到 .next 目录中,配合 nginx 运行
|
||||
*/
|
||||
const fs = require('fs-extra');
|
||||
const { getConfig } = require('@think/config');
|
||||
const config = getConfig();
|
||||
|
||||
const buildManifestJson = () => {
|
||||
return JSON.stringify({
|
||||
name: config.client.seoAppName,
|
||||
short_name: config.client.seoAppName,
|
||||
display: 'standalone',
|
||||
start_url: '/',
|
||||
theme_color: '#ffffff',
|
||||
background_color: '#ffffff',
|
||||
icons: [
|
||||
{
|
||||
src: '/icon72.png',
|
||||
sizes: '72x72',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon96.png',
|
||||
sizes: '96x96',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon120.png',
|
||||
sizes: '120x120',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon128.png',
|
||||
sizes: '128x128',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon144.png',
|
||||
sizes: '144x144',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon152.png',
|
||||
sizes: '152x152',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon180.png',
|
||||
sizes: '180x180',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon192.png',
|
||||
sizes: '192x192',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon384.png',
|
||||
sizes: '384x384',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/icon512.png',
|
||||
sizes: '512x512',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: '/maskable.png',
|
||||
sizes: '192x192',
|
||||
type: 'image/png',
|
||||
purpose: 'maskable',
|
||||
},
|
||||
],
|
||||
});
|
||||
};
|
||||
|
||||
fs.copySync('./public', './.next', {
|
||||
filter: (src) => {
|
||||
// 生产环境使用 diagram.min.js
|
||||
return !/diagram.js$/.test(src);
|
||||
},
|
||||
});
|
||||
|
||||
fs.outputFileSync('./.next/manifest.json', buildManifestJson());
|
||||
fs.outputFileSync('./public/manifest.json', buildManifestJson());
|
||||
@@ -0,0 +1,12 @@
|
||||
const { getConfig } = require('@think/config');
|
||||
const config = getConfig();
|
||||
const cli = require('next/dist/cli/next-dev');
|
||||
|
||||
const port = (config.client && config.client.port) || 5001;
|
||||
|
||||
try {
|
||||
cli.nextDev(['-p', port]);
|
||||
console.log(`[think] 客户端已启动,端口:${port}`);
|
||||
} catch (err) {
|
||||
console.log(`[think] 客户端启动失败!${err.message || err}`);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
interface Window {
|
||||
// drawio 绘图
|
||||
GraphViewer: any;
|
||||
// 百度脑图
|
||||
kityminder: any;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/image-types/global" />
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||
@@ -0,0 +1,43 @@
|
||||
const semi = require('@douyinfe/semi-next').default({});
|
||||
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
|
||||
|
||||
const { getConfig } = require('@think/config');
|
||||
const config = getConfig();
|
||||
|
||||
const pwaRuntimeCaching = require('./pwa-cache');
|
||||
const withPWA = require('next-pwa')({
|
||||
disable: process.env.NODE_ENV !== 'production',
|
||||
dest: 'public',
|
||||
sw: 'service-worker.js',
|
||||
runtimeCaching: pwaRuntimeCaching,
|
||||
});
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = semi({
|
||||
experimental: {
|
||||
scrollRestoration: true,
|
||||
legacyBrowsers: false,
|
||||
browsersListForSwc: true,
|
||||
},
|
||||
assetPrefix: config.assetPrefix,
|
||||
env: {
|
||||
SERVER_API_URL: config.client.apiUrl,
|
||||
COLLABORATION_API_URL: config.client.collaborationUrl,
|
||||
ENABLE_OSS_S3: config.oss.s3?.enable,
|
||||
DNS_PREFETCH: (config.client.dnsPrefetch || '').split(' '),
|
||||
SITE_URL: config.client.siteUrl,
|
||||
},
|
||||
webpack: (config, { dev, isServer }) => {
|
||||
config.resolve.plugins.push(new TsconfigPathsPlugin());
|
||||
return config;
|
||||
},
|
||||
eslint: {
|
||||
ignoreDuringBuilds: true,
|
||||
},
|
||||
// FIXME: douyinfe 的第三方包存在 ts 类型错误!
|
||||
typescript: {
|
||||
ignoreBuildErrors: true,
|
||||
},
|
||||
});
|
||||
|
||||
module.exports = withPWA(nextConfig);
|
||||
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"name": "@think/client",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "rimraf .next && npx next telemetry disable && next build && node copy-diagram-resources.js",
|
||||
"dev": "node dev-server.js",
|
||||
"start": "cross-env NODE_ENV=production node prod-server.js",
|
||||
"pm2": "pm2 start npm --name @think/client -- start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@douyinfe/semi-icons": "^2.18.0",
|
||||
"@douyinfe/semi-next": "^2.18.0",
|
||||
"@douyinfe/semi-ui": "^2.18.0",
|
||||
"@excalidraw/excalidraw": "^0.12.0",
|
||||
"@hocuspocus/provider": "^1.0.0-alpha.29",
|
||||
"@react-pdf-viewer/core": "3.9.0",
|
||||
"@react-pdf-viewer/default-layout": "3.9.0",
|
||||
"@react-pdf-viewer/locales": "^1.0.0",
|
||||
"@think/config": "workspace:^1.0.0",
|
||||
"@think/constants": "workspace:^1.0.0",
|
||||
"@think/domains": "workspace:^1.0.0",
|
||||
"@tiptap/core": "^2.0.0-beta.171",
|
||||
"@tiptap/extension-blockquote": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-bold": "^2.0.0-beta.25",
|
||||
"@tiptap/extension-bullet-list": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-code": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-code-block": "^2.0.0-beta.37",
|
||||
"@tiptap/extension-code-block-lowlight": "^2.0.0-beta.68",
|
||||
"@tiptap/extension-color": "^2.0.0-beta.9",
|
||||
"@tiptap/extension-document": "^2.0.0-beta.15",
|
||||
"@tiptap/extension-dropcursor": "^2.0.0-beta.25",
|
||||
"@tiptap/extension-gapcursor": "^2.0.0-beta.34",
|
||||
"@tiptap/extension-hard-break": "^2.0.0-beta.30",
|
||||
"@tiptap/extension-heading": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-highlight": "^2.0.0-beta.33",
|
||||
"@tiptap/extension-history": "^2.0.0-beta.21",
|
||||
"@tiptap/extension-image": "^2.0.0-beta.25",
|
||||
"@tiptap/extension-italic": "^2.0.0-beta.25",
|
||||
"@tiptap/extension-link": "^2.0.0-beta.36",
|
||||
"@tiptap/extension-list-item": "^2.0.0-beta.20",
|
||||
"@tiptap/extension-mention": "^2.0.0-beta.95",
|
||||
"@tiptap/extension-ordered-list": "^2.0.0-beta.27",
|
||||
"@tiptap/extension-paragraph": "^2.0.0-beta.23",
|
||||
"@tiptap/extension-placeholder": "^2.0.0-beta.47",
|
||||
"@tiptap/extension-strike": "^2.0.0-beta.27",
|
||||
"@tiptap/extension-subscript": "^2.0.0-beta.10",
|
||||
"@tiptap/extension-superscript": "^2.0.0-beta.10",
|
||||
"@tiptap/extension-table": "^2.0.0-beta.48",
|
||||
"@tiptap/extension-table-cell": "^2.0.0-beta.20",
|
||||
"@tiptap/extension-table-header": "^2.0.0-beta.22",
|
||||
"@tiptap/extension-table-row": "^2.0.0-beta.19",
|
||||
"@tiptap/extension-task-item": "^2.0.0-beta.31",
|
||||
"@tiptap/extension-task-list": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-text": "^2.0.0-beta.15",
|
||||
"@tiptap/extension-text-align": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-text-style": "^2.0.0-beta.23",
|
||||
"@tiptap/extension-underline": "^2.0.0-beta.23",
|
||||
"@tiptap/react": "^2.0.0-beta.107",
|
||||
"@tiptap/suggestion": "^2.0.0-beta.90",
|
||||
"axios": "^0.25.0",
|
||||
"buffer-image-size": "^0.6.4",
|
||||
"classnames": "^2.3.1",
|
||||
"clone": "^2.1.2",
|
||||
"cross-env": "^7.0.3",
|
||||
"deep-equal": "^2.0.5",
|
||||
"dompurify": "^2.3.5",
|
||||
"file-saver": "^2.0.5",
|
||||
"htmldiff-js": "^1.0.5",
|
||||
"interactjs": "^1.10.11",
|
||||
"katex": "^0.15.2",
|
||||
"kity": "^2.0.4",
|
||||
"lib0": "^0.2.47",
|
||||
"lodash.pick": "^4.4.0",
|
||||
"lowlight": "^2.5.0",
|
||||
"markdown-it": "^12.3.2",
|
||||
"markdown-it-anchor": "^8.4.1",
|
||||
"markdown-it-container": "^3.0.0",
|
||||
"markdown-it-emoji": "^2.0.0",
|
||||
"markdown-it-sub": "^1.0.0",
|
||||
"markdown-it-sup": "^1.0.0",
|
||||
"next": "12.1.0",
|
||||
"next-pwa": "^5.6.0",
|
||||
"pdfjs-dist": "3.1.81",
|
||||
"prosemirror-codemark": "^0.4.2",
|
||||
"prosemirror-commands": "^1.3.0",
|
||||
"prosemirror-markdown": "^1.7.0",
|
||||
"prosemirror-model": "^1.16.1",
|
||||
"prosemirror-schema-list": "^1.1.6",
|
||||
"prosemirror-state": "^1.3.4",
|
||||
"prosemirror-tables": "^1.1.1",
|
||||
"prosemirror-utils": "^0.9.6",
|
||||
"prosemirror-view": "^1.23.6",
|
||||
"react": "17.0.2",
|
||||
"react-countdown": "^2.3.2",
|
||||
"react-dom": "17.0.2",
|
||||
"react-full-screen": "^1.1.1",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-lazy-load-image-component": "^1.5.4",
|
||||
"react-query": "^3.39.0",
|
||||
"react-split-pane": "^0.1.92",
|
||||
"react-visibility-sensor": "^5.1.1",
|
||||
"requestidlecallback-polyfill": "^1.0.2",
|
||||
"resize-observer-polyfill": "^1.5.1",
|
||||
"scroll-into-view-if-needed": "^2.2.29",
|
||||
"spark-md5": "^3.0.2",
|
||||
"timeago.js": "^4.0.2",
|
||||
"tippy.js": "^6.3.7",
|
||||
"toggle-selection": "^1.0.6",
|
||||
"viewerjs": "^1.10.4",
|
||||
"yjs": "^13.5.24"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/deep-equal": "^1.0.4",
|
||||
"@types/lodash.pick": "^4.4.9",
|
||||
"@types/node": "17.0.13",
|
||||
"@types/react": "17.0.38",
|
||||
"@types/react-dom": "17.0.11",
|
||||
"@types/react-lazy-load-image-component": "^1.6.3",
|
||||
"@typescript-eslint/eslint-plugin": "^5.21.0",
|
||||
"@typescript-eslint/parser": "^5.21.0",
|
||||
"copy-webpack-plugin": "11.0.0",
|
||||
"eslint": "^8.14.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"eslint-plugin-react": "^7.29.4",
|
||||
"eslint-plugin-react-hooks": "^4.5.0",
|
||||
"eslint-plugin-simple-import-sort": "^7.0.0",
|
||||
"fs-extra": "^10.0.0",
|
||||
"tsconfig-paths-webpack-plugin": "^3.5.2",
|
||||
"typescript": "^4.8.4"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
const { getConfig } = require('@think/config');
|
||||
const config = getConfig();
|
||||
const cli = require('next/dist/cli/next-start');
|
||||
|
||||
const port = (config.client && config.client.port) || 5001;
|
||||
|
||||
try {
|
||||
cli.nextStart(['-p', port]);
|
||||
console.log(`[think] 客户端已启动,端口:${port}`);
|
||||
} catch (err) {
|
||||
console.log(`[think] 客户端启动失败!${err.message || err}`);
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
<mxStylesheet>
|
||||
<add as="defaultVertex">
|
||||
<add as="shape" value="label"/>
|
||||
<add as="perimeter" value="rectanglePerimeter"/>
|
||||
<add as="fontSize" value="12"/>
|
||||
<add as="fontFamily" value="Helvetica"/>
|
||||
<add as="align" value="center"/>
|
||||
<add as="verticalAlign" value="middle"/>
|
||||
<add as="fillColor" value="default"/>
|
||||
<add as="strokeColor" value="default"/>
|
||||
<add as="fontColor" value="default"/>
|
||||
</add>
|
||||
<add as="defaultEdge">
|
||||
<add as="shape" value="connector"/>
|
||||
<add as="labelBackgroundColor" value="default"/>
|
||||
<add as="endArrow" value="classic"/>
|
||||
<add as="fontSize" value="11"/>
|
||||
<add as="fontFamily" value="Helvetica"/>
|
||||
<add as="align" value="center"/>
|
||||
<add as="verticalAlign" value="middle"/>
|
||||
<add as="rounded" value="1"/>
|
||||
<add as="strokeColor" value="default"/>
|
||||
<add as="fontColor" value="default"/>
|
||||
</add>
|
||||
<add as="text">
|
||||
<add as="fillColor" value="none"/>
|
||||
<add as="gradientColor" value="none"/>
|
||||
<add as="strokeColor" value="none"/>
|
||||
<add as="align" value="left"/>
|
||||
<add as="verticalAlign" value="top"/>
|
||||
</add>
|
||||
<add as="edgeLabel" extend="text">
|
||||
<add as="labelBackgroundColor" value="default"/>
|
||||
<add as="fontSize" value="11"/>
|
||||
</add>
|
||||
<add as="label">
|
||||
<add as="fontStyle" value="1"/>
|
||||
<add as="align" value="left"/>
|
||||
<add as="verticalAlign" value="middle"/>
|
||||
<add as="spacing" value="2"/>
|
||||
<add as="spacingLeft" value="52"/>
|
||||
<add as="imageWidth" value="42"/>
|
||||
<add as="imageHeight" value="42"/>
|
||||
<add as="rounded" value="1"/>
|
||||
</add>
|
||||
<add as="icon" extend="label">
|
||||
<add as="align" value="center"/>
|
||||
<add as="imageAlign" value="center"/>
|
||||
<add as="verticalLabelPosition" value="bottom"/>
|
||||
<add as="verticalAlign" value="top"/>
|
||||
<add as="spacingTop" value="4"/>
|
||||
<add as="labelBackgroundColor" value="default"/>
|
||||
<add as="spacing" value="0"/>
|
||||
<add as="spacingLeft" value="0"/>
|
||||
<add as="spacingTop" value="6"/>
|
||||
<add as="fontStyle" value="0"/>
|
||||
<add as="imageWidth" value="48"/>
|
||||
<add as="imageHeight" value="48"/>
|
||||
</add>
|
||||
<add as="swimlane">
|
||||
<add as="shape" value="swimlane"/>
|
||||
<add as="fontSize" value="12"/>
|
||||
<add as="fontStyle" value="1"/>
|
||||
<add as="startSize" value="23"/>
|
||||
</add>
|
||||
<add as="group">
|
||||
<add as="verticalAlign" value="top"/>
|
||||
<add as="fillColor" value="none"/>
|
||||
<add as="strokeColor" value="none"/>
|
||||
<add as="gradientColor" value="none"/>
|
||||
<add as="pointerEvents" value="0"/>
|
||||
</add>
|
||||
<add as="ellipse">
|
||||
<add as="shape" value="ellipse"/>
|
||||
<add as="perimeter" value="ellipsePerimeter"/>
|
||||
</add>
|
||||
<add as="rhombus">
|
||||
<add as="shape" value="rhombus"/>
|
||||
<add as="perimeter" value="rhombusPerimeter"/>
|
||||
</add>
|
||||
<add as="triangle">
|
||||
<add as="shape" value="triangle"/>
|
||||
<add as="perimeter" value="trianglePerimeter"/>
|
||||
</add>
|
||||
<add as="line">
|
||||
<add as="shape" value="line"/>
|
||||
<add as="strokeWidth" value="4"/>
|
||||
<add as="labelBackgroundColor" value="default"/>
|
||||
<add as="verticalAlign" value="top"/>
|
||||
<add as="spacingTop" value="8"/>
|
||||
</add>
|
||||
<add as="image">
|
||||
<add as="shape" value="image"/>
|
||||
<add as="labelBackgroundColor" value="default"/>
|
||||
<add as="verticalAlign" value="top"/>
|
||||
<add as="verticalLabelPosition" value="bottom"/>
|
||||
</add>
|
||||
<add as="roundImage" extend="image">
|
||||
<add as="perimeter" value="ellipsePerimeter"/>
|
||||
</add>
|
||||
<add as="rhombusImage" extend="image">
|
||||
<add as="perimeter" value="rhombusPerimeter"/>
|
||||
</add>
|
||||
<add as="arrow">
|
||||
<add as="shape" value="arrow"/>
|
||||
<add as="edgeStyle" value="none"/>
|
||||
<add as="fillColor" value="default"/>
|
||||
</add>
|
||||
<add as="fancy">
|
||||
<add as="shadow" value="1"/>
|
||||
<add as="glass" value="1"/>
|
||||
</add>
|
||||
<add as="gray" extend="fancy">
|
||||
<add as="gradientColor" value="#B3B3B3"/>
|
||||
<add as="fillColor" value="#F5F5F5"/>
|
||||
<add as="strokeColor" value="#666666"/>
|
||||
</add>
|
||||
<add as="blue" extend="fancy">
|
||||
<add as="gradientColor" value="#7EA6E0"/>
|
||||
<add as="fillColor" value="#DAE8FC"/>
|
||||
<add as="strokeColor" value="#6C8EBF"/>
|
||||
</add>
|
||||
<add as="green" extend="fancy">
|
||||
<add as="gradientColor" value="#97D077"/>
|
||||
<add as="fillColor" value="#D5E8D4"/>
|
||||
<add as="strokeColor" value="#82B366"/>
|
||||
</add>
|
||||
<add as="turquoise" extend="fancy">
|
||||
<add as="gradientColor" value="#67AB9F"/>
|
||||
<add as="fillColor" value="#D5E8D4"/>
|
||||
<add as="strokeColor" value="#6A9153"/>
|
||||
</add>
|
||||
<add as="yellow" extend="fancy">
|
||||
<add as="gradientColor" value="#FFD966"/>
|
||||
<add as="fillColor" value="#FFF2CC"/>
|
||||
<add as="strokeColor" value="#D6B656"/>
|
||||
</add>
|
||||
<add as="orange" extend="fancy">
|
||||
<add as="gradientColor" value="#FFA500"/>
|
||||
<add as="fillColor" value="#FFCD28"/>
|
||||
<add as="strokeColor" value="#D79B00"/>
|
||||
</add>
|
||||
<add as="red" extend="fancy">
|
||||
<add as="gradientColor" value="#EA6B66"/>
|
||||
<add as="fillColor" value="#F8CECC"/>
|
||||
<add as="strokeColor" value="#B85450"/>
|
||||
</add>
|
||||
<add as="pink" extend="fancy">
|
||||
<add as="gradientColor" value="#B5739D"/>
|
||||
<add as="fillColor" value="#E6D0DE"/>
|
||||
<add as="strokeColor" value="#996185"/>
|
||||
</add>
|
||||
<add as="purple" extend="fancy">
|
||||
<add as="gradientColor" value="#8C6C9C"/>
|
||||
<add as="fillColor" value="#E1D5E7"/>
|
||||
<add as="strokeColor" value="#9673A6"/>
|
||||
</add>
|
||||
<add as="plain-gray">
|
||||
<add as="gradientColor" value="#B3B3B3"/>
|
||||
<add as="fillColor" value="#F5F5F5"/>
|
||||
<add as="strokeColor" value="#666666"/>
|
||||
</add>
|
||||
<add as="plain-blue">
|
||||
<add as="gradientColor" value="#7EA6E0"/>
|
||||
<add as="fillColor" value="#DAE8FC"/>
|
||||
<add as="strokeColor" value="#6C8EBF"/>
|
||||
</add>
|
||||
<add as="plain-green">
|
||||
<add as="gradientColor" value="#97D077"/>
|
||||
<add as="fillColor" value="#D5E8D4"/>
|
||||
<add as="strokeColor" value="#82B366"/>
|
||||
</add>
|
||||
<add as="plain-turquoise">
|
||||
<add as="gradientColor" value="#67AB9F"/>
|
||||
<add as="fillColor" value="#D5E8D4"/>
|
||||
<add as="strokeColor" value="#6A9153"/>
|
||||
</add>
|
||||
<add as="plain-yellow">
|
||||
<add as="gradientColor" value="#FFD966"/>
|
||||
<add as="fillColor" value="#FFF2CC"/>
|
||||
<add as="strokeColor" value="#D6B656"/>
|
||||
</add>
|
||||
<add as="plain-orange">
|
||||
<add as="gradientColor" value="#FFA500"/>
|
||||
<add as="fillColor" value="#FFCD28"/>
|
||||
<add as="strokeColor" value="#D79B00"/>
|
||||
</add>
|
||||
<add as="plain-red">
|
||||
<add as="gradientColor" value="#EA6B66"/>
|
||||
<add as="fillColor" value="#F8CECC"/>
|
||||
<add as="strokeColor" value="#B85450"/>
|
||||
</add>
|
||||
<add as="plain-pink">
|
||||
<add as="gradientColor" value="#B5739D"/>
|
||||
<add as="fillColor" value="#E6D0DE"/>
|
||||
<add as="strokeColor" value="#996185"/>
|
||||
</add>
|
||||
<add as="plain-purple">
|
||||
<add as="gradientColor" value="#8C6C9C"/>
|
||||
<add as="fillColor" value="#E1D5E7"/>
|
||||
<add as="strokeColor" value="#9673A6"/>
|
||||
</add>
|
||||
</mxStylesheet>
|
||||
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 137 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 70 B |
|
After Width: | Height: | Size: 118 B |
|
After Width: | Height: | Size: 877 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 206 B |
|
After Width: | Height: | Size: 66 B |
|
After Width: | Height: | Size: 907 B |
|
After Width: | Height: | Size: 878 B |
|
After Width: | Height: | Size: 56 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 379 B |
|
After Width: | Height: | Size: 298 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 338 B |
|
After Width: | Height: | Size: 1020 B |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 843 B |
|
After Width: | Height: | Size: 64 B |
|
After Width: | Height: | Size: 300 B |
|
After Width: | Height: | Size: 948 B |
|
After Width: | Height: | Size: 845 B |
|
After Width: | Height: | Size: 55 B |
|
After Width: | Height: | Size: 522 B |
|
After Width: | Height: | Size: 74 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 404 B |
|
After Width: | Height: | Size: 146 B |
|
After Width: | Height: | Size: 56 B |
|
After Width: | Height: | Size: 90 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 276 B |
|
After Width: | Height: | Size: 425 B |
|
After Width: | Height: | Size: 275 B |
|
After Width: | Height: | Size: 75 B |
@@ -0,0 +1,5 @@
|
||||
askZoom=Enter zoom (%)
|
||||
properties=Properties
|
||||
outline=Outline
|
||||
tasks=Tasks
|
||||
help=Help
|
||||
@@ -0,0 +1,849 @@
|
||||
<shapes name="mxGraph.arrows">
|
||||
<shape name="Arrow Down" h="97.5" w="70" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
<constraint x="0.5" y="1" perimeter="0" name="S"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="20" y="0"/>
|
||||
<line x="20" y="59"/>
|
||||
<line x="0" y="59"/>
|
||||
<line x="35" y="97.5"/>
|
||||
<line x="70" y="59"/>
|
||||
<line x="50" y="59"/>
|
||||
<line x="50" y="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Arrow Left" h="70" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="97.5" y="20"/>
|
||||
<line x="38.5" y="20"/>
|
||||
<line x="38.5" y="0"/>
|
||||
<line x="0" y="35"/>
|
||||
<line x="38.5" y="70"/>
|
||||
<line x="38.5" y="50"/>
|
||||
<line x="97.5" y="50"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Arrow Right" h="70" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="20"/>
|
||||
<line x="59" y="20"/>
|
||||
<line x="59" y="0"/>
|
||||
<line x="97.5" y="35"/>
|
||||
<line x="59" y="70"/>
|
||||
<line x="59" y="50"/>
|
||||
<line x="0" y="50"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Arrow Up" h="97.5" w="70" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
<constraint x="0.5" y="1" perimeter="0" name="S"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="20" y="97.5"/>
|
||||
<line x="20" y="38.5"/>
|
||||
<line x="0" y="38.5"/>
|
||||
<line x="35" y="0"/>
|
||||
<line x="70" y="38.5"/>
|
||||
<line x="50" y="38.5"/>
|
||||
<line x="50" y="97.5"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Bent Left Arrow" h="97" w="97.01" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.85" y="1" perimeter="0" name="S"/>
|
||||
<constraint x="0" y="0.29" perimeter="0" name="W"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="68" y="97"/>
|
||||
<line x="68" y="48"/>
|
||||
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="63" y="43"/>
|
||||
<line x="38" y="43"/>
|
||||
<line x="38" y="56"/>
|
||||
<line x="0" y="28"/>
|
||||
<line x="38" y="0"/>
|
||||
<line x="38" y="13"/>
|
||||
<line x="63" y="13"/>
|
||||
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="97" y="48"/>
|
||||
<line x="97" y="97"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Bent Right Arrow" h="97" w="97.01" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.15" y="1" perimeter="0" name="S"/>
|
||||
<constraint x="1" y="0.29" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="29.01" y="97"/>
|
||||
<line x="29.01" y="48"/>
|
||||
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="34.01" y="43"/>
|
||||
<line x="59.01" y="43"/>
|
||||
<line x="59.01" y="56"/>
|
||||
<line x="97.01" y="28"/>
|
||||
<line x="59.01" y="0"/>
|
||||
<line x="59.01" y="13"/>
|
||||
<line x="34.01" y="13"/>
|
||||
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0.01" y="48"/>
|
||||
<line x="0.01" y="97"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Bent Up Arrow" h="83.5" w="97" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.71" y="0" perimeter="0" name="N"/>
|
||||
<constraint x="0" y="0.82" perimeter="0" name="W"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="53.5"/>
|
||||
<line x="54" y="53.5"/>
|
||||
<line x="54" y="23.5"/>
|
||||
<line x="42" y="23.5"/>
|
||||
<line x="69" y="0"/>
|
||||
<line x="97" y="23.5"/>
|
||||
<line x="84" y="23.5"/>
|
||||
<line x="84" y="83.5"/>
|
||||
<line x="0" y="83.5"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Callout Double Arrow" h="97.5" w="50" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
<constraint x="0.5" y="1" perimeter="0" name="S"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="15" y="24"/>
|
||||
<line x="15" y="19"/>
|
||||
<line x="6" y="19"/>
|
||||
<line x="25" y="0"/>
|
||||
<line x="44" y="19"/>
|
||||
<line x="35" y="19"/>
|
||||
<line x="35" y="24"/>
|
||||
<line x="50" y="24"/>
|
||||
<line x="50" y="74"/>
|
||||
<line x="35" y="74"/>
|
||||
<line x="35" y="79"/>
|
||||
<line x="44" y="79"/>
|
||||
<line x="25" y="97.5"/>
|
||||
<line x="6" y="79"/>
|
||||
<line x="15" y="79"/>
|
||||
<line x="15" y="74"/>
|
||||
<line x="0" y="74"/>
|
||||
<line x="0" y="24"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Callout Quad Arrow" h="97" w="97" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
<constraint x="0.5" y="1" perimeter="0" name="S"/>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="38.5" y="23.5"/>
|
||||
<line x="38.5" y="18.5"/>
|
||||
<line x="29.5" y="18.5"/>
|
||||
<line x="48.5" y="0"/>
|
||||
<line x="67.5" y="18.5"/>
|
||||
<line x="58.5" y="18.5"/>
|
||||
<line x="58.5" y="23.5"/>
|
||||
<line x="73.5" y="23.5"/>
|
||||
<line x="73.5" y="38.5"/>
|
||||
<line x="78.5" y="38.5"/>
|
||||
<line x="78.5" y="29.5"/>
|
||||
<line x="97" y="48.5"/>
|
||||
<line x="78.5" y="67.5"/>
|
||||
<line x="78.5" y="58.5"/>
|
||||
<line x="73.5" y="58.5"/>
|
||||
<line x="73.5" y="73.5"/>
|
||||
<line x="58.5" y="73.5"/>
|
||||
<line x="58.5" y="78.5"/>
|
||||
<line x="67.5" y="78.5"/>
|
||||
<line x="48.5" y="97"/>
|
||||
<line x="29.5" y="78.5"/>
|
||||
<line x="38.5" y="78.5"/>
|
||||
<line x="38.5" y="73.5"/>
|
||||
<line x="23.5" y="73.5"/>
|
||||
<line x="23.5" y="58.5"/>
|
||||
<line x="18.5" y="58.5"/>
|
||||
<line x="18.5" y="67.5"/>
|
||||
<line x="0" y="48.5"/>
|
||||
<line x="18.5" y="29.5"/>
|
||||
<line x="18.5" y="38.5"/>
|
||||
<line x="23.5" y="38.5"/>
|
||||
<line x="23.5" y="23.5"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Callout Up Arrow" h="98" w="60" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="20" y="39"/>
|
||||
<line x="20" y="19"/>
|
||||
<line x="11" y="19"/>
|
||||
<line x="30" y="0"/>
|
||||
<line x="49" y="19"/>
|
||||
<line x="40" y="19"/>
|
||||
<line x="40" y="39"/>
|
||||
<line x="60" y="39"/>
|
||||
<line x="60" y="98"/>
|
||||
<line x="0" y="98"/>
|
||||
<line x="0" y="39"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Chevron Arrow" h="60" w="96" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.31" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="30" y="30"/>
|
||||
<line x="0" y="0"/>
|
||||
<line x="66" y="0"/>
|
||||
<line x="96" y="30"/>
|
||||
<line x="66" y="60"/>
|
||||
<line x="0" y="60"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Circular Arrow" h="69.5" w="97" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.12" y="0.64" perimeter="0" name="SW"/>
|
||||
<constraint x="0.794" y="1" perimeter="0" name="SE"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="44.5"/>
|
||||
<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="89" y="44.5"/>
|
||||
<line x="97" y="44.5"/>
|
||||
<line x="77" y="69.5"/>
|
||||
<line x="57" y="44.5"/>
|
||||
<line x="65" y="44.5"/>
|
||||
<arc rx="20.5" ry="20.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="24" y="44.5"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Jump-in Arrow 1" h="99.41" w="96" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.024" perimeter="0" name="NW"/>
|
||||
<constraint x="0.657" y="1" perimeter="0" name="S"/>
|
||||
</connections>
|
||||
<background>
|
||||
|
||||
<linejoin join="round"/>
|
||||
<path>
|
||||
<move x="30" y="60.41"/>
|
||||
<line x="48" y="60.41"/>
|
||||
<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0" y="2.41"/>
|
||||
<arc rx="75" ry="75" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="78" y="60.41"/>
|
||||
<line x="96" y="60.41"/>
|
||||
<line x="63" y="99.41"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Jump-in Arrow 2" h="99.41" w="96" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="1" y="0.024" perimeter="0" name="NE"/>
|
||||
<constraint x="0.343" y="1" perimeter="0" name="S"/>
|
||||
</connections>
|
||||
<background>
|
||||
|
||||
<linejoin join="round"/>
|
||||
<path>
|
||||
<move x="66" y="60.41"/>
|
||||
<line x="48" y="60.41"/>
|
||||
<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="96" y="2.41"/>
|
||||
<arc rx="75" ry="75" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="18" y="60.41"/>
|
||||
<line x="0" y="60.41"/>
|
||||
<line x="33" y="99.41"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Left and Up Arrow" h="96.5" w="96.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.71" perimeter="0" name="W"/>
|
||||
<constraint x="0.71" y="0" perimeter="0" name="N"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="23.5" y="53.5"/>
|
||||
<line x="53.5" y="53.5"/>
|
||||
<line x="53.5" y="23.5"/>
|
||||
<line x="41.5" y="23.5"/>
|
||||
<line x="68.5" y="0"/>
|
||||
<line x="96.5" y="23.5"/>
|
||||
<line x="83.5" y="23.5"/>
|
||||
<line x="83.5" y="83.5"/>
|
||||
<line x="23.5" y="83.5"/>
|
||||
<line x="23.5" y="96.5"/>
|
||||
<line x="0" y="68.5"/>
|
||||
<line x="23.5" y="41.5"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Left Sharp Edged Head Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="97.5" y="20"/>
|
||||
<line x="18.5" y="20"/>
|
||||
<line x="30.5" y="0"/>
|
||||
<line x="18.5" y="0"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="18.5" y="60"/>
|
||||
<line x="30.5" y="60"/>
|
||||
<line x="18.5" y="40"/>
|
||||
<line x="97.5" y="40"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Notched Signal-in Arrow" h="30" w="96.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="0"/>
|
||||
<line x="83" y="0"/>
|
||||
<line x="96.5" y="15"/>
|
||||
<line x="83" y="30"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="13" y="15"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Quad Arrow" h="97.5" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
<constraint x="0.5" y="1" perimeter="0" name="S"/>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="39" y="39"/>
|
||||
<line x="39" y="19"/>
|
||||
<line x="30" y="19"/>
|
||||
<line x="49" y="0"/>
|
||||
<line x="68" y="19"/>
|
||||
<line x="59" y="19"/>
|
||||
<line x="59" y="39"/>
|
||||
<line x="79" y="39"/>
|
||||
<line x="79" y="30"/>
|
||||
<line x="97.5" y="49"/>
|
||||
<line x="79" y="68"/>
|
||||
<line x="79" y="59"/>
|
||||
<line x="59" y="59"/>
|
||||
<line x="59" y="79"/>
|
||||
<line x="68" y="79"/>
|
||||
<line x="49" y="97.5"/>
|
||||
<line x="30" y="79"/>
|
||||
<line x="39" y="79"/>
|
||||
<line x="39" y="59"/>
|
||||
<line x="19" y="59"/>
|
||||
<line x="19" y="68"/>
|
||||
<line x="0" y="49"/>
|
||||
<line x="19" y="30"/>
|
||||
<line x="19" y="39"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Right Notched Arrow" h="70" w="96.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="20"/>
|
||||
<line x="58" y="20"/>
|
||||
<line x="58" y="0"/>
|
||||
<line x="96.5" y="35"/>
|
||||
<line x="58" y="70"/>
|
||||
<line x="58" y="50"/>
|
||||
<line x="0" y="50"/>
|
||||
<line x="13" y="35"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Sharp Edged Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="97.5" y="20"/>
|
||||
<line x="18.5" y="20"/>
|
||||
<line x="27.5" y="5"/>
|
||||
<line x="18.5" y="0"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="18.5" y="60"/>
|
||||
<line x="27.5" y="55"/>
|
||||
<line x="18.5" y="40"/>
|
||||
<line x="97.5" y="40"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Signal-in Arrow" h="30" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="0"/>
|
||||
<line x="84" y="0"/>
|
||||
<line x="97.5" y="15"/>
|
||||
<line x="84" y="30"/>
|
||||
<line x="0" y="30"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Slender Left Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="97.5" y="20"/>
|
||||
<line x="18.5" y="20"/>
|
||||
<line x="18.5" y="0"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="18.5" y="60"/>
|
||||
<line x="18.5" y="40"/>
|
||||
<line x="97.5" y="40"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Slender Two Way Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="78.5" y="20"/>
|
||||
<line x="18.5" y="20"/>
|
||||
<line x="18.5" y="0"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="18.5" y="60"/>
|
||||
<line x="18.5" y="40"/>
|
||||
<line x="78.5" y="40"/>
|
||||
<line x="78.5" y="60"/>
|
||||
<line x="97.5" y="30"/>
|
||||
<line x="78.5" y="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Slender Wide Tailed Arrow" h="60" w="96.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="0.8" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="58.5" y="20"/>
|
||||
<line x="18.5" y="20"/>
|
||||
<line x="18.5" y="0"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="18.5" y="60"/>
|
||||
<line x="18.5" y="40"/>
|
||||
<line x="58.5" y="40"/>
|
||||
<line x="73.5" y="60"/>
|
||||
<line x="96.5" y="60"/>
|
||||
<line x="76.5" y="30"/>
|
||||
<line x="96.5" y="0"/>
|
||||
<line x="73.5" y="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Striped Arrow" h="70" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="24" y="20"/>
|
||||
<line x="59" y="20"/>
|
||||
<line x="59" y="0"/>
|
||||
<line x="97.5" y="35"/>
|
||||
<line x="59" y="70"/>
|
||||
<line x="59" y="50"/>
|
||||
<line x="24" y="50"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
<rect x="8" y="20" w="12" h="30"/>
|
||||
<fillstroke/>
|
||||
<rect x="0" y="20" w="4" h="30"/>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Stylised Notched Arrow" h="60" w="96.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
|
||||
<miterlimit limit="8"/>
|
||||
<path>
|
||||
<move x="0" y="5"/>
|
||||
<line x="68" y="20"/>
|
||||
<line x="58" y="0"/>
|
||||
<line x="96.5" y="30"/>
|
||||
<line x="58" y="60"/>
|
||||
<line x="68" y="45"/>
|
||||
<line x="0" y="55"/>
|
||||
<line x="13" y="30"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Triad Arrow" h="68" w="97.5" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.72" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.72" perimeter="0" name="E"/>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="39" y="39"/>
|
||||
<line x="39" y="19"/>
|
||||
<line x="30" y="19"/>
|
||||
<line x="49" y="0"/>
|
||||
<line x="68" y="19"/>
|
||||
<line x="59" y="19"/>
|
||||
<line x="59" y="39"/>
|
||||
<line x="79" y="39"/>
|
||||
<line x="79" y="30"/>
|
||||
<line x="97.5" y="49"/>
|
||||
<line x="79" y="68"/>
|
||||
<line x="79" y="59"/>
|
||||
<line x="39" y="59"/>
|
||||
<line x="19" y="59"/>
|
||||
<line x="19" y="68"/>
|
||||
<line x="0" y="49"/>
|
||||
<line x="19" y="30"/>
|
||||
<line x="19" y="39"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Two Way Arrow Horizontal" h="60" w="96" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.5" perimeter="0" name="W"/>
|
||||
<constraint x="1" y="0.5" perimeter="0" name="E"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="63" y="15"/>
|
||||
<line x="63" y="0"/>
|
||||
<line x="96" y="30"/>
|
||||
<line x="63" y="60"/>
|
||||
<line x="63" y="45"/>
|
||||
<line x="33" y="45"/>
|
||||
<line x="33" y="60"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="33" y="0"/>
|
||||
<line x="33" y="15"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="Two Way Arrow Vertical" h="96" w="60" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.5" y="0" perimeter="0" name="N"/>
|
||||
<constraint x="0.5" y="1" perimeter="0" name="S"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="15" y="63"/>
|
||||
<line x="0" y="63"/>
|
||||
<line x="30" y="96"/>
|
||||
<line x="60" y="63"/>
|
||||
<line x="45" y="63"/>
|
||||
<line x="45" y="33"/>
|
||||
<line x="60" y="33"/>
|
||||
<line x="30" y="0"/>
|
||||
<line x="0" y="33"/>
|
||||
<line x="15" y="33"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="U Turn Arrow" h="98" w="97" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.12" y="1" perimeter="0" name="SW"/>
|
||||
<constraint x="0.792" y="0.71" perimeter="0" name="SE"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="44.5"/>
|
||||
<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="89" y="44.5"/>
|
||||
<line x="97" y="44.5"/>
|
||||
<line x="77" y="69.5"/>
|
||||
<line x="57" y="44.5"/>
|
||||
<line x="65" y="44.5"/>
|
||||
<arc rx="20.5" ry="20.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="24" y="44.83"/>
|
||||
<line x="24" y="98"/>
|
||||
<line x="0" y="98"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="U Turn Down Arrow" h="62" w="97" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.91" y="1" perimeter="0" name="SE"/>
|
||||
<constraint x="0.237" y="1" perimeter="0" name="SW"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="97" y="62"/>
|
||||
<line x="97" y="32"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="33" y="32"/>
|
||||
<line x="46" y="32"/>
|
||||
<line x="23" y="62"/>
|
||||
<line x="0" y="32"/>
|
||||
<line x="13" y="32"/>
|
||||
<arc rx="32" ry="32" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="45" y="0"/>
|
||||
<line x="65" y="0"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="53" y="3"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="78" y="32"/>
|
||||
<line x="78" y="62"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="U Turn Left Arrow" h="97.07" w="62.23" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0" y="0.76" perimeter="0" name="SW"/>
|
||||
<constraint x="0" y="0.1" perimeter="0" name="NW"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="0" y="0.19"/>
|
||||
<line x="30" y="0.07"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="1" x="30.25" y="64.07"/>
|
||||
<line x="30.2" y="51.07"/>
|
||||
<line x="0.29" y="74.19"/>
|
||||
<line x="30.37" y="97.07"/>
|
||||
<line x="30.32" y="84.07"/>
|
||||
<arc rx="32" ry="32" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="0" x="62.2" y="51.95"/>
|
||||
<line x="62.13" y="31.95"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="1" x="59.17" y="43.96"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="0" x="30.08" y="19.07"/>
|
||||
<line x="0.08" y="19.19"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="U Turn Right Arrow" h="97.07" w="62.23" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="1" y="0.76" perimeter="0" name="SW"/>
|
||||
<constraint x="1" y="0.1" perimeter="0" name="NW"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="62.23" y="0.19"/>
|
||||
<line x="32.23" y="0.07"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="0" x="31.99" y="64.07"/>
|
||||
<line x="32.03" y="51.07"/>
|
||||
<line x="61.95" y="74.19"/>
|
||||
<line x="31.86" y="97.07"/>
|
||||
<line x="31.91" y="84.07"/>
|
||||
<arc rx="32" ry="32" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="1" x="0.03" y="51.95"/>
|
||||
<line x="0.11" y="31.95"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="0" x="3.06" y="43.96"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="1" x="32.16" y="19.07"/>
|
||||
<line x="62.16" y="19.19"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape name="U Turn Up Arrow" h="62" w="97" aspect="variable" strokewidth="inherit">
|
||||
<connections>
|
||||
<constraint x="0.91" y="0" perimeter="0" name="NE"/>
|
||||
<constraint x="0.237" y="0" perimeter="0" name="NW"/>
|
||||
</connections>
|
||||
<background>
|
||||
<path>
|
||||
<move x="97" y="0"/>
|
||||
<line x="97" y="30"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33" y="30"/>
|
||||
<line x="46" y="30"/>
|
||||
<line x="23" y="0"/>
|
||||
<line x="0" y="30"/>
|
||||
<line x="13" y="30"/>
|
||||
<arc rx="32" ry="32" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="45" y="62"/>
|
||||
<line x="65" y="62"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="53" y="59"/>
|
||||
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="78" y="30"/>
|
||||
<line x="78" y="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
</background>
|
||||
<foreground>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
</shapes>
|
||||
@@ -0,0 +1,713 @@
|
||||
<shapes name="mxgraph.atlassian">
|
||||
<shape aspect="variable" h="100" name="access" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="43.47" y="40.74"/>
|
||||
<line x="43.47" y="33.41"/>
|
||||
<curve x1="43.47" x2="46.13" x3="50.31" y1="29.57" y2="27.41" y3="27.41"/>
|
||||
<curve x1="54.43" x2="56.48" x3="56.48" y1="27.41" y2="30.3" y3="33.49"/>
|
||||
<line x="56.48" y="40.74"/>
|
||||
<close/>
|
||||
<move x="64.28" y="40.74"/>
|
||||
<line x="64.28" y="31.49"/>
|
||||
<curve x1="64.28" x2="58.14" x3="50.56" y1="24.17" y2="18.82" y3="18.82"/>
|
||||
<curve x1="42.72" x2="35.29" x3="35.29" y1="18.82" y2="23.21" y3="31.58"/>
|
||||
<line x="35.29" y="40.74"/>
|
||||
<line x="26.7" y="40.74"/>
|
||||
<line x="26.7" y="78.36"/>
|
||||
<line x="72.42" y="78.36"/>
|
||||
<line x="72.42" y="40.74"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="away" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<ellipse h="100" w="100" x="0" y="0"/>
|
||||
<fillstroke/>
|
||||
<fillcolor color="#ffffff"/>
|
||||
<path>
|
||||
<move x="25" y="58"/>
|
||||
<line x="25" y="42"/>
|
||||
<line x="75" y="42"/>
|
||||
<line x="75" y="58"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fill/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="bug" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="50.39" y="73.31"/>
|
||||
<curve x1="64.49" x2="73.56" x3="73.56" y1="73.31" y2="62.97" y3="50.24"/>
|
||||
<curve x1="73.56" x2="64.92" x3="50.39" y1="36.11" y2="25.57" y3="25.57"/>
|
||||
<curve x1="35.5" x2="27" x3="27" y1="25.57" y2="36.35" y3="50.1"/>
|
||||
<curve x1="27" x2="38.33" x3="50.39" y1="63.58" y2="73.31" y3="73.31"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="change" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
<move x="38.55" y="83.84"/>
|
||||
<line x="38.55" y="71.85"/>
|
||||
<line x="81.62" y="71.85"/>
|
||||
<line x="81.62" y="62.59"/>
|
||||
<line x="38.55" y="62.59"/>
|
||||
<line x="38.55" y="51.51"/>
|
||||
<line x="18.08" y="67.68"/>
|
||||
<close/>
|
||||
<move x="60.84" y="46.03"/>
|
||||
<line x="81.31" y="29.87"/>
|
||||
<line x="60.84" y="13.71"/>
|
||||
<line x="60.84" y="24.79"/>
|
||||
<line x="17.78" y="24.79"/>
|
||||
<line x="17.78" y="34.04"/>
|
||||
<line x="60.84" y="34.04"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="75" name="check" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="0" y="50"/>
|
||||
<line x="25" y="75"/>
|
||||
<line x="100" y="0"/>
|
||||
</path>
|
||||
<stroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="checkbox" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<ellipse h="100" w="100" x="0" y="0"/>
|
||||
<fillstroke/>
|
||||
<fillcolor color="#ffffff"/>
|
||||
<path>
|
||||
<move x="46.57" y="73.87"/>
|
||||
<line x="20.47" y="50.27"/>
|
||||
<line x="28.27" y="41.67"/>
|
||||
<line x="45.57" y="57.57"/>
|
||||
<line x="72.42" y="26.47"/>
|
||||
<line x="81.17" y="33.97"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fill/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="checkbox 2" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<save/>
|
||||
<roundrect arcsize="10" h="100" w="100" x="0" y="0"/>
|
||||
<stroke/>
|
||||
<restore/>
|
||||
<rect/>
|
||||
<stroke/>
|
||||
<path>
|
||||
<move x="0" y="10"/>
|
||||
<arc large-arc-flag="0" rx="10" ry="10" sweep-flag="1" x="10" x-axis-rotation="0" y="0"/>
|
||||
<line x="90" y="0"/>
|
||||
<arc large-arc-flag="0" rx="10" ry="10" sweep-flag="1" x="100" x-axis-rotation="0" y="10"/>
|
||||
<line x="100" y="90"/>
|
||||
<arc large-arc-flag="0" rx="10" ry="10" sweep-flag="1" x="90" x-axis-rotation="0" y="100"/>
|
||||
<line x="10" y="100"/>
|
||||
<arc large-arc-flag="0" rx="10" ry="10" sweep-flag="1" x="0" x-axis-rotation="0" y="90"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fill/>
|
||||
<fillcolor color="#ffffff"/>
|
||||
<path>
|
||||
<move x="10.4" y="63.4"/>
|
||||
<line x="36.4" y="87"/>
|
||||
<line x="90.2" y="25"/>
|
||||
<line x="81.5" y="17.3"/>
|
||||
<line x="35.4" y="70.8"/>
|
||||
<line x="18.1" y="54.9"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fill/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="close" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<ellipse h="100" w="100" x="0" y="0"/>
|
||||
<fillstroke/>
|
||||
<fillcolor color="#ffffff"/>
|
||||
<path>
|
||||
<move x="21.4" y="71.5"/>
|
||||
<line x="43" y="50"/>
|
||||
<line x="21.4" y="28.5"/>
|
||||
<line x="28.5" y="21.4"/>
|
||||
<line x="50" y="43"/>
|
||||
<line x="71.5" y="21.4"/>
|
||||
<line x="78.6" y="28.5"/>
|
||||
<line x="57" y="50"/>
|
||||
<line x="78.5" y="71.5"/>
|
||||
<line x="71.5" y="78.5"/>
|
||||
<line x="50" y="57"/>
|
||||
<line x="28.5" y="78.5"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fill/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100.19" name="critical" strokewidth="inherit" w="57.85">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="23.06" y="86.24"/>
|
||||
<curve x1="23.06" x2="26.21" x3="28.8" y1="82.46" y2="80.6" y3="80.6"/>
|
||||
<curve x1="32.3" x2="34.67" x3="34.67" y1="80.6" y2="83.35" y3="86.55"/>
|
||||
<line x="34.67" y="94.24"/>
|
||||
<curve x1="34.67" x2="32.3" x3="28.8" y1="97.43" y2="100.19" y3="100.19"/>
|
||||
<curve x1="26.21" x2="23.06" x3="23.06" y1="100.19" y2="98.33" y3="94.54"/>
|
||||
<close/>
|
||||
<move x="23.21" y="20.13"/>
|
||||
<line x="10.73" y="32.76"/>
|
||||
<curve x1="7.9" x2="4.44" x3="2.45" y1="35.16" y2="34.42" y3="32.5"/>
|
||||
<curve x1="0.64" x2="0" x3="2.77" y1="30.65" y2="26.73" y3="24.16"/>
|
||||
<line x="24.57" y="2.31"/>
|
||||
<curve x1="26.8" x2="30.86" x3="33.12" y1="0.09" y2="0" y3="2.36"/>
|
||||
<line x="55.04" y="24.28"/>
|
||||
<curve x1="57.04" x2="57.85" x3="54.98" y1="26.26" y2="29.98" y3="32.78"/>
|
||||
<curve x1="52.09" x2="48.79" x3="46.53" y1="35.13" y2="34.66" y3="32.23"/>
|
||||
<line x="34.82" y="20.47"/>
|
||||
<line x="34.82" y="65.67"/>
|
||||
<curve x1="34.82" x2="32.44" x3="28.95" y1="68.86" y2="71.62" y3="71.62"/>
|
||||
<curve x1="26.36" x2="23.21" x3="23.21" y1="71.62" y2="69.76" y3="65.97"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="101.24" name="double" strokewidth="inherit" w="90.84">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="4.69" y="16.58"/>
|
||||
<curve x1="0" x2="2.77" x3="5.4" y1="11.24" y2="5.59" y3="3.33"/>
|
||||
<curve x1="8.39" x2="14.36" x3="17.32" y1="0.52" y2="0.16" y3="3.24"/>
|
||||
<line x="46.05" y="31.94"/>
|
||||
<line x="73.89" y="3.85"/>
|
||||
<curve x1="77.67" x2="83.24" x3="86.92" y1="0" y2="0.2" y3="3.46"/>
|
||||
<curve x1="90.84" x2="90.4" x3="87.97" y1="7.53" y2="12.61" y3="15.47"/>
|
||||
<line x="54.25" y="49.5"/>
|
||||
<curve x1="50.42" x2="44.33" x3="38.89" y1="53.88" y2="56.11" y3="50.69"/>
|
||||
<close/>
|
||||
<move x="4.07" y="62.67"/>
|
||||
<curve x1="0.49" x2="1.77" x3="5.24" y1="58.92" y2="52.64" y3="49.75"/>
|
||||
<curve x1="8.37" x2="13.95" x3="16.99" y1="47.27" y2="46.64" y3="49.6"/>
|
||||
<line x="45.88" y="78.52"/>
|
||||
<line x="74.17" y="50.16"/>
|
||||
<curve x1="77.42" x2="83.3" x3="87.27" y1="47.06" y2="46.47" y3="50.66"/>
|
||||
<curve x1="89.88" x2="90.36" x3="87.81" y1="53.69" y2="59.31" y3="62.04"/>
|
||||
<line x="52.68" y="97.56"/>
|
||||
<curve x1="48.93" x2="42.58" x3="39.34" y1="101.18" y2="101.24" y3="97.74"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="101.24" name="double up" strokewidth="inherit" w="90.84">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="4.69" y="84.67"/>
|
||||
<curve x1="0" x2="2.77" x3="5.4" y1="90" y2="95.65" y3="97.92"/>
|
||||
<curve x1="8.39" x2="14.36" x3="17.32" y1="100.72" y2="101.08" y3="98"/>
|
||||
<line x="46.05" y="69.3"/>
|
||||
<line x="73.89" y="97.39"/>
|
||||
<curve x1="77.67" x2="83.24" x3="86.92" y1="101.24" y2="101.04" y3="97.78"/>
|
||||
<curve x1="90.84" x2="90.4" x3="87.97" y1="93.71" y2="88.63" y3="85.77"/>
|
||||
<line x="54.25" y="51.74"/>
|
||||
<curve x1="50.42" x2="44.33" x3="38.89" y1="47.36" y2="45.13" y3="50.55"/>
|
||||
<close/>
|
||||
<move x="4.07" y="38.57"/>
|
||||
<curve x1="0.49" x2="1.77" x3="5.24" y1="42.32" y2="48.6" y3="51.5"/>
|
||||
<curve x1="8.37" x2="13.95" x3="16.99" y1="53.97" y2="54.61" y3="51.64"/>
|
||||
<line x="45.88" y="22.72"/>
|
||||
<line x="74.17" y="51.08"/>
|
||||
<curve x1="77.42" x2="83.3" x3="87.27" y1="54.18" y2="54.77" y3="50.58"/>
|
||||
<curve x1="89.88" x2="90.36" x3="87.81" y1="47.55" y2="41.93" y3="39.2"/>
|
||||
<line x="52.68" y="3.68"/>
|
||||
<curve x1="48.93" x2="42.58" x3="39.34" y1="0.06" y2="0" y3="3.5"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="do not disturb" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<ellipse h="100" w="100" x="0" y="0"/>
|
||||
<fillstroke/>
|
||||
<fillcolor color="#ffffff"/>
|
||||
<path>
|
||||
<move x="38" y="26.7"/>
|
||||
<line x="73.2" y="62"/>
|
||||
<line x="62" y="73.2"/>
|
||||
<line x="26.7" y="38"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fill/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="epic" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="71.72" y="49.21"/>
|
||||
<curve x1="74.39" x2="72.22" x3="68.71" y1="44.31" y2="41.07" y3="41.11"/>
|
||||
<line x="49.08" y="42.05"/>
|
||||
<line x="51.98" y="23.66"/>
|
||||
<curve x1="52.33" x2="46.01" x3="43.88" y1="18.74" y2="18.75" y3="21.9"/>
|
||||
<line x="28.3" y="50.56"/>
|
||||
<curve x1="25.72" x2="27.17" x3="31.83" y1="55.57" y2="58.04" y3="58.04"/>
|
||||
<line x="52.5" y="56.07"/>
|
||||
<line x="47.73" y="74.25"/>
|
||||
<curve x1="46.45" x2="54.56" x3="56.55" y1="78.84" y2="80.67" y3="77.36"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="fault" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="53.71" y="56.64"/>
|
||||
<curve x1="61.91" x2="69" x3="74.41" y1="57.57" y2="56.51" y3="51.9"/>
|
||||
<curve x1="79.57" x2="80.61" x3="79.45" y1="46.78" y2="40.51" y3="34.43"/>
|
||||
<line x="68.35" y="42.13"/>
|
||||
<curve x1="65.42" x2="61.24" x3="58.89" y1="43.92" y2="42.38" y3="38.81"/>
|
||||
<curve x1="56.72" x2="56.41" x3="58.96" y1="35.59" y2="30.97" y3="29.34"/>
|
||||
<line x="70.85" y="21.62"/>
|
||||
<curve x1="63.44" x2="54.39" x3="47.79" y1="18.88" y2="19.06" y3="24.78"/>
|
||||
<curve x1="41.86" x2="41.9" x3="43.6" y1="30.19" y2="38.9" y3="43.75"/>
|
||||
<line x="22.89" y="65.58"/>
|
||||
<curve x1="19.75" x2="20.31" x3="24.44" y1="69.21" y2="74.3" y3="77.41"/>
|
||||
<curve x1="27.89" x2="32.38" x3="35.03" y1="80.16" y2="80.14" y3="77.55"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="improvement" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="44.08" y="39.91"/>
|
||||
<line x="44.08" y="74.62"/>
|
||||
<curve x1="44.08" x2="47.37" x3="50.09" y1="78.58" y2="80.53" y3="80.53"/>
|
||||
<curve x1="53.74" x2="56.23" x3="56.23" y1="80.53" y2="77.65" y3="74.3"/>
|
||||
<line x="56.23" y="40.26"/>
|
||||
<line x="68.49" y="52.57"/>
|
||||
<curve x1="70.86" x2="74.31" x3="77.34" y1="55.12" y2="55.61" y3="53.15"/>
|
||||
<curve x1="80.34" x2="79.5" x3="77.4" y1="50.22" y2="46.32" y3="44.25"/>
|
||||
<line x="54.45" y="21.3"/>
|
||||
<curve x1="52.09" x2="47.84" x3="45.5" y1="18.83" y2="18.92" y3="21.24"/>
|
||||
<line x="22.68" y="44.12"/>
|
||||
<curve x1="19.77" x2="20.44" x3="22.34" y1="46.81" y2="50.91" y3="52.86"/>
|
||||
<curve x1="24.42" x2="28.05" x3="31.01" y1="54.87" y2="55.63" y3="53.13"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="it help" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="22.9" y="62.8"/>
|
||||
<line x="22.9" y="24.8"/>
|
||||
<line x="76.9" y="24.8"/>
|
||||
<line x="76.9" y="62.8"/>
|
||||
<line x="22.9" y="62.8"/>
|
||||
<close/>
|
||||
<move x="21" y="67.6"/>
|
||||
<line x="40.9" y="67.7"/>
|
||||
<line x="41.5" y="71.2"/>
|
||||
<curve x1="41.9" x2="40.8" x3="39.1" y1="73" y2="74.7" y3="75.2"/>
|
||||
<curve x1="36.9" x2="34.6" x3="32.3" y1="76" y2="76.4" y3="76.4"/>
|
||||
<line x="27.9" y="76.4"/>
|
||||
<line x="27.9" y="80.4"/>
|
||||
<line x="69.5" y="80.4"/>
|
||||
<line x="69.5" y="76.4"/>
|
||||
<line x="65.8" y="76.4"/>
|
||||
<curve x1="63.8" x2="61.7" x3="59.8" y1="76.5" y2="76.2" y3="75.5"/>
|
||||
<curve x1="58.1" x2="57" x3="57.3" y1="75.1" y2="73.4" y3="71.6"/>
|
||||
<curve x1="57.3" x2="57.3" x3="57.3" y1="71.6" y2="71.5" y3="71.5"/>
|
||||
<line x="58.2" y="67.7"/>
|
||||
<line x="78.2" y="67.7"/>
|
||||
<curve x1="79.9" x2="81.4" x3="81.8" y1="67.6" y2="66.3" y3="64.6"/>
|
||||
<line x="81.9" y="23"/>
|
||||
<curve x1="81.7" x2="80.1" x3="78.2" y1="21.1" y2="19.6" y3="19.7"/>
|
||||
<line x="21.2" y="19.7"/>
|
||||
<curve x1="19.6" x2="18.3" x3="18.2" y1="19.9" y2="21.3" y3="23"/>
|
||||
<line x="18.2" y="63.9"/>
|
||||
<curve x1="18" x2="19.2" x3="21" y1="65.7" y2="67.4" y3="67.6"/>
|
||||
<curve x1="21" x2="21" x3="21" y1="67.6" y2="67.6" y3="67.6"/>
|
||||
<close/>
|
||||
<move x="90.2" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.6" y3="9.9"/>
|
||||
<line x="100" y="92.1"/>
|
||||
<curve x1="100" x2="96.9" x3="92.4" y1="96.7" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98" y3="92.7"/>
|
||||
<line x="0" y="8.3"/>
|
||||
<curve x1="0" x2="3.4" x3="8.2" y1="3.6" y2="0" y3="0"/>
|
||||
<line x="90.2" y="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape><shape aspect="variable" h="100.87" name="location" strokewidth="inherit" w="79.94">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="39.97" y="100.87"/>
|
||||
<line x="9.97" y="58.87"/>
|
||||
<arc large-arc-flag="1" rx="36" ry="36" sweep-flag="1" x="69.97" x-axis-rotation="0" y="58.87"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="new feature" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="20.6" y="43.05"/>
|
||||
<line x="20.6" y="57.5"/>
|
||||
<line x="41.07" y="57.5"/>
|
||||
<line x="41.07" y="77.55"/>
|
||||
<line x="58.89" y="77.55"/>
|
||||
<line x="58.89" y="57.5"/>
|
||||
<line x="79.4" y="57.5"/>
|
||||
<line x="79.4" y="43.05"/>
|
||||
<line x="58.89" y="43.05"/>
|
||||
<line x="58.89" y="22.45"/>
|
||||
<line x="41.07" y="22.45"/>
|
||||
<line x="41.07" y="43.05"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="99.56" name="no" strokewidth="inherit" w="99.52">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="49.96" y="99.56"/>
|
||||
<curve x1="20.35" x2="0" x3="0" y1="99.56" y2="75.22" y3="50.71"/>
|
||||
<curve x1="0" x2="23.39" x3="49.84" y1="20.76" y2="0" y3="0"/>
|
||||
<curve x1="75.57" x2="99.52" x3="99.52" y1="0" y2="20.15" y3="50.17"/>
|
||||
<curve x1="99.52" x2="75.94" x3="49.96" y1="78.12" y2="99.56" y3="99.56"/>
|
||||
<close/>
|
||||
<move x="29.47" y="81.04"/>
|
||||
<curve x1="34.92" x2="42.29" x3="51.31" y1="85" y2="87.11" y3="87.11"/>
|
||||
<curve x1="67.71" x2="87.23" x3="87.23" y1="87.11" y2="72.64" y3="49.03"/>
|
||||
<curve x1="87.23" x2="84.14" x3="80.94" y1="41.56" y2="34.31" y3="29.51"/>
|
||||
<close/>
|
||||
<move x="20.22" y="72.65"/>
|
||||
<line x="72.64" y="20.2"/>
|
||||
<curve x1="66.69" x2="60.02" x3="48.96" y1="15.92" y2="12.26" y3="12.31"/>
|
||||
<curve x1="31.22" x2="12.36" x3="12.36" y1="12.31" y2="27.66" y3="49.55"/>
|
||||
<curve x1="12.36" x2="15.9" x3="20.22" y1="59.46" y2="67.01" y3="72.65"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="purchase" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="47.21" y="79.08"/>
|
||||
<line x="53.47" y="79.21"/>
|
||||
<line x="53.47" y="72.83"/>
|
||||
<curve x1="59.66" x2="62.66" x3="63.93" y1="71.67" y2="67.58" y3="64.78"/>
|
||||
<curve x1="65.47" x2="65.69" x3="62.49" y1="62.47" y2="55.08" y3="50.62"/>
|
||||
<curve x1="59.39" x2="55.47" x3="50.85" y1="46.91" y2="45.06" y3="44.21"/>
|
||||
<curve x1="45.05" x2="42.6" x3="43.05" y1="42.93" y2="40.88" y3="38.16"/>
|
||||
<curve x1="43.95" x2="46.09" x3="50.54" y1="35.09" y2="33.32" y3="32.99"/>
|
||||
<curve x1="55.87" x2="59.73" x3="62.45" y1="33.03" y2="34.88" y3="35.96"/>
|
||||
<line x="63.98" y="29.62"/>
|
||||
<curve x1="61.25" x2="56.46" x3="53.47" y1="27.59" y2="26.06" y3="25.45"/>
|
||||
<line x="53.47" y="20.32"/>
|
||||
<line x="47.21" y="20.32"/>
|
||||
<line x="47.21" y="25.85"/>
|
||||
<curve x1="43.02" x2="39.09" x3="36.02" y1="26.5" y2="28.37" y3="32.91"/>
|
||||
<curve x1="33.94" x2="34" x3="36.12" y1="35.39" y2="42.05" y3="44.77"/>
|
||||
<curve x1="37.93" x2="43.41" x3="48.46" y1="48.05" y2="51.23" y3="52.24"/>
|
||||
<curve x1="54.11" x2="55.92" x3="55.86" y1="53.53" y2="55.72" y3="58.73"/>
|
||||
<curve x1="55.73" x2="53.65" x3="49.01" y1="61.45" y2="64.06" y3="64.69"/>
|
||||
<curve x1="44.8" x2="41.96" x3="39.2" y1="65.16" y2="62.72" y3="60.68"/>
|
||||
<line x="35.28" y="67.28"/>
|
||||
<curve x1="37.88" x2="42.16" x3="47.21" y1="70.67" y2="72.07" y3="73.01"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100.26" name="single" strokewidth="inherit" w="80.99">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="32.5" y="28.19"/>
|
||||
<line x="15.02" y="45.87"/>
|
||||
<curve x1="11.06" x2="6.22" x3="3.43" y1="49.22" y2="48.19" y3="45.5"/>
|
||||
<curve x1="0.89" x2="0" x3="3.88" y1="42.9" y2="37.42" y3="33.83"/>
|
||||
<line x="34.4" y="3.23"/>
|
||||
<curve x1="37.53" x2="43.21" x3="46.37" y1="0.13" y2="0" y3="3.3"/>
|
||||
<line x="77.05" y="33.99"/>
|
||||
<curve x1="79.86" x2="80.99" x3="76.97" y1="36.76" y2="41.97" y3="45.89"/>
|
||||
<curve x1="72.92" x2="68.31" x3="65.14" y1="49.18" y2="48.53" y3="45.12"/>
|
||||
<line x="48.75" y="28.66"/>
|
||||
<line x="48.75" y="91.94"/>
|
||||
<curve x1="48.75" x2="45.42" x3="40.53" y1="96.4" y2="100.26" y3="100.26"/>
|
||||
<curve x1="36.9" x2="32.5" x3="32.5" y1="100.26" y2="97.66" y3="92.36"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="story" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="27.51" y="82.04"/>
|
||||
<line x="50" y="57.32"/>
|
||||
<line x="72.49" y="83.02"/>
|
||||
<line x="72.49" y="16.15"/>
|
||||
<line x="27.51" y="16.15"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="subtask" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="24.8" y="52.9"/>
|
||||
<line x="24.8" y="24.5"/>
|
||||
<line x="53.2" y="24.5"/>
|
||||
<line x="53.2" y="39.6"/>
|
||||
<line x="44.6" y="39.6"/>
|
||||
<curve x1="40.1" x2="37.8" x3="37.8" y1="39.6" y2="42.3" y3="46.6"/>
|
||||
<curve x1="37.8" x2="37.8" x3="37.8" y1="47.8" y2="51.7" y3="52.9"/>
|
||||
<line x="24.8" y="52.9"/>
|
||||
<close/>
|
||||
<move x="75" y="83.1"/>
|
||||
<curve x1="79.7" x2="82.6" x3="82.6" y1="83.1" y2="79.7" y3="74.4"/>
|
||||
<line x="82.6" y="47.9"/>
|
||||
<curve x1="82.6" x2="79.4" x3="74.3" y1="42.4" y2="39.6" y3="39.6"/>
|
||||
<line x="60.9" y="39.6"/>
|
||||
<line x="60.9" y="23.2"/>
|
||||
<curve x1="60.9" x2="57.8" x3="54" y1="18.5" y2="16.2" y3="16.1"/>
|
||||
<line x="24.1" y="16.1"/>
|
||||
<curve x1="18.1" x2="16.1" x3="16.1" y1="16.1" y2="18.1" y3="24.2"/>
|
||||
<line x="16.1" y="55.1"/>
|
||||
<curve x1="16.1" x2="18.3" x3="22.9" y1="59.9" y2="62.5" y3="62.5"/>
|
||||
<line x="37.7" y="62.5"/>
|
||||
<line x="37.7" y="75.4"/>
|
||||
<curve x1="37.7" x2="40.4" x3="45.7" y1="80.6" y2="83.1" y3="83.1"/>
|
||||
<line x="75" y="83.1"/>
|
||||
<close/>
|
||||
<move x="90.2" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.6" y3="9.9"/>
|
||||
<line x="100" y="92.1"/>
|
||||
<curve x1="100" x2="96.9" x3="92.4" y1="96.7" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98" y3="92.7"/>
|
||||
<line x="0" y="8.3"/>
|
||||
<curve x1="0" x2="3.4" x3="8.2" y1="3.6" y2="0" y3="0"/>
|
||||
<line x="90.2" y="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="task" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="37.29" y="72.62"/>
|
||||
<curve x1="40.46" x2="44.76" x3="48.09" y1="75.16" y2="76.04" y3="72.69"/>
|
||||
<line x="77.1" y="38.76"/>
|
||||
<curve x1="79.79" x2="81.84" x3="77.47" y1="35.86" y2="29.92" y3="25.91"/>
|
||||
<curve x1="72.52" x2="67.66" x3="64.4" y1="22.15" y2="24.16" y3="27.75"/>
|
||||
<line x="42.44" y="55.51"/>
|
||||
<line x="31.05" y="46.25"/>
|
||||
<curve x1="27.51" x2="23.08" x3="19.74" y1="43.34" y2="42.44" y3="46.18"/>
|
||||
<curve x1="16.72" x2="17.18" x3="20.55" y1="49.76" y2="55.61" y3="58.67"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="tech task" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="43.73" y="49.11"/>
|
||||
<curve x1="43.67" x2="45.81" x3="49.63" y1="45.62" y2="43.41" y3="43.34"/>
|
||||
<curve x1="52.61" x2="55.1" x3="55.1" y1="43.45" y2="45.36" y3="49.11"/>
|
||||
<curve x1="55.1" x2="52.54" x3="49.63" y1="52.45" y2="54.78" y3="54.78"/>
|
||||
<curve x1="46.06" x2="43.73" x3="43.73" y1="54.78" y2="52.64" y3="49.11"/>
|
||||
<close/>
|
||||
<move x="27.7" y="49.48"/>
|
||||
<curve x1="27.7" x2="36.52" x3="50" y1="62.79" y2="70.89" y3="70.89"/>
|
||||
<curve x1="61.01" x2="70.69" x3="70.69" y1="70.89" y2="62.08" y3="49.48"/>
|
||||
<curve x1="70.69" x2="61.26" x3="50" y1="35.31" y2="28.07" y3="27.68"/>
|
||||
<curve x1="35.57" x2="27.47" x3="27.7" y1="27.94" y2="36.3" y3="49.48"/>
|
||||
<close/>
|
||||
<move x="20.85" y="49.54"/>
|
||||
<curve x1="20.54" x2="31.22" x3="50.26" y1="32.16" y2="21.14" y3="20.79"/>
|
||||
<curve x1="65.11" x2="77.55" x3="77.55" y1="21.3" y2="30.85" y3="49.54"/>
|
||||
<curve x1="77.55" x2="64.78" x3="50.26" y1="66.16" y2="77.78" y3="77.78"/>
|
||||
<curve x1="32.48" x2="20.85" x3="20.85" y1="77.78" y2="67.1" y3="49.54"/>
|
||||
<close/>
|
||||
<move x="90.19" y="0"/>
|
||||
<curve x1="96.2" x2="100" x3="100" y1="0" y2="3.64" y3="9.9"/>
|
||||
<line x="100" y="92.13"/>
|
||||
<curve x1="100" x2="96.95" x3="92.41" y1="96.74" y2="100" y3="100"/>
|
||||
<line x="7.2" y="100"/>
|
||||
<curve x1="3.1" x2="0" x3="0" y1="100" y2="98.04" y3="92.69"/>
|
||||
<line x="0" y="8.34"/>
|
||||
<curve x1="0" x2="3.4" x3="8.18" y1="3.56" y2="0" y3="0"/>
|
||||
<close/>
|
||||
<move x="85.94" y="5.29"/>
|
||||
<line x="12.6" y="5.29"/>
|
||||
<curve x1="8.33" x2="5.29" x3="5.29" y1="5.29" y2="8.47" y3="12.74"/>
|
||||
<line x="5.29" y="88.18"/>
|
||||
<curve x1="5.29" x2="8.06" x3="11.73" y1="92.96" y2="94.71" y3="94.71"/>
|
||||
<line x="87.92" y="94.71"/>
|
||||
<curve x1="91.98" x2="94.71" x3="94.71" y1="94.71" y2="91.8" y3="87.67"/>
|
||||
<line x="94.71" y="14.15"/>
|
||||
<curve x1="94.71" x2="91.31" x3="85.94" y1="8.54" y2="5.29" y3="5.29"/>
|
||||
<close/>
|
||||
</path>
|
||||
<fillstroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
<shape aspect="variable" h="100" name="x" strokewidth="inherit" w="100">
|
||||
<connections/>
|
||||
<foreground>
|
||||
<path>
|
||||
<move x="0" y="0"/>
|
||||
<line x="100" y="100"/>
|
||||
</path>
|
||||
<stroke/>
|
||||
<path>
|
||||
<move x="100" y="0"/>
|
||||
<line x="0" y="100"/>
|
||||
</path>
|
||||
<stroke/>
|
||||
</foreground>
|
||||
</shape>
|
||||
</shapes>
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 13 KiB |