feat: Link monitor网格模块,动态适配弹窗宽度

This commit is contained in:
刘洪洪
2022-10-14 14:50:46 +08:00
parent fb5094758e
commit 51ffd3d7ef
3 changed files with 38 additions and 11 deletions

View File

@@ -113,7 +113,7 @@ $blue: #046ECA;
.block-content-item-value { .block-content-item-value {
display: flex; display: flex;
width: 145px; min-width: 75px;
font-weight: 600; font-weight: 600;
} }
} }

View File

@@ -118,6 +118,8 @@ export default {
linkId: egressLink.linkId, linkId: egressLink.linkId,
egressUsage: egressUsage, egressUsage: egressUsage,
ingressUsage: ingressUsage, ingressUsage: ingressUsage,
popoverWidth: this.computeWidth(egressUsage, ingressUsage, 'popover'),
valueWidth: this.computeWidth(egressUsage, ingressUsage, 'value'),
totalBitsRate: d.totalBitsRate, totalBitsRate: d.totalBitsRate,
...d ...d
}) })
@@ -129,6 +131,8 @@ export default {
linkId: egressLink.linkId, linkId: egressLink.linkId,
egressUsage: egressUsage, egressUsage: egressUsage,
ingressUsage: ingressUsage, ingressUsage: ingressUsage,
popoverWidth: this.computeWidth(egressUsage, ingressUsage, 'popover'),
valueWidth: this.computeWidth(egressUsage, ingressUsage, 'value'),
totalBitsRate: d.totalBitsRate, totalBitsRate: d.totalBitsRate,
...d ...d
}] }]
@@ -182,6 +186,8 @@ export default {
nextHop: egressLink.nextHop, nextHop: egressLink.nextHop,
egressUsage: egressUsage, egressUsage: egressUsage,
ingressUsage: ingressUsage, ingressUsage: ingressUsage,
popoverWidth: this.computeWidth(egressUsage, ingressUsage, 'popover'),
valueWidth: this.computeWidth(egressUsage, ingressUsage, 'value'),
totalBitsRate: d.totalBitsRate, totalBitsRate: d.totalBitsRate,
...d ...d
}) })
@@ -195,6 +201,8 @@ export default {
nextHop: ingressLink.nextHop, nextHop: ingressLink.nextHop,
egressUsage: egressUsage, egressUsage: egressUsage,
ingressUsage: ingressUsage, ingressUsage: ingressUsage,
popoverWidth: this.computeWidth(egressUsage, ingressUsage, 'popover'),
valueWidth: this.computeWidth(egressUsage, ingressUsage, 'value'),
totalBitsRate: d.totalBitsRate, totalBitsRate: d.totalBitsRate,
...d ...d
}] }]
@@ -204,7 +212,6 @@ export default {
}) })
this.gridData2 = gridData2 this.gridData2 = gridData2
console.log('打印下一跳数据', gridData2)
} else { } else {
this.isNoData = true this.isNoData = true
} }
@@ -240,6 +247,26 @@ export default {
npmScore = 6 npmScore = 6
} }
return npmScore return npmScore
},
/**
* 计算popover弹窗和右侧数据模块的宽度
* 弹窗最小宽度为360px右侧数据最小宽度为75px右侧数据每大一位popover弹窗宽度增加7px
*/
computeWidth (egress, ingress, flag) {
let width = 0
let length = 0
const egressUsage = JSON.stringify(parseFloat((egress * 100).toFixed(2)))
const ingressUsage = JSON.stringify(parseFloat((ingress * 100).toFixed(2)))
length = egressUsage.length + ingressUsage.length - 1
if (flag === 'popover') {
width = 360 + length * 7
} else {
width = 75 + length * 7
}
return width
} }
} }
} }

View File

