diff --git a/nezha-fronted/src/components/common/language/cn.js b/nezha-fronted/src/components/common/language/cn.js index 73bdf4bff..15a430cd8 100644 --- a/nezha-fronted/src/components/common/language/cn.js +++ b/nezha-fronted/src/components/common/language/cn.js @@ -203,7 +203,10 @@ const cn = { range:'Range', }, legendValue:'Legend option', - content:'内容' + content:'内容', + tooltip:'Tooltip', + displayChart:'Display chart', + aggregation:"Aggregation", }, chartTableColumn: { metric: "指标", diff --git a/nezha-fronted/src/components/common/language/en.js b/nezha-fronted/src/components/common/language/en.js index 1a789e57c..8c5800f9b 100644 --- a/nezha-fronted/src/components/common/language/en.js +++ b/nezha-fronted/src/components/common/language/en.js @@ -210,7 +210,10 @@ const en = { range:'Range', }, legendValue:'Legend option', - content:'Content' + content:'Content', + tooltip:'Tooltip', + displayChart:'Display chart', + aggregation:"Aggregation", }, chartTableColumn:{ metric:'Metric', //'指标' diff --git a/nezha-fronted/src/components/common/project/L5/CanvasContextMenu.vue b/nezha-fronted/src/components/common/project/L5/CanvasContextMenu.vue new file mode 100644 index 000000000..8f5d7c1b2 --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/CanvasContextMenu.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/nezha-fronted/src/components/common/project/L5/CanvasProps.vue b/nezha-fronted/src/components/common/project/L5/CanvasProps.vue new file mode 100644 index 000000000..8acde97ab --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/CanvasProps.vue @@ -0,0 +1,1375 @@ + + + + + + diff --git a/nezha-fronted/src/components/common/project/L5/css/iconfont.css b/nezha-fronted/src/components/common/project/L5/css/iconfont.css new file mode 100644 index 000000000..a79ce8b86 --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/css/iconfont.css @@ -0,0 +1,640 @@ +@font-face {font-family: "iconfont"; + src: url('//at.alicdn.com/t/font_1113798_m8wtja2grda.eot?t=1582278460666'); /* IE9 */ + src: url('//at.alicdn.com/t/font_1113798_m8wtja2grda.eot?t=1582278460666#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('//at.alicdn.com/t/font_1113798_m8wtja2grda.woff?t=1582278460666') format('woff'), + url('//at.alicdn.com/t/font_1113798_m8wtja2grda.ttf?t=1582278460666') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('//at.alicdn.com/t/font_1113798_m8wtja2grda.svg?t=1582278460666#iconfont') format('svg'); /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-bk-color:before { + content: "\e647"; +} + +.icon-json:before { + content: "\e63f"; +} + +.icon-zip:before { + content: "\e65b"; +} + +.icon-tag:before { + content: "\e752"; +} + +.icon-attention:before { + content: "\e73d"; +} + +.icon-app:before { + content: "\e63e"; +} + +.icon-huaxue:before { + content: "\e9bc"; +} + +.icon-paobu:before { + content: "\e70d"; +} + +.icon-yangguang:before { + content: "\e653"; +} + +.icon-bar-chart:before { + content: "\e63c"; +} + +.icon-line-chart:before { + content: "\e851"; +} + +.icon-dashboard-chart:before { + content: "\e68b"; +} + +.icon-pie-chart:before { + content: "\e63d"; +} + +.icon-mind:before { + content: "\e63b"; +} + +.icon-svg:before { + content: "\e86e"; +} + +.icon-loop:before { + content: "\e638"; +} + +.icon-full-screen:before { + content: "\e63a"; +} + +.icon-pc:before { + content: "\e639"; +} + +.icon-play:before { + content: "\e636"; +} + +.icon-pause:before { + content: "\e698"; +} + +.icon-data:before { + content: "\e64c"; +} + +.icon-align-middle:before { + content: "\ec5b"; +} + +.icon-align-center:before { + content: "\e635"; +} + +.icon-align-bottom:before { + content: "\ec58"; +} + +.icon-align-right:before { + content: "\ec5a"; +} + +.icon-align-top:before { + content: "\e651"; +} + +.icon-align-left:before { + content: "\ec59"; +} + +.icon-from-line:before { + content: "\e630"; +} + +.icon-to-line:before { + content: "\ec56"; +} + +.icon-flow-event:before { + content: "\e665"; +} + +.icon-to-circleSolid:before { + content: "\e62b"; +} + +.icon-from-circleSolid:before { + content: "\ec55"; +} + +.icon-to-diamondSolid:before { + content: "\ec54"; +} + +.icon-from-diamondSolid:before { + content: "\e62e"; +} + +.icon-from-triangleSolid:before { + content: "\e634"; +} + +.icon-to-triangleSolid:before { + content: "\ec53"; +} + +.icon-from-:before { + content: "\e633"; +} + +.icon-to-:before { + content: "\ec52"; +} + +.icon-from-lineUp:before { + content: "\ec51"; +} + +.icon-to-lineDown:before { + content: "\e632"; +} + +.icon-to-lineUp:before { + content: "\e631"; +} + +.icon-from-lineDown:before { + content: "\ec50"; +} + +.icon-from-circle:before { + content: "\ec4e"; +} + +.icon-to-circle:before { + content: "\e62f"; +} + +.icon-from-diamond:before { + content: "\e62c"; +} + +.icon-to-diamond:before { + content: "\ec4c"; +} + +.icon-to-triangle:before { + content: "\e62a"; +} + +.icon-from-triangle:before { + content: "\ec4b"; +} + +.icon-picture:before { + content: "\e64e"; +} + +.icon-polyline:before { + content: "\e629"; +} + +.icon-curve:before { + content: "\e628"; +} + +.icon-folder:before { + content: "\e67c"; +} + +.icon-share2:before { + content: "\e66c"; +} + +.icon-class:before { + content: "\e627"; +} + +.icon-simple-class:before { + content: "\e626"; +} + +.icon-focus:before { + content: "\e622"; +} + +.icon-people:before { + content: "\e625"; +} + +.icon-lifeline:before { + content: "\e624"; +} + +.icon-fork:before { + content: "\ec49"; +} + +.icon-fork-v:before { + content: "\e621"; +} + +.icon-swimlane-v:before { + content: "\e620"; +} + +.icon-swimlane-h:before { + content: "\ec48"; +} + +.icon-action:before { + content: "\e61f"; +} + +.icon-inital:before { + content: "\e716"; +} + +.icon-final:before { + content: "\e61d"; +} + +.icon-loading:before { + content: "\e61c"; +} + +.icon-cube:before { + content: "\e6fc"; +} + +.icon-help:before { + content: "\e61e"; +} + +.icon-help-circle:before { + content: "\e637"; +} + +.icon-line:before { + content: "\e61b"; +} + +.icon-extern-storage:before { + content: "\e60e"; +} + +.icon-internal-storage:before { + content: "\e60d"; +} + +.icon-db:before { + content: "\e60c"; +} + +.icon-flow-subprocess:before { + content: "\e606"; +} + +.icon-msg:before { + content: "\e61a"; +} + +.icon-cloud:before { + content: "\e60a"; +} + +.icon-text:before { + content: "\e619"; +} + +.icon-twoway-arrow:before { + content: "\e618"; +} + +.icon-pentagram:before { + content: "\e64b"; +} + +.icon-hexagon:before { + content: "\e617"; +} + +.icon-pentagon:before { + content: "\e616"; +} + +.icon-triangle:before { + content: "\e615"; +} + +.icon-rect:before { + content: "\e60f"; +} + +.icon-flow-queue:before { + content: "\e614"; +} + +.icon-flow-comment:before { + content: "\e613"; +} + +.icon-flow-parallel:before { + content: "\e612"; +} + +.icon-flow-display:before { + content: "\e611"; +} + +.icon-flow-manually:before { + content: "\e610"; +} + +.icon-diamond:before { + content: "\e604"; +} + +.icon-rectangle:before { + content: "\e60b"; +} + +.icon-flow-ready:before { + content: "\e609"; +} + +.icon-flow-data:before { + content: "\e605"; +} + +.icon-flow-document:before { + content: "\e601"; +} + +.icon-flow-start:before { + content: "\e602"; +} + +.icon-file:before { + content: "\e7b4"; +} + +.icon-star-half-o:before { + content: "\e828"; +} + +.icon-star-o:before { + content: "\e82a"; +} + +.icon-star:before { + content: "\e82b"; +} + +.icon-clock:before { + content: "\e688"; +} + +.icon-triangle-right:before { + content: "\e607"; +} + +.icon-triangle-left:before { + content: "\e608"; +} + +.icon-triangle-down:before { + content: "\e70f"; +} + +.icon-triangle-up:before { + content: "\e710"; +} + +.icon-dash-dot:before { + content: "\e664"; +} + +.icon-appreciate:before { + content: "\e644"; +} + +.icon-check:before { + content: "\e645"; +} + +.icon-close:before { + content: "\e646"; +} + +.icon-edit:before { + content: "\e649"; +} + +.icon-roundcheckfill:before { + content: "\e656"; +} + +.icon-roundcheck:before { + content: "\e657"; +} + +.icon-roundclosefill:before { + content: "\e658"; +} + +.icon-roundclose:before { + content: "\e659"; +} + +.icon-warnfill:before { + content: "\e662"; +} + +.icon-warn:before { + content: "\e663"; +} + +.icon-commentfill:before { + content: "\e667"; +} + +.icon-likefill:before { + content: "\e668"; +} + +.icon-like:before { + content: "\e669"; +} + +.icon-notificationfill:before { + content: "\e66a"; +} + +.icon-notification:before { + content: "\e66b"; +} + +.icon-arrow-up:before { + content: "\ec57"; +} + +.icon-more:before { + content: "\e684"; +} + +.icon-moreandroid:before { + content: "\e6a5"; +} + +.icon-cart:before { + content: "\e6af"; +} + +.icon-delete:before { + content: "\e6b4"; +} + +.icon-home:before { + content: "\e6b8"; +} + +.icon-message:before { + content: "\e6bc"; +} + +.icon-lock:before { + content: "\e6c1"; +} + +.icon-unlock:before { + content: "\e6c2"; +} + +.icon-add:before { + content: "\e6da"; +} + +.icon-appreciatefill:before { + content: "\e6e3"; +} + +.icon-infofill:before { + content: "\e6e4"; +} + +.icon-info:before { + content: "\e6e5"; +} + +.icon-share:before { + content: "\e6f3"; +} + +.icon-sort:before { + content: "\e700"; +} + +.icon-copy:before { + content: "\e706"; +} + +.icon-noticefill:before { + content: "\e709"; +} + +.icon-notice:before { + content: "\e70a"; +} + +.icon-font:before { + content: "\e6ec"; +} + +.icon-angle-left:before { + content: "\e697"; +} + +.icon-angle-top:before { + content: "\e6a6"; +} + +.icon-angle-down:before { + content: "\e6a7"; +} + +.icon-angle-right:before { + content: "\e6a8"; +} + +.icon-arrow-down:before { + content: "\e72d"; +} + +.icon-bold:before { + content: "\e603"; +} + +.icon-search:before { + content: "\e623"; +} + +.icon-reply:before { + content: "\e8ad"; +} + +.icon-redo:before { + content: "\e8ae"; +} + +.icon-download:before { + content: "\e691"; +} + +.icon-upload:before { + content: "\e64a"; +} + +.icon-fly:before { + content: "\ec46"; +} + +.icon-image:before { + content: "\eb26"; +} + +.icon-panel:before { + content: "\e6a2"; +} + +.icon-arrow-left:before { + content: "\ec47"; +} + +.icon-circle:before { + content: "\e600"; +} + +.icon-round-rect:before { + content: "\e62d"; +} + +.icon-arrow-right:before { + content: "\e6c0"; +} diff --git a/nezha-fronted/src/components/common/project/L5/css/props.css b/nezha-fronted/src/components/common/project/L5/css/props.css new file mode 100644 index 000000000..5339f4a27 --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/css/props.css @@ -0,0 +1,464 @@ +@font-face {font-family: "topology"; + src: url('//at.alicdn.com/t/font_1331132_5lvbai88wkb.eot?t=1564973526855'); /* IE9 */ + src: url('//at.alicdn.com/t/font_1331132_5lvbai88wkb.eot?t=1564973526855#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('//at.alicdn.com/t/font_1331132_5lvbai88wkb.woff?t=1564973526855') format('woff'), + url('//at.alicdn.com/t/font_1331132_5lvbai88wkb.ttf?t=1564973526855') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('//at.alicdn.com/t/font_1331132_5lvbai88wkb.svg?t=1564973526855#topology') format('svg'); /* iOS 4.1- */ +} + +.topology { + font-family: "topology" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.topology-ipad:before { + content: "\e664"; +} + +.topology-app:before { + content: "\e618"; +} + +.topology-remote-control:before { + content: "\e607"; +} + +.topology-browser:before { + content: "\e60b"; +} + +.topology-185055paintingpalletstreamline:before { + content: "\e61b"; +} + +.topology-house:before { + content: "\e61c"; +} + +.topology-map:before { + content: "\e61d"; +} + +.topology-sound:before { + content: "\e631"; +} + +.topology-link:before { + content: "\e63a"; +} + +.topology-umbrella:before { + content: "\e64b"; +} + +.topology-dashboard:before { + content: "\e653"; +} + +.topology-settings:before { + content: "\e654"; +} + +.topology-sync:before { + content: "\e657"; +} + +.topology-document:before { + content: "\e707"; +} + +.topology-enter:before { + content: "\e63d"; +} + +.topology-printer:before { + content: "\e67e"; +} + +.topology-warning:before { + content: "\e6a9"; +} + +.topology-office:before { + content: "\e605"; +} + +.topology-wifi:before { + content: "\e637"; +} + +.topology-exit:before { + content: "\e641"; +} + +.topology-api:before { + content: "\e616"; +} + +.topology-iot:before { + content: "\e627"; +} + +.topology-stop:before { + content: "\e619"; +} + +.topology-clock:before { + content: "\e75c"; +} + +.topology-camera:before { + content: "\e78a"; +} + +.topology-download:before { + content: "\e79c"; +} + +.topology-upload:before { + content: "\e79f"; +} + +.topology-flow:before { + content: "\e85a"; +} + +.topology-dashboard1:before { + content: "\e873"; +} + +.topology-unlocked:before { + content: "\e87b"; +} + +.topology-github:before { + content: "\e8fd"; +} + +.topology-stop1:before { + content: "\e622"; +} + +.topology-people:before { + content: "\e651"; +} + +.topology-email:before { + content: "\e67c"; +} + +.topology-exit1:before { + content: "\e6ab"; +} + +.topology-zuoji:before { + content: "\e68e"; +} + +.topology-rocketmq:before { + content: "\e6aa"; +} + +.topology-nodejs:before { + content: "\e989"; +} + +.topology-shoppingcart:before { + content: "\e62e"; +} + +.topology-wechat:before { + content: "\e646"; +} + +.topology-kefu:before { + content: "\e658"; +} + +.topology-people2geren:before { + content: "\e673"; +} + +.topology-people4geren:before { + content: "\e68a"; +} + +.topology-pay6:before { + content: "\e68f"; +} + +.topology-pay3:before { + content: "\e691"; +} + +.topology-home:before { + content: "\e6ac"; +} + +.topology-parallel:before { + content: "\e748"; +} + +.topology-java:before { + content: "\e746"; +} + +.topology-locked:before { + content: "\e791"; +} + +.topology-share:before { + content: "\e620"; +} + +.topology-weibo:before { + content: "\e63e"; +} + +.topology-error:before { + content: "\e6b1"; +} + +.topology-success:before { + content: "\e6b3"; +} + +.topology-website:before { + content: "\e70f"; +} + +.topology-kaiguan:before { + content: "\e67f"; +} + +.topology-pc:before { + content: "\e600"; +} + +.topology-firewall:before { + content: "\e630"; +} + +.topology-MongoDB:before { + content: "\e6f0"; +} + +.topology-router:before { + content: "\e612"; +} + +.topology-antenna:before { + content: "\e602"; +} + +.topology-safe:before { + content: "\e727"; +} + +.topology-html:before { + content: "\e606"; +} + +.topology-data-stream:before { + content: "\ebd3"; +} + +.topology-bub:before { + content: "\ec73"; +} + +.topology-satelite:before { + content: "\ed48"; +} + +.topology-satelite2:before { + content: "\ed47"; +} + +.topology-antenna2:before { + content: "\e679"; +} + +.topology-hbase:before { + content: "\e67b"; +} + +.topology-apiassembly:before { + content: "\e67d"; +} + +.topology-search:before { + content: "\e60f"; +} + +.topology-network1:before { + content: "\e64d"; +} + +.topology-redis:before { + content: "\e682"; +} + +.topology-db:before { + content: "\e645"; +} + +.topology-kafka:before { + content: "\e604"; +} + +.topology-mobile:before { + content: "\e63c"; +} + +.topology-python:before { + content: "\e60e"; +} + +.topology-cloud-firewall:before { + content: "\e62b"; +} + +.topology-sql:before { + content: "\e718"; +} + +.topology-folder:before { + content: "\e70e"; +} + +.topology-message:before { + content: "\e729"; +} + +.topology-building:before { + content: "\e601"; +} + +.topology-docker:before { + content: "\e689"; +} + +.topology-cpu:before { + content: "\e61f"; +} + +.topology-api1:before { + content: "\e603"; +} + +.topology-api2:before { + content: "\e75d"; +} + +.topology-cloud-server:before { + content: "\e665"; +} + +.topology-streaming:before { + content: "\e8f9"; +} + +.topology-fuwuqi:before { + content: "\e614"; +} + +.topology-router2:before { + content: "\e613"; +} + +.topology-jiankong:before { + content: "\e61e"; +} + +.topology-data1:before { + content: "\e761"; +} + +.topology-earch:before { + content: "\e608"; +} + +.topology-data3:before { + content: "\e609"; +} + +.topology-data2:before { + content: "\e60c"; +} + +.topology-golang:before { + content: "\e615"; +} + +.topology-record:before { + content: "\e60d"; +} + +.topology-streamSQL:before { + content: "\e6d3"; +} + +.topology-data:before { + content: "\e649"; +} + +.topology-network:before { + content: "\e63b"; +} + +.topology-ks:before { + content: "\e685"; +} + +.topology-rabbitmq:before { + content: "\e61a"; +} + +.topology-cassandra:before { + content: "\e621"; +} + +.topology-mysql:before { + content: "\e652"; +} + +.topology-antenna3:before { + content: "\e694"; +} + +.topology-list:before { + content: "\e610"; +} + +.topology-cloud-code:before { + content: "\e690"; +} + +.topology-iot1:before { + content: "\e611"; +} + +.topology-pgsql:before { + content: "\e706"; +} + +.topology-cloud:before { + content: "\e60a"; +} + +.topology-analytics:before { + content: "\e6a5"; +} + +.topology-iot2:before { + content: "\e617"; +} + +.topology-up-down:before { + content: "\e623"; +} diff --git a/nezha-fronted/src/components/common/project/L5/services/canvas.js b/nezha-fronted/src/components/common/project/L5/services/canvas.js new file mode 100644 index 000000000..9b5f50513 --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/services/canvas.js @@ -0,0 +1,585 @@ +import {register as registerFlow} from '@topology/flow-diagram' +import {register as registerActivity} from '@topology/activity-diagram' +import {register as registerSequence} from '@topology/sequence-diagram' +import {register as registerChart} from '@topology/chart-diagram'; +import { Node, Rect,Point, Direction } from '@topology/core'; +// import { register as registerClass } from './class-diagram/index' +export let canvas; + +export function canvasRegister(){ + registerFlow(); + registerActivity(); + registerSequence(); + registerChart(); + // registerClass() +} + +export const Tools=[ + { + group:'基本形状', + children:[ + { + name:'rectangleImg', + icon:'icon-rect', + data:{ + text:'rect', + rect:{ + width:100, + height:100 + }, + paddingLeft:10, + paddingRight:10, + paddingTop:10, + paddingBottom:10, + name:'rectangleImg', + icon: '\ue680', + iconFamily: 'nz-icon', + iconColor: '' + } + }, + { + name: 'rectangle', + icon: 'icon-cube', + data: { + rect: { + width: 100, + height: 100 + }, + is3D: true, + z: 20, + zRotate: 15, + name: 'myCube', + iconFamily: 'topology', + iconColor: '#777', + iconSize: 30 + } + }, + { + name:'rectangle', + icon:'icon-rect', + data:{ + text:'rect', + rect:{ + width:100, + height:100 + }, + paddingLeft:10, + paddingRight:10, + paddingTop:10, + paddingBottom:10, + name:'rectangle', + } + }, + { + name:'rectangle', + icon:'icon-rectangle', + data:{ + text:'rectangle', + rect:{ + width:200, + height:50 + }, + paddingLeft:10, + paddingRight:10, + paddingTop:10, + paddingBottom:10, + borderRadius:0.1, + name:'rectangle', + // icon: '\ue680', + // iconFamily: 'nz-icon', + // iconColor: '' + } + }, + { + name:'circle', + icon:'icon-circle', + data:{ + text:'circle', + rect:{ + width:100, + height:100 + }, + name:'circle', + textMaxLine:1 + } + }, + { + name:'triangle', + icon:'icon-triangle', + data:{ + text:'triangle', + rect:{ + width:100, + height:100 + }, + name:'triangle' + } + }, + { + name:'diamond', + icon:'icon-diamond', + data:{ + text:'diamond', + rect:{ + width:100, + height:100 + }, + name:'diamond' + } + }, + { + name:'pentagon', + icon:'icon-pentagon', + data:{ + text:'pentagon', + rect:{ + width:100, + height:100 + }, + name:'pentagon' + } + }, + { + name:'hexagon', + icon:'icon-hexagon', + data:{ + text:'hexagon', + rect:{ + width:100, + height:100 + }, + paddingTop:10, + paddingBottom:10, + name:'hexagon' + } + }, + { + name:'pentagram', + icon:'icon-pentagram', + data:{ + text:'pentagram', + rect:{ + width:100, + height:100 + }, + name:'pentagram' + } + }, + { + name:'image', + icon:'icon-image', + data:{ + text:'Nezha', + rect:{ + width:100, + height:100 + }, + name:'image', + image:'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3488940205,2956353665&fm=26&gp=0.jpg' + } + }, + ] + }, + { + group: '自定义图片', + children: [ + { + name: 'rectangle', + icon: 'icon-image', + data: { + text: 'Nezha', + rect: { + width: 100, + height: 100 + }, + name: 'rectangle', + image: 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3488940205,2956353665&fm=26&gp=0.jpg', + imageRatio:true, + "imageAlign":"center", + iconRect:{ + "width":80, + "height":80, + }, + "fullIconRect":{"width":80,"height":90,"center":{"x":972,"y":456},"ex":1012,"ey":496} + } + }, + ], + }, +]; + +export const imageTemp={ + name: 'rectangleImg', + icon: 'icon-image', + data: { + "type":0, + "rect":{ + "x":922, + "y":406, + "width":100, + "height":100, + }, + "lineWidth":0, + "rotate":0, + "offsetRotate":0, + "globalAlpha":1, + "dash":0, + "strokeStyle":"#000000", + "animatePos":0, + "name":"rectangleImg", + "lineDashOffset":0, + "text":"", + "textOffsetX":0, + "textOffsetY":0, + "visible":true, + "zRotate":0, + "animateDuration":0, + "animateFrames":[], + "animateFrame":0, + "borderRadius":0, + "icon":"", + "image":"", + "imageAlign":"center", + "bkType":0, + "gradientAngle":0, + "gradientRadius":0.01, + "paddingTop":5, + "paddingBottom":5, + "paddingLeft":5, + "paddingRight":5, + "paddingLeftNum":5, + "paddingRightNum":5, + "paddingTopNum":5, + "paddingBottomNum":5, + "fullIconRect":{"width":80,"height":90,"center":{"x":972,"y":456},"ex":1012,"ey":496} + } +}; +/*自定义图片组件*/ +export function myShape(ctx, node) { //自定义图片组件 + + ctx.beginPath(); + + ctx.rect(node.rect.x,node.rect.y,node.rect.width,node.rect.height); + if(node.data.lineWidth<=0){ + ctx.strokeStyle = 'rgba(0,0,0,0)'; + } + // 必须判空再填充 + (node.fillStyle || node.bkType) && ctx.fill(); + ctx.stroke(); +} +export function myAnchors(node) { + node.anchors.push(new Point(node.rect.x, node.rect.y + node.rect.height / 2, Direction.Left)); + node.anchors.push(new Point(node.rect.x + node.rect.width / 2, node.rect.y, Direction.Up)); + node.anchors.push(new Point(node.rect.x + node.rect.width, node.rect.y + node.rect.height / 2, Direction.Right)); + node.anchors.push(new Point(node.rect.x + node.rect.width / 2, node.rect.y + node.rect.height, Direction.Bottom)); +} +export function myIconRect(node) { + node.iconRect = new Rect(node.rect.x+node.paddingLeft, node.rect.y+node.paddingTop, node.rect.width-(node.paddingLeft+node.paddingRight), node.rect.height-20-(node.paddingTop+node.paddingBottom)); + node.fullIconRect = node.rect; +} +export function myTextRect(node) { + node.textRect = new Rect( + node.rect.x +node.paddingLeft, + node.rect.y+node.rect.height-20-node.paddingBottom, + node.rect.width -(node.paddingLeft+node.paddingRight), + 20, + ); + node.fullTextRect = node.rect; +} +/*自定义图片组件*/ + +/*自定义立方体*/ +export function myCubec(ctx, node) {//立方体 + // ctx.rect(node.rect.x,node.rect.y,node.rect.width,node.rect.height); + let x=node.rect.x+10,y=node.rect.y+10,w=node.rect.width-20,h=node.rect.height-20; + + + // LINE MODE + ctx.lineJoin = "round"; + + // center face + ctx.beginPath(); + ctx.moveTo(x, y+h/3); + ctx.lineTo(x + w*2/3, y+h/3 ); + ctx.lineTo(x + w*2/3, y +h); + ctx.lineTo(x, y + h); + ctx.closePath(); + ctx.fillStyle = node.fillStyle; + ctx.strokeStyle = node.strokeStyle; + ctx.stroke(); + (node.fillStyle || node.bkType) && ctx.fill(); + + // top face + ctx.beginPath(); + ctx.moveTo(x, y+h/3); + ctx.lineTo(x + w/3, y); + ctx.lineTo(x + w, y); + ctx.lineTo(x + w*2/3, y+h/3 ); + ctx.closePath(); + ctx.fillStyle = node.fillStyle; + ctx.strokeStyle = node.strokeStyle; + ctx.stroke(); + (node.fillStyle || node.bkType) && ctx.fill(); + + // right face + ctx.beginPath(); + ctx.moveTo(x + w*2/3, y+h/3 ); + ctx.lineTo(x + w, y); + ctx.lineTo(x + w, y+h*2/3); + ctx.lineTo(x + w*2/3, y + h); + ctx.closePath(); + ctx.fillStyle = node.fillStyle; + ctx.strokeStyle = node.strokeStyle; + ctx.stroke(); + (node.fillStyle || node.bkType) && ctx.fill(); + + // 必须判空再填充 + +} +export function myCubeAnchors(node) {//立方体锚点 + node.anchors.push(new Point(node.rect.x, node.rect.y + node.rect.height / 2, Direction.Left)); + node.anchors.push(new Point(node.rect.x + node.rect.width / 2, node.rect.y, Direction.Up)); + node.anchors.push(new Point(node.rect.x + node.rect.width, node.rect.y + node.rect.height / 2, Direction.Right)); + node.anchors.push(new Point(node.rect.x + node.rect.width / 2, node.rect.y + node.rect.height, Direction.Bottom)); +} +/*自定义立方体*/ + + + +export function onChangeAnimate(node,animateType) { + if (node.animateType === 'custom') { + return; + } + + node.animateFrames = []; + const state = Node.cloneState(node); + switch (animateType) { + case 'upDown': + state.rect.y -= 10; + state.rect.ey -= 10; + node.animateFrames.push({ + duration: 100, + linear: true, + state + }); + node.animateFrames.push({ + duration: 100, + linear: true, + state: Node.cloneState(node) + }); + node.animateFrames.push({ + duration: 200, + linear: true, + state: Node.cloneState(state) + }); + break; + case 'leftRight': + state.rect.x -= 10; + state.rect.ex -= 10; + node.animateFrames.push({ + duration: 100, + linear: true, + state: Node.cloneState(state) + }); + state.rect.x += 20; + state.rect.ex += 20; + node.animateFrames.push({ + duration: 80, + linear: true, + state: Node.cloneState(state) + }); + state.rect.x -= 20; + state.rect.ex -= 20; + node.animateFrames.push({ + duration: 50, + linear: true, + state: Node.cloneState(state) + }); + state.rect.x += 20; + state.rect.ex += 20; + node.animateFrames.push({ + duration: 30, + linear: true, + state: Node.cloneState(state) + }); + node.animateFrames.push({ + duration: 300, + linear: true, + state: Node.cloneState(node) + }); + break; + case 'heart': + state.rect.x -= 5; + state.rect.ex += 5; + state.rect.y -= 5; + state.rect.ey += 5; + state.rect.width += 5; + state.rect.height += 10; + node.animateFrames.push({ + duration: 100, + linear: true, + state + }); + node.animateFrames.push({ + duration: 400, + linear: true, + state: Node.cloneState(node) + }); + break; + case 'success': + state.strokeStyle = '#237804'; + node.animateFrames.push({ + duration: 100, + linear: true, + state + }); + node.animateFrames.push({ + duration: 100, + linear: true, + state: Node.cloneState(node) + }); + state.strokeStyle = '#237804'; + node.animateFrames.push({ + duration: 100, + linear: true, + state + }); + node.animateFrames.push({ + duration: 100, + linear: true, + state: Node.cloneState(node) + }); + state.strokeStyle = '#237804'; + state.fillStyle = '#389e0d22'; + node.animateFrames.push({ + duration: 3000, + linear: true, + state + }); + break; + case 'warning': + state.strokeStyle = '#fa8c16'; + state.fillStyle = '#fa8c16'; + state.lineWidth=5; + state.dash = 2; + node.animateFrames.push({ + duration: 500, + linear: true, + state + }); + state.strokeStyle = '#fa8c16'; + state.dash = 0; + state.lineWidth=1; + state.fillStyle = '#ffffff'; + node.animateFrames.push({ + duration: 500, + linear: true, + state: Node.cloneState(state) + }); + state.strokeStyle = '#fa8c16'; + state.dash = 2; + state.lineWidth=5; + state.fillStyle = '#fa8c16'; + node.animateFrames.push({ + duration: 300, + linear: true, + state: Node.cloneState(state) + }); + break; + case 'error': + state.strokeStyle = '#cf1322'; + // state.fillStyle = '#cf132222'; + state.lineWidth=5; + state.dash = 2; + node.animateFrames.push({ + duration: 100, + linear: true, + state + }); + state.strokeStyle = '#cf1322'; + state.dash = 0; + state.lineWidth=1; + node.animateFrames.push({ + duration: 500, + linear: true, + state: Node.cloneState(state) + }); + state.strokeStyle = '#cf1322'; + state.dash = 2; + state.lineWidth=5; + node.animateFrames.push({ + duration: 300, + linear: true, + state: Node.cloneState(state) + }); + break; + case 'show': + state.strokeStyle = '#fa541c'; + state.rotate = -10; + node.animateFrames.push({ + duration: 100, + linear: true, + state: Node.cloneState(state) + }); + state.rotate = 10; + node.animateFrames.push({ + duration: 100, + linear: true, + state: Node.cloneState(state) + }); + state.rotate = 0; + node.animateFrames.push({ + duration: 100, + linear: true, + state: Node.cloneState(state) + }); + break; + } + node.animatePlay=true; +} +export function onChangeAnimateLine(line,type){ + line.animateType=type; + line.animatePlay=true; +} +export function changeImage (dataImg, callback) { + let self = this; + var base64Img = document.createElement("base64Img"), + canvas = document.createElement("canvas"), + context = canvas.getContext("2d"); + // 创建新图片 + var img = new Image(); + img.src = dataImg; + img.addEventListener( + "load", + function () { + // 绘制图片到canvas上 + canvas.width = img.width; + canvas.height = img.height; + context.drawImage(img, 0, 0); + + // 将canvas的透明背景设置成白色 + var imageData = context.getImageData( + 0, + 0, + canvas.width, + canvas.height + ); + for (var i = 0; i < imageData.data.length; i += 4) { + //rgb大于250的透明度y均设置成0 + if ( + imageData.data[i] > 0 && + imageData.data[i + 1] > 0 && + imageData.data[i + 2] > 0 + ) { + imageData.data[i + 3] = 200; + } + } + context.putImageData(imageData, 0, 0); + let baseImg = canvas.toDataURL("image/png");//返回base64 + if (typeof callback !== undefined) { + if (callback) callback(baseImg); + } + img.remove(); + }, + false + ); + } diff --git a/nezha-fronted/src/components/common/project/L5/services/canvasRef.js b/nezha-fronted/src/components/common/project/L5/services/canvasRef.js new file mode 100644 index 000000000..10e12563a --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/services/canvasRef.js @@ -0,0 +1,919 @@ +import { register as registerFlow } from '@topology/flow-diagram' +import { register as registerActivity } from '@topology/activity-diagram' +import { register as registerSequence } from '@topology/sequence-diagram' +import { register as registerChart } from '@topology/chart-diagram'; +// import { register as registerClass } from './class-diagram/index' +export let canvas; +export function canvasRegister() { + registerFlow(); + registerActivity(); + registerSequence(); + registerChart(); + // registerClass() +} + +export const Tools = [ + { + group: '基本形状', + children: [ + { + name: 'rectangle', + icon: 'icon-rect', + data: { + text: 'rect', + rect: { + width: 100, + height: 100 + }, + paddingLeft: 10, + paddingRight: 10, + paddingTop: 10, + paddingBottom: 10, + name: 'rectangle', + } + }, + { + name: 'rectangle', + icon: 'icon-rectangle', + data: { + text: 'rectangle', + rect: { + width: 200, + height: 50 + }, + paddingLeft: 10, + paddingRight: 10, + paddingTop: 10, + paddingBottom: 10, + borderRadius: 0.1, + name: 'rectangle' + } + }, + { + name: 'circle', + icon: 'icon-circle', + data: { + text: 'circle', + rect: { + width: 100, + height: 100 + }, + name: 'circle', + textMaxLine: 1 + } + }, + { + name: 'triangle', + icon: 'icon-triangle', + data: { + text: 'triangle', + rect: { + width: 100, + height: 100 + }, + name: 'triangle' + } + }, + { + name: 'diamond', + icon: 'icon-diamond', + data: { + text: 'diamond', + rect: { + width: 100, + height: 100 + }, + name: 'diamond' + } + }, + { + name: 'pentagon', + icon: 'icon-pentagon', + data: { + text: 'pentagon', + rect: { + width: 100, + height: 100 + }, + name: 'pentagon' + } + }, + { + name: 'hexagon', + icon: 'icon-hexagon', + data: { + text: 'hexagon', + rect: { + width: 100, + height: 100 + }, + paddingTop: 10, + paddingBottom: 10, + name: 'hexagon' + } + }, + { + name: 'pentagram', + icon: 'icon-pentagram', + data: { + text: 'pentagram', + rect: { + width: 100, + height: 100 + }, + name: 'pentagram' + } + }, + { + name: 'leftArrow', + icon: 'icon-arrow-left', + data: { + text: '左箭头', + rect: { + width: 200, + height: 100 + }, + name: 'leftArrow' + } + }, + { + name: 'rightArrow', + icon: 'icon-arrow-right', + data: { + text: '右箭头', + rect: { + width: 200, + height: 100 + }, + name: 'rightArrow' + } + }, + { + name: 'twowayArrow', + icon: 'icon-twoway-arrow', + data: { + text: '双向箭头', + rect: { + width: 200, + height: 100 + }, + name: 'twowayArrow' + } + }, + { + name: 'line', + icon: 'icon-line', + data: { + text: '直线', + rect: { + width: 100, + height: 100 + }, + name: 'line' + } + }, + { + name: 'cloud', + icon: 'icon-cloud', + data: { + text: '云', + rect: { + width: 100, + height: 100 + }, + name: 'cloud' + } + }, + { + name: 'message', + icon: 'icon-msg', + data: { + text: '消息框', + rect: { + width: 100, + height: 100 + }, + paddingLeft: 10, + paddingRight: 10, + paddingTop: 10, + paddingBottom: 10, + name: 'message' + } + }, + { + name: 'file', + icon: 'icon-file', + data: { + text: '文档', + rect: { + width: 80, + height: 100 + }, + paddingLeft: 10, + paddingRight: 10, + paddingTop: 10, + paddingBottom: 10, + name: 'file' + } + }, + { + name: 'text', + icon: 'icon-text', + data: { + text: 'Nezha', + rect: { + width: 160, + height: 30 + }, + name: 'text' + } + }, + { + name: 'cube', + icon: 'icon-cube', + data: { + rect: { + width: 50, + height: 70 + }, + is3D: true, + z: 10, + zRotate: 15, + fillStyle: '#ddd', + name: 'cube', + icon: '\ue63c', + iconFamily: 'topology', + iconColor: '#777', + iconSize: 30 + } + }, + { + name: 'people', + icon: 'icon-people', + data: { + rect: { + width: 70, + height: 100 + }, + name: 'people' + } + }, + { + name: '视频/网页', + icon: 'icon-pc', + data: { + text: '视频/网页', + rect: { + width: 200, + height: 200 + }, + paddingLeft: 10, + paddingRight: 10, + paddingTop: 10, + paddingBottom: 10, + // strokeStyle: 'transparent', + name: 'div' + } + } + ] + }, + // { + // group: '自定义图片', + // children: [ + // { + // name: 'image', + // icon: 'icon-image', + // data: { + // text: 'Nezha', + // rect: { + // width: 100, + // height: 100 + // }, + // name: 'image', + // image: 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3488940205,2956353665&fm=26&gp=0.jpg' + // } + // }, + // ], + // }, + // { + // group: '流程图', + // children: [ + // { + // name: '开始/结束', + // icon: 'icon-flow-start', + // data: { + // text: '开始', + // rect: { + // width: 120, + // height: 40 + // }, + // borderRadius: 0.5, + // name: 'rectangle' + // } + // }, + // { + // name: '流程', + // icon: 'icon-rectangle', + // data: { + // text: '流程', + // rect: { + // width: 120, + // height: 40 + // }, + // name: 'rectangle' + // } + // }, + // { + // name: '判定', + // icon: 'icon-diamond', + // data: { + // text: '判定', + // rect: { + // width: 120, + // height: 60 + // }, + // name: 'diamond' + // } + // }, + // { + // name: '数据', + // icon: 'icon-flow-data', + // data: { + // text: '数据', + // rect: { + // width: 120, + // height: 50 + // }, + // name: 'flowData' + // } + // }, + // { + // name: '准备', + // icon: 'icon-flow-ready', + // data: { + // text: '准备', + // rect: { + // width: 120, + // height: 50 + // }, + // name: 'hexagon' + // } + // }, + // { + // name: '子流程', + // icon: 'icon-flow-subprocess', + // data: { + // text: '子流程', + // rect: { + // width: 120, + // height: 50 + // }, + // name: 'flowSubprocess' + // } + // }, + // { + // name: '数据库', + // icon: 'icon-db', + // data: { + // text: '数据库', + // rect: { + // width: 80, + // height: 120 + // }, + // name: 'flowDb' + // } + // }, + // { + // name: '文档', + // icon: 'icon-flow-document', + // data: { + // text: '文档', + // rect: { + // width: 120, + // height: 100 + // }, + // name: 'flowDocument' + // } + // }, + // { + // name: '内部存储', + // icon: 'icon-internal-storage', + // data: { + // text: '内部存储', + // rect: { + // width: 120, + // height: 80 + // }, + // name: 'flowInternalStorage' + // } + // }, + // { + // name: '外部存储', + // icon: 'icon-extern-storage', + // data: { + // text: '外部存储', + // rect: { + // width: 120, + // height: 80 + // }, + // name: 'flowExternStorage' + // } + // }, + // { + // name: '队列', + // icon: 'icon-flow-queue', + // data: { + // text: '队列', + // rect: { + // width: 100, + // height: 100 + // }, + // name: 'flowQueue' + // } + // }, + // { + // name: '手动输入', + // icon: 'icon-flow-manually', + // data: { + // text: '手动输入', + // rect: { + // width: 120, + // height: 80 + // }, + // name: 'flowManually' + // } + // }, + // { + // name: '展示', + // icon: 'icon-flow-display', + // data: { + // text: '展示', + // rect: { + // width: 120, + // height: 80 + // }, + // name: 'flowDisplay' + // } + // }, + // { + // name: '并行模式', + // icon: 'icon-flow-parallel', + // data: { + // text: '并行模式', + // rect: { + // width: 120, + // height: 50 + // }, + // name: 'flowParallel' + // } + // }, + // { + // name: '注释', + // icon: 'icon-flow-comment', + // data: { + // text: '注释', + // rect: { + // width: 100, + // height: 100 + // }, + // name: 'flowComment' + // } + // } + // ] + // }, + // { + // group: '活动图', + // children: [ + // { + // name: '开始', + // icon: 'icon-inital', + // data: { + // text: '', + // rect: { + // width: 30, + // height: 30 + // }, + // name: 'circle', + // fillStyle: '#555', + // strokeStyle: 'transparent' + // } + // }, + // { + // name: '结束', + // icon: 'icon-final', + // data: { + // text: '', + // rect: { + // width: 30, + // height: 30 + // }, + // name: 'activityFinal' + // } + // }, + // { + // name: '活动', + // icon: 'icon-action', + // data: { + // text: '活动', + // rect: { + // width: 120, + // height: 50 + // }, + // borderRadius: 0.25, + // name: 'rectangle' + // } + // }, + // { + // name: '决策/合并', + // icon: 'icon-diamond', + // data: { + // text: '决策', + // rect: { + // width: 120, + // height: 50 + // }, + // name: 'diamond' + // } + // }, + // { + // name: '垂直泳道', + // icon: 'icon-swimlane-v', + // data: { + // text: '垂直泳道', + // rect: { + // width: 200, + // height: 500 + // }, + // name: 'swimlaneV' + // } + // }, + // { + // name: '水平泳道', + // icon: 'icon-swimlane-h', + // data: { + // text: '水平泳道', + // rect: { + // width: 500, + // height: 200 + // }, + // name: 'swimlaneH' + // } + // }, + // { + // name: '垂直分岔/汇合', + // icon: 'icon-fork-v', + // data: { + // text: '', + // rect: { + // width: 10, + // height: 150 + // }, + // name: 'forkV', + // fillStyle: '#555', + // strokeStyle: 'transparent' + // } + // }, + // { + // name: '水平分岔/汇合', + // icon: 'icon-fork', + // data: { + // text: '', + // rect: { + // width: 150, + // height: 10 + // }, + // name: 'forkH', + // fillStyle: '#555', + // strokeStyle: 'transparent' + // } + // } + // ] + // }, + // { + // group: '时序图和类图', + // children: [ + // { + // name: '生命线', + // icon: 'icon-lifeline', + // data: { + // text: '生命线', + // rect: { + // width: 150, + // height: 400 + // }, + // name: 'lifeline' + // } + // }, + // { + // name: '激活', + // icon: 'icon-focus', + // data: { + // text: '', + // rect: { + // width: 12, + // height: 200 + // }, + // name: 'sequenceFocus' + // } + // }, + // { + // name: '简单类', + // icon: 'icon-simple-class', + // data: { + // text: 'Topolgoy', + // rect: { + // width: 270, + // height: 200 + // }, + // paddingTop: 40, + // font: { + // fontFamily: 'Arial', + // color: '#222', + // fontWeight: 'bold' + // }, + // fillStyle: '#ffffba', + // strokeStyle: '#7e1212', + // name: 'simpleClass', + // children: [ + // { + // text: '- name: string\n+ setName(name: string): void', + // name: 'text', + // paddingLeft: 10, + // paddingRight: 10, + // paddingTop: 10, + // paddingBottom: 10, + // rectInParent: { + // x: 0, + // y: 0, + // width: '100%', + // height: '100%', + // rotate: 0 + // }, + // font: { + // fontFamily: 'Arial', + // color: '#222', + // textAlign: 'left', + // textBaseline: 'top' + // } + // } + // ] + // } + // }, + // { + // name: '类', + // icon: 'icon-class', + // data: { + // text: 'Topolgoy', + // rect: { + // width: 270, + // height: 200 + // }, + // paddingTop: 40, + // font: { + // fontFamily: 'Arial', + // color: '#222', + // fontWeight: 'bold' + // }, + // fillStyle: '#ffffba', + // strokeStyle: '#7e1212', + // name: 'interfaceClass', + // children: [ + // { + // text: '- name: string', + // name: 'text', + // paddingLeft: 10, + // paddingRight: 10, + // paddingTop: 10, + // paddingBottom: 10, + // rectInParent: { + // x: 0, + // y: 0, + // width: '100%', + // height: '50%', + // rotate: 0 + // }, + // font: { + // fontFamily: 'Arial', + // color: '#222', + // textAlign: 'left', + // textBaseline: 'top' + // } + // }, + // { + // text: '+ setName(name: string): void', + // name: 'text', + // paddingLeft: 10, + // paddingRight: 10, + // paddingTop: 10, + // paddingBottom: 10, + // rectInParent: { + // x: 0, + // y: '50%', + // width: '100%', + // height: '50%', + // rotate: 0 + // }, + // font: { + // fontFamily: 'Arial', + // color: '#222', + // textAlign: 'left', + // textBaseline: 'top' + // } + // } + // ] + // } + // } + // ] + // }, + // { + // group: '图表控件', + // children: [ + // { + // name: '折线图', + // icon: 'icon-line-chart', + // data: { + // text: '折线图', + // rect: { + // width: 300, + // height: 200 + // }, + // name: 'echarts', + // data: { + // echarts: { + // option: { + // xAxis: { + // type: 'category', + // data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + // }, + // yAxis: { + // type: 'value' + // }, + // series: [ + // { + // data: [820, 932, 901, 934, 1290, 1330, 1320], + // type: 'line' + // } + // ] + // } + // } + // } + // } + // }, + // { + // name: '柱状图', + // icon: 'icon-bar-chart', + // data: { + // text: '柱状图', + // rect: { + // width: 300, + // height: 200 + // }, + // name: 'echarts', + // data: { + // echarts: { + // option: { + // color: ['#3398DB'], + // tooltip: { + // trigger: 'axis', + // axisPointer: { + // // 坐标轴指示器,坐标轴触发有效 + // type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + // } + // }, + // grid: { + // left: '3%', + // right: '4%', + // bottom: '3%', + // containLabel: true + // }, + // xAxis: [ + // { + // type: 'category', + // data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + // axisTick: { + // alignWithLabel: true + // } + // } + // ], + // yAxis: [ + // { + // type: 'value' + // } + // ], + // series: [ + // { + // name: '直接访问', + // type: 'bar', + // barWidth: '60%', + // data: [10, 52, 200, 334, 390, 330, 220] + // } + // ] + // } + // } + // } + // } + // }, + // { + // name: '饼图', + // icon: 'icon-pie-chart', + // data: { + // text: '饼图', + // rect: { + // width: 200, + // height: 200 + // }, + // name: 'echarts', + // data: { + // echarts: { + // option: { + // tooltip: { + // trigger: 'item', + // formatter: '{a}
{b}: {c} ({d}%)' + // }, + // legend: { + // orient: 'vertical', + // x: 'left', + // data: [ + // '直接访问', + // '邮件营销', + // '联盟广告', + // '视频广告', + // '搜索引擎' + // ] + // }, + // series: [ + // { + // name: '访问来源', + // type: 'pie', + // radius: ['50%', '70%'], + // avoidLabelOverlap: false, + // label: { + // normal: { + // show: false, + // position: 'center' + // }, + // emphasis: { + // show: true, + // textStyle: { + // fontSize: '30', + // fontWeight: 'bold' + // } + // } + // }, + // labelLine: { + // normal: { + // show: false + // } + // }, + // data: [ + // { value: 335, name: '直接访问' }, + // { value: 310, name: '邮件营销' }, + // { value: 234, name: '联盟广告' }, + // { value: 135, name: '视频广告' }, + // { value: 1548, name: '搜索引擎' } + // ] + // } + // ] + // } + // } + // } + // } + // }, + // { + // name: '仪表盘', + // icon: 'icon-dashboard-chart', + // data: { + // text: '仪表盘', + // rect: { + // width: 300, + // height: 300 + // }, + // name: 'echarts', + // data: { + // echarts: { + // option: { + // tooltip: { + // formatter: '{a}
{b} : {c}%' + // }, + // toolbox: { + // feature: { + // restore: {}, + // saveAsImage: {} + // } + // }, + // series: [ + // { + // name: '业务指标', + // type: 'gauge', + // detail: { formatter: '{value}%' }, + // data: [{ value: 50, name: '完成率' }] + // } + // ] + // } + // } + // } + // } + // } + // ] + // }, +] diff --git a/nezha-fronted/src/components/common/project/L5/topoTooltip.vue b/nezha-fronted/src/components/common/project/L5/topoTooltip.vue new file mode 100644 index 000000000..053f4dc2b --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/topoTooltip.vue @@ -0,0 +1,404 @@ + + + + + diff --git a/nezha-fronted/src/components/common/project/L5/topologyTopTool.vue b/nezha-fronted/src/components/common/project/L5/topologyTopTool.vue new file mode 100644 index 000000000..d2677d2f4 --- /dev/null +++ b/nezha-fronted/src/components/common/project/L5/topologyTopTool.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/nezha-fronted/src/components/common/project/topologyL5.vue b/nezha-fronted/src/components/common/project/topologyL5.vue new file mode 100644 index 000000000..87ecc5a03 --- /dev/null +++ b/nezha-fronted/src/components/common/project/topologyL5.vue @@ -0,0 +1,1367 @@ + + + + + + diff --git a/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue b/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue index c2da1f5fa..c1ba96f15 100644 --- a/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue +++ b/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue @@ -33,7 +33,7 @@
- +
{{errorMsg}}
{{appendMsg}}
@@ -70,6 +70,7 @@ historyParam:{type:Object}, showRemove:{type:Boolean,default:true}, projectRightBox:{type:Boolean,default:false}, + metricOptionsParent:{type:Array}, //metricOptions: {type: Array}, //metricStore: {type: Array} }, @@ -136,7 +137,7 @@ this.expressionList[this.index]=value; //this.$refs.editor.setContent(value) this.dropDownVisible=false; - this.$emit('change') + this.$emit('change',value) }, expressionChange:function(){ this.$emit('change') @@ -160,7 +161,11 @@ } else if (this.styleType == 2) { if (n) { //console.log(this.$parent.$parent) - this.metricOptions = this.$parent.$parent.$parent.getMetricOptions(); + if(this.metricOptionsParent){ + this.metricOptions=this.metricOptionsParent + }else{ + this.metricOptions = this.$parent.$parent.$parent.getMetricOptions(); + } } else { this.metricOptions = []; } diff --git a/nezha-fronted/src/components/page/project/project.vue b/nezha-fronted/src/components/page/project/project.vue index 44e93d708..4e44bb31b 100644 --- a/nezha-fronted/src/components/page/project/project.vue +++ b/nezha-fronted/src/components/page/project/project.vue @@ -178,7 +178,8 @@ @@ -215,6 +216,7 @@ import panelTab from '../../common/bottomBox/tabs/panelTab' import bus from '../../../libs/bus' import facade from '@/components/common/project/projectFacade' + import topologyL5 from '@/components/common/project/topologyL5' import deleteButton from "../../common/deleteButton"; export default { @@ -224,6 +226,7 @@ 'loading':loading, 'panel-tab':panelTab, facade, + topologyL5, 'delete-button':deleteButton, }, computed:{