2022-02-10

? ? ? id="main"

? ? ? ref="main"

? ? />

import echartsfrom 'echarts'

import { number_format }from '@/utils/tools.js'

// 漸變的柱子

export default {

name:'AttackSource',

props: {

xdata: {

type:Array,

required:true

? ? },

ydata: {

type:Array,

required:true

? ? },

beAttackedCode: {

type:Array,

required:true

? ? }

},

data() {

return {

chart:null

? ? }

},

watch: {

xdata: {

handler:function(val) {

console.log('TCL: val', val)

// console.log('watch attackSource', this.ydata1)

? ? ? ? if (this.chart) {

this.chart.dispose()

this.chart =null

? ? ? ? }

this.initChart()

// this.setOptions()

? ? ? },

deep:true

? ? },

ydata: {

handler:function(val) {

console.log('TCL: val', val)

// console.log('watch attackSource', this.ydata1)

? ? ? ? if (this.chart) {

this.chart.dispose()

this.chart =null

? ? ? ? }

this.initChart()

},

deep:true

? ? }

},

created() {

},

mounted() {

this.$nextTick(() => {

this.initChart()

})

},

beforeDestroy() {

if (!this.chart) {

return

? ? }

this.chart.dispose()

this.chart =null

? },

methods: {

initChart() {

this.chart = echarts.init(this.$refs.main)

this.setOptions()

},

getFlag(val) {

// const imgsrc = 'flag_' + val.toLowerCase() + '.png'

// return require('../../assets/flag/' + imgsrc)

? ? },

setOptions() {

const xdata =this.xdata

? ? ? const ydata =this.ydata

? ? ? const maxdata = []

let y =0

? ? ? let mindata =0

? ? ? // y軸樣式列表

? ? ? const richListY = {}

richListY['title'] = {

color:'#90D6FA',

width:100,

align:'left',

borderRadius:5,

padding: [0, -320],

fontSize:13

? ? ? }

console.log('TCL: init -> richListY',richListY)

for (const item of ydata) {

if (item >y) {

y =item

? ? ? ? }

if (mindata ===0) {

mindata =item

? ? ? ? }else {

if (mindata >item) {

mindata =item

? ? ? ? ? }

}

}

const maxY =parseInt(Number(y) *1.1)

// 添加一段數(shù)據(jù)

? ? ? const addData =parseInt((y -mindata) *0.13)

const showDataY = []

for (const item of ydata) {

let data =Number(item) +addData

? ? ? ? if (data >maxY) {

data =maxY

? ? ? ? }

showDataY.push(data)

}

for (const item of ydata) {

if (item) {

maxdata.push(maxY)

}

}

console.log('maxdata',maxdata)

const option = {

backgroundColor:'',

xAxis: {

show:false,

inverse:true

? ? ? ? },

grid: {

top:0,

left:'60',

right:'0',

bottom:'20',

width:270

? ? ? ? },

yAxis: [{

data:xdata,

axisTick: {

show:false

? ? ? ? ? },

axisLine: {

show:false

? ? ? ? ? },

inverse:true,

// axisLabel: {

//? ? textStyle: {

//? ? ? ? color: '#9E9FA0'

//? ? },

//? ? rotate: -30

// }

? ? ? ? ? axisLabel: {

show:false

? ? ? ? ? }

}, {

z:5,

data:xdata,

axisTick: {

show:false

? ? ? ? ? },

axisLine: {

show:false

? ? ? ? ? },

inverse:true,

// axisLabel: {

//? ? textStyle: {

//? ? ? ? color: '#9E9FA0'

//? ? },

//? ? rotate: -30

// }

? ? ? ? ? axisLabel: {

color:'#fff',

fontSize:13,

formatter: (value, index) => {

return [

'{title|' + value +'}'

? ? ? ? ? ? ? ].join('\n')

// `{${item}|}`

// + '{title|' + value + '}'

// [

// `{${item}|}` + '{title|' + value + '}'

// ].join('\n')

? ? ? ? ? ? },

rich:richListY

? ? ? ? ? ? // rich:

? ? ? ? ? }

}],

series: [

{

type:'bar',

barWidth:14,

xAxisIndex:0,

yAxisIndex:1,

animation:true,

animationDuration:1000,

animationDurationUpdate:1000,

animationEasingUpdate:'linear',

animationEasing:'linear',

itemStyle: {

normal: {

color: {

type:'linear',

x:0,

y:0,

x2:1,

y2:0,

colorStops: [{

offset:0,color:'#2D3984' // 0% 處的顏色

? ? ? ? ? ? ? ? ? }, {

offset:0.2,color:'#2D3984' // 0% 處的顏色

? ? ? ? ? ? ? ? ? }, {

offset:0.4,color:'#2D3984' // 0% 處的顏色

? ? ? ? ? ? ? ? ? }, {

offset:1,color:'transparent' // 100% 處的顏色

? ? ? ? ? ? ? ? ? }],

global:false // 缺省為false

? ? ? ? ? ? ? ? }

}

},

data:showDataY

? ? ? ? ? },

{

name:'a',

tooltip: {

show:false

? ? ? ? ? ? },

type:'bar',

barWidth:14,

xAxisIndex:0,

yAxisIndex:1,

animation:true,

animationDuration:1000,

animationDurationUpdate:1000,

animationEasingUpdate:'linear',

animationEasing:'linear',

itemStyle: {

normal: {

color: {

type:'linear',

x:0,

y:0,

x2:1,

y2:0,

colorStops: [{

offset:0,color:'rgba(45, 57, 132, 0.35)' // 0% 處的顏色

? ? ? ? ? ? ? ? ? }, {

offset:0.2,color:'rgba(45, 57, 132, 0.35)' // 0% 處的顏色

? ? ? ? ? ? ? ? ? }, {

offset:0.4,color:'rgba(45, 57, 132, 0.35)' // 0% 處的顏色

? ? ? ? ? ? ? ? ? }, {

offset:1,color:'transparent' // 100% 處的顏色

? ? ? ? ? ? ? ? ? }],

global:false // 缺省為false

? ? ? ? ? ? ? ? }

}

},

data:showDataY,

barGap:0

? ? ? ? ? }, {

name:'b',

tooltip: {

show:false

? ? ? ? ? ? },

animation:true,

animationDuration:1000,

animationDurationUpdate:1000,

animationEasingUpdate:'linear',

animationEasing:'linear',

label: {

show:true,

position:'insideTopRight',

align:'right',

fontSize:16,

offset: [20,10],

formatter: (value) => {

return value.value +'GB'

? ? ? ? ? ? ? },

rich: {

a: {

fontSize:18,

color:'#fff',

fontFamily:'DIN',

backgroundColor:'#000827'

? ? ? ? ? ? ? ? }

}

},

type:'pictorialBar',

xAxisIndex:0,

yAxisIndex:1,

itemStyle: {

normal: {

color:function(params) {

return '#0672FF'

? ? ? ? ? ? ? ? },

borderWidth:0

? ? ? ? ? ? ? }

},

symbol:'diamond',

symbolRotate:90,

symbolSize: ['30','15'],

symbolOffset: ['-16','0'],

symbolPosition:'end',

data:showDataY,

z:3

? ? ? ? ? }

]

}

console.log(option)

this.chart.setOption(option)

}

}

}