@@ -21,7 +21,7 @@
</div> </div>
<div v-for="(item, index2) in row.egress" :key="index2"> <div v-for="(item, index2) in row.egress" :key="index2">
<el-popover :width="415" placement="right" trigger="hover"> <el-popover :width="item.popoverWidth" placement="right" trigger="click">
<template #reference> <template #reference>
<div class="data-item data-item__hover"> <div class="data-item data-item__hover">
<div :class="row.egress[index2].usageMore90 ? 'data-item__point-red':'data-item__point'"></div> <div :class="row.egress[index2].usageMore90 ? 'data-item__point-red':'data-item__point'"></div>
@@ -53,7 +53,7 @@
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t('linkMonitor.bandwidthUsage') }}</div> <div class="block-content-item-name">{{ $t('linkMonitor.bandwidthUsage') }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{width: row.egress[index2].valueWidth + 'px'}">
<div style="margin-left: -10px"> <div style="margin-left: -10px">
<svg class="icon item-popover-up" aria-hidden="true"> <svg class="icon item-popover-up" aria-hidden="true">
<use xlink:href="#cn-icon-egress"></use> <use xlink:href="#cn-icon-egress"></use>
@@ -72,7 +72,7 @@
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t('linkMonitor.linkBlock.total') }}</div> <div class="block-content-item-name">{{ $t('linkMonitor.linkBlock.total') }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{width: row.egress[index2].valueWidth + 'px'}">
{{unitConvert(row.egress[index2].totalBitsRate, unitTypes.bps).join('')}} {{unitConvert(row.egress[index2].totalBitsRate, unitTypes.bps).join('')}}
</div> </div>
</div> </div>
@@ -90,42 +90,42 @@
<div class="item-popover-block-content"> <div class="item-popover-block-content">
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t('linkMonitor.npmScore1') }}</div> <div class="block-content-item-name">{{ $t('linkMonitor.npmScore1') }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{width: row.egress[index2].valueWidth + 'px'}">
{{ row.egress[index2].score }} {{ row.egress[index2].score }}
</div> </div>
</div> </div>
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t(npmNetworkName[0].name) }}</div> <div class="block-content-item-name">{{ $t(npmNetworkName[0].name) }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{width: row.egress[index2].valueWidth + 'px'}">
{{ unitConvert(row.egress[index2].establishLatencyMs, unitTypes.time).join('') }} {{ unitConvert(row.egress[index2].establishLatencyMs, unitTypes.time).join('') }}
</div> </div>
</div> </div>
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t(npmNetworkName[1].name) }}</div> <div class="block-content-item-name">{{ $t(npmNetworkName[1].name) }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{'width': row.egress[index2].valueWidth + 'px'}">
{{ unitConvert(row.egress[index2].httpResponseLatency, unitTypes.time).join('') }} {{ unitConvert(row.egress[index2].httpResponseLatency, unitTypes.time).join('') }}
</div> </div>
</div> </div>
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t(npmNetworkName[2].name) }}</div> <div class="block-content-item-name">{{ $t(npmNetworkName[2].name) }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{width: row.egress[index2].valueWidth + 'px'}">
{{ unitConvert(row.egress[index2].sslConLatency, unitTypes.time).join('') }} {{ unitConvert(row.egress[index2].sslConLatency, unitTypes.time).join('') }}
</div> </div>
</div> </div>
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t(npmNetworkName[3].name) }}</div> <div class="block-content-item-name">{{ $t(npmNetworkName[3].name) }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{width: row.egress[index2].valueWidth + 'px'}">
{{ unitConvert(row.egress[index2].tcpLostlenPercent, unitTypes.percent).join('') }} {{ unitConvert(row.egress[index2].tcpLostlenPercent, unitTypes.percent).join('') }}
</div> </div>
</div> </div>
<div class="block-content-item"> <div class="block-content-item">
<div class="block-content-item-name">{{ $t(npmNetworkName[4].name) }}</div> <div class="block-content-item-name">{{ $t(npmNetworkName[4].name) }}</div>
<div class="block-content-item-value"> <div class="block-content-item-value" :style="{width: row.egress[index2].valueWidth + 'px'}">
{{ unitConvert(row.egress[index2].pktRetransPercent, unitTypes.percent).join('') }} {{ unitConvert(row.egress[index2].pktRetransPercent, unitTypes.percent).join('') }}
</div> </div>
</div> </div>