.attackSource {

width:100%;

height:100%;

#main {

width:100%;

height:100%;

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颂碘,一起剝皮案震驚了整個濱河市锅劝,隨后出現(xiàn)的幾起案子钩述,更是在濱河造成了極大的恐慌彩库,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件槽惫,死亡現(xiàn)場離奇詭異周叮,居然都是意外死亡辩撑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門仿耽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來合冀,“玉大人,你說我怎么就攤上這事项贺【桑” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵敬扛,是天一觀的道長晰洒。 經(jīng)常有香客問我朝抖,道長啥箭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任治宣,我火速辦了婚禮急侥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侮邀。我一直安慰自己坏怪,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布绊茧。 她就那樣靜靜地躺著铝宵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪华畏。 梳的紋絲不亂的頭發(fā)上鹏秋,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音亡笑,去河邊找鬼侣夷。 笑死,一個胖子當(dāng)著我的面吹牛仑乌,可吹牛的內(nèi)容都是我干的百拓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼晰甚,長吁一口氣:“原來是場噩夢啊……” “哼衙传!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厕九,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蓖捶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后止剖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腺阳,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡落君,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亭引。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绎速。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焙蚓,靈堂內(nèi)的尸體忽然破棺而出纹冤,到底是詐尸還是另有隱情,我是刑警寧澤购公,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布萌京,位于F島的核電站,受9級特大地震影響宏浩,放射性物質(zhì)發(fā)生泄漏知残。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一比庄、第九天 我趴在偏房一處隱蔽的房頂上張望求妹。 院中可真熱鬧,春花似錦佳窑、人聲如沸制恍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽净神。三九已至,卻和暖如春溉委,著一層夾襖步出監(jiān)牢的瞬間鹃唯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工薛躬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俯渤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓型宝,卻偏偏與公主長得像八匠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子趴酣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容