当前位置: 首页 > news >正文

阿里云网站备案需要多久数据分析师需要学哪些课程

阿里云网站备案需要多久,数据分析师需要学哪些课程,可以发布外链的网站,做旧工艺品网站封装echarts成vue component EChartsLineComponent 文章目录 封装echarts成vue component EChartsLineComponent封装说明重写重点EChartsLineComponent的源码 使用说明调用EChartsLineComponent示例源码 封装说明 为了减少一些公共代码和方便使用echarts的line图形&#xff0c…

封装echarts成vue component EChartsLineComponent

文章目录

  • 封装echarts成vue component EChartsLineComponent
    • 封装说明
      • 重写重点
      • EChartsLineComponent的源码
    • 使用说明
      • 调用EChartsLineComponent示例源码

封装说明

为了减少一些公共代码和方便使用echarts的line图形,有限制条件的封装echats中的line类型的图,该Component名称为EChartsLineComponent

重写重点

  1. dateset属性中的source来判断图形是否包含数据,意味着需要通过datasetsource的方式配置数据。初始化option是要定义datasourcesource属性,否则不能正常使用该EChartsLineComponent

    option:{dataset: {// 第一行为表头,第一个元素为X轴,其后为Y轴元素// 第二行为具体数据点source: []}
    }
    

    同时,在定义的option中需要先确认数据每条线显示的效果,即配置series属性。

    option:{series: [{type: 'line',smooth: true,},{type: 'line',smooth: true,}]
    }
    
  2. 定义了空数据的展示效果,舍弃了有数据状态下的grid属性。
    在这里插入图片描述

  3. 增加了窗口自适应写法,并确定初始化图标高度为400px,宽度100%

EChartsLineComponent的源码

<template><div :id="chartId" :style="{ width: width, height: height }"></div>
</template><script>
import * as echarts from 'echarts';export default {name: 'EChartsLineComponent',props: {chartId: {type: String,required: true},width: {type: String,default: '100%'},height: {type: String,default: '400px'},option: {type: Object,required: true},},data() {return {chartInstance: null,noDataOption: {title: {show: true,text: '暂无数据',left: 'center', // 水平居中top: 'center', // 垂直居中},xAxis: {show: false,},yAxis: {show: false,},grid: {show: true,shadowColor: 'rgba(0, 0, 0, 0.5)',shadowBlur: 10}},};},watch: {option: {handler(newOption, oldOption) {if (this.chartInstance) {// todo 需要细化明确数据变成空的定义 变化中if (newOption.dataset.source.length === 0) {this.updateAxisShow(newOption, false)this.chartInstance.clear();this.noDataOption.title.show = truethis.noDataOption.grid.show = truethis.chartInstance.setOption(this.noDataOption);} else {newOption.title = {show: false}newOption.grid = {show: false}this.updateAxisShow(newOption, true)this.chartInstance.setOption(newOption);}} else {this.init()}},deep: true}},mounted() {this.init()// todo 需要细化明确数据变成空的定义 -- 初始化时if (this.chartInstance.getOption().dataset[0].source.length === 0) {this.updateAxisShow(this.chartInstance.getOption(), false);this.chartInstance.clear();this.chartInstance.setOption(this.noDataOption);}window.addEventListener('resize', this.handleResize);},beforeDestroy() {window.removeEventListener('resize', this.handleResize);if (this.chartInstance) {this.chartInstance.dispose();}},methods: {init() {this.chartInstance = echarts.init(document.getElementById(this.chartId), {renderer: 'svg'});this.chartInstance.setOption(this.option);window.addEventListener('resize', this.handleResize);},handleResize() {if (this.chartInstance) {this.chartInstance.resize();}},updateAxisShow(newOption, value) {if (newOption.yAxis.length) {this.noDataOption.yAxis = []for (let i = 0; i < newOption.yAxis.length; i++) {this.noDataOption.yAxis.push({"show": value})newOption.yAxis[i].show = value}} else {this.noDataOption.yAxis = {"show": value}newOption.yAxis.show = value}if (newOption.xAxis.length) {this.noDataOption.xAxis = []for (let i = 0; i < newOption.xAxis.length; i++) {this.noDataOption.xAxis.push({"show": value})newOption.xAxis[i].show = value}} else {this.noDataOption.xAxis = {"show": value}newOption.xAxis.show = value}},}
};
</script>

使用说明

调用EChartsLineComponent示例源码

<template><sn-page><sd-search-pane ref="searchPane":model="searchModel":options="searchOptions":rules="searchRules":span="3":hide-cancel="true"@handle-query="handleQuery"/><div><div class="title">CPU内核情况</div><EChartsComponent chart-id="CPUUsedChart" :option="CPUUsedChartOption"></EChartsComponent><div class="title">内存情况</div><EChartsComponent chart-id="MemoryUsedChart" :option="MemoryUsedChartOption"></EChartsComponent><div class="title">资源pending情况</div><EChartsComponent chart-id="PendingChart" :option="PendingChartOption"></EChartsComponent><div class="title">APP情况</div><EChartsComponent chart-id="APPChart" :option="APPChartChartOption"></EChartsComponent><div class="title">Container情况</div><EChartsComponent chart-id="ContainerUsedChart" :option="ContainerUsedChartOption"></EChartsComponent></div></sn-page>
</template><script>
export default {data(vm) {return {searchModel: {clusterName: "",queueName: "",time: []},searchOptions: {clusterName: {label: "集群",type: "select",span: 6,props: {clearable: true,filterable: true},on: {change(val) {val && vm.getQueue()},clear() {vm.clearQueue()}},children: []},queueName: {label: "队列",type: "select",span: 6,props: {clearable: true,filterable: true},children: []},time: {label: "时间",type: "date-picker",span: 9,props: {clearable: true,type: "datetimerange",rangeSeparator: "到",format: "yyyy-MM-dd HH:mm","value-format": "yyyy-MM-dd HH:mm",pickerOptions: {shortcuts: [{text: '最近3小时',onClick(picker) {const end = new Date();const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 3);picker.$emit('pick', [start, end]);}}, {text: '最近1天',onClick(picker) {const end = new Date();const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 24);picker.$emit('pick', [start, end]);}}, {text: '最近3天',onClick(picker) {const end = new Date();const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 24 * 3);picker.$emit('pick', [start, end]);}}]}}}},searchRules: {clusterName: [{required: true,message: "请选择集群",trigger: "change"}],queueName: [{required: true,message: "请选择队列",trigger: "change"}],time: [{required: true,message: "请选择时间",trigger: "change"}]},CPUUsedChartOption: {legend: {top: "bottom",},tooltip: {trigger: 'axis',},toolbox: {show: true,feature: {saveAsImage: {show: true}}},dataset: {// 第一行为表头,第一个元素为X轴,其后为Y轴元素// 第二行为具体数据点source: []},xAxis: {show: true,type: 'category',boundaryGap: false,},yAxis: {type: "value",name: "数量",splitLine: {show: true},axisLabel: {show: true,fontSize: 16,}},series: [{type: 'line',lineStyle: {width: 3, // 设置线条宽度为4type: 'dashed', // 设置为虚线},smoothMonotone: "x",smooth: true,},{type: 'line',smoothMonotone: "x",smooth: true,},{type: 'line',lineStyle: {width: 3, // 设置线条宽度为4type: 'dashed', // 设置为虚线},smoothMonotone: "x",smooth: true,}]},MemoryUsedChartOption: {legend: {top: "bottom",},tooltip: {trigger: 'axis',},toolbox: {show: true,feature: {saveAsImage: {show: true}}},dataset: {// 第一行为表头,第一个元素为X轴,其后为Y轴元素// 第二行为具体数据点source: []},xAxis: {show: true,type: 'category',boundaryGap: false,},yAxis: {type: "value",name: "大小",splitLine: {show: true},axisLabel: {show: true,fontSize: 16,}},series: [{type: 'line',lineStyle: {width: 3, // 设置线条宽度为4type: 'dashed', // 设置为虚线},smoothMonotone: "x",smooth: true,},{type: 'line',smoothMonotone: "x",smooth: true,},{type: 'line',lineStyle: {width: 3, // 设置线条宽度为4type: 'dashed', // 设置为虚线},smoothMonotone: "x",smooth: true,}]},PendingChartOption: {legend: {top: "bottom",},tooltip: {trigger: 'axis',},toolbox: {show: true,feature: {saveAsImage: {show: true}}},dataset: {// 第一行为表头,第一个元素为X轴,其后为Y轴元素// 第二行为具体数据点source: []},xAxis: {show: true,type: 'category',boundaryGap: false,},yAxis: [{type: "value",name: "大小",splitLine: {show: true},axisLabel: {show: true,fontSize: 16,}},{type: "value",name: "数量",splitLine: {show: true},axisLabel: {show: true,fontSize: 16,}}],series: [{type: 'line',yAxisIndex: 0,smooth: true,},{type: 'line',yAxisIndex: 1,smooth: true,},]},APPChartChartOption: {legend: {top: "bottom",},tooltip: {trigger: 'axis',},toolbox: {show: true,feature: {saveAsImage: {show: true}}},dataset: {// 第一行为表头,第一个元素为X轴,其后为Y轴元素// 第二行为具体数据点source: []},xAxis: {show: true,type: 'category',boundaryGap: false,},yAxis: {type: "value",name: "数量",splitLine: {show: true},axisLabel: {show: true,fontSize: 16,}},series: [{type: 'line',lineStyle: {width: 3, // 设置线条宽度为4type: 'dashed', // 设置为虚线},smooth: true,},{type: 'line',smooth: true,},{type: 'line',smooth: true,},{type: 'line',smooth: true,},{type: 'line',smooth: true,},{type: 'line',smooth: true,},{type: 'line',smooth: true,},{type: 'line',smooth: true,},]},ContainerUsedChartOption: {legend: {top: "bottom",},tooltip: {trigger: 'axis',},toolbox: {show: true,feature: {saveAsImage: {show: true}}},dataset: {// 第一行为表头,第一个元素为X轴,其后为Y轴元素// 第二行为具体数据点source: []},xAxis: {show: true,type: 'category',boundaryGap: false,},yAxis: {type: "value",name: "数量",splitLine: {show: true},axisLabel: {show: true, fontSize: 16,}},series: [{type: 'line',smoothMonotone: "x",smooth: true,},{type: 'line',smoothMonotone: "x",smooth: true,},]}};},methods: {handleRes(res, title) {if (res.code === 0) {this.$message({type: 'success',message: title + res.msg})} else {this.$message({type: 'error',message: title + res.msg})}},getCPUUsed() {this.$get({api: 'api/v2/manager/yarn/metric/getQueueMetricMaxValue',params: {metrics: "AllocatedVCores,MaxShareVCores,MinShareVCores",clusterName: this.searchModel.clusterName,queueName: this.searchModel.queueName,startTime: this.searchModel.time[0],endTime: this.searchModel.time[1]}}, res => {this.handleRes(res,"CPU内核情况")this.CPUUsedChartOption.dataset.source = res.data})},getMemoryUsed() {this.$get({api: 'api/v2/manager/yarn/metric/getQueueMetricMaxValue',params: {clusterName: this.searchModel.clusterName,queueName: this.searchModel.queueName,metrics: "AllocatedMB,MaxShareMB,MinShareMB",startTime: this.searchModel.time[0],endTime: this.searchModel.time[1]}}, res => {this.handleRes(res,"内存情况")this.MemoryUsedChartOption.dataset.source = res.data})},getPending() {this.$get({api: 'api/v2/manager/yarn/metric/getQueueMetricMaxValue',params: {clusterName: this.searchModel.clusterName,queueName: this.searchModel.queueName,metrics: "PendingMB,PendingVCores",startTime: this.searchModel.time[0],endTime: this.searchModel.time[1]}}, res => {this.handleRes(res,"资源pending情况")this.PendingChartOption.dataset.source = res.data})},getAPP() {this.$get({api: 'api/v2/manager/yarn/metric/getQueueMetricMaxValue',params: {clusterName: this.searchModel.clusterName,queueName: this.searchModel.queueName,metrics: "MaxApps,AppsSubmitted,AppsRunning,AppsPending,AppsCompleted,AppsKilled,AppsFailed",startTime: this.searchModel.time[0],endTime: this.searchModel.time[1]}}, res => {this.handleRes(res,"APP情况")this.APPChartChartOption.dataset.source = res.data})},getContainerUsed() {this.$get({api: 'api/v2/manager/yarn/metric/getQueueMetricMaxValue',params: {clusterName: this.searchModel.clusterName,queueName: this.searchModel.queueName,metrics: "AllocatedContainers,PendingContainers",startTime: this.searchModel.time[0],endTime: this.searchModel.time[1]}}, res => {this.handleRes(res,"Container情况")this.ContainerUsedChartOption.dataset.source = res.data})},handleQuery() {this.$refs.searchPane.validate(valid => {if (valid) {// 几张图就几个请求this.getCPUUsed();this.getMemoryUsed();this.getPending();this.getAPP();this.getContainerUsed();}});},getQueue() {this.$get({api: 'api/v2/manager/yarn/monitor/listYarnQueue',params: {yarnCluster: this.searchModel.clusterName}}, res => {this.searchOptions.queueName.children = res.data.map(item => {return {label: item, value: item}})})},},mounted() {},created() {this.$get({api: 'api/v2/manager/yarn/monitor/listYarnCluster'}, res => {this.searchOptions.clusterName.children = res.data.map(item => {return {label: item, value: item}})})this.CPUUsedChartOption.dataset.source = [['metricDate', 'AllocatedVCores', 'MaxShareVCores', 'MinShareVCores'],['2024-12-5', 50, 100, 1900],['2024-12-6', 50, 100, 1900],['2024-12-7', 50, 100, 1900],['2024-12-8', 50, 100, 1900],['2024-12-9', 50, 100, 1900],['2024-12-10', 50, 100, 1900]];this.MemoryUsedChartOption.dataset.source = [['metricDate', 'AllocatedMB', 'MaxShareMB', 'MinShareMB'],['2024-12-5', 50, 100, 1900],['2024-12-6', 50, 100, 1900],['2024-12-7', 50, 100, 1900],['2024-12-8', 50, 100, 1900],['2024-12-9', 50, 100, 1900],['2024-12-10', 50, 100, 1900]];this.APPChartChartOption.dataset.source = [['metricDate', 'MaxApps', 'AppsSubmitted', 'AppsRunning', 'AppsPending', 'AppsCompleted', 'AppsKilled', 'AppsFailed'],['2024-12-5', 2000, 100, 1900, 50, 200, 1600, 1],['2024-12-6', 2000, 100, 1900, 50, 200, 1600, 0],['2024-12-7', 2000, 100, 1900, 50, 200, 1700, 0],['2024-12-8', 2000, 100, 1900, 50, 200, 1800, 0],['2024-12-9', 2000, 100, 1900, 50, 200, 2200, 0],['2024-12-10', 2000, 100, 1900, 50, 200, 1800, 0]];this.PendingChartOption.dataset.source = [['metricDate', 'PendingMB', 'PendingVCores'],['2024-12-5', 50, 0],['2024-12-6', 50, 100],['2024-12-7', 0, 100],['2024-12-8', 10, 60],['2024-12-9', 50, 100],['2024-12-10', 0, 0]];this.ContainerUsedChartOption.dataset.source = [['metricDate', 'AllocatedContainers', 'PendingContainers'],['2024-12-5', 50, 100],['2024-12-6', 50, 100],['2024-12-7', 50, 100],['2024-12-8', 50, 10000],['2024-12-9', 50, 1000],['2024-12-10', 50, 100900]];},beforeDestroy() {}
};
</script><style>
.title {display: flex;justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */font-size: 20px;font-weight: bold;margin-top: 20px;
}
</style>

文章转载自:
http://semiduplex.wwxg.cn
http://echinodermatous.wwxg.cn
http://cenogamy.wwxg.cn
http://durra.wwxg.cn
http://dubitatively.wwxg.cn
http://epicondylitis.wwxg.cn
http://bugseed.wwxg.cn
http://allegorize.wwxg.cn
http://zygoma.wwxg.cn
http://homophone.wwxg.cn
http://disillusionary.wwxg.cn
http://rationalistic.wwxg.cn
http://tramroad.wwxg.cn
http://interlocutory.wwxg.cn
http://amban.wwxg.cn
http://cresyl.wwxg.cn
http://sorrowful.wwxg.cn
http://exhaustion.wwxg.cn
http://longline.wwxg.cn
http://carriageable.wwxg.cn
http://histiocyte.wwxg.cn
http://restitution.wwxg.cn
http://vestibule.wwxg.cn
http://eidetically.wwxg.cn
http://immigration.wwxg.cn
http://terabit.wwxg.cn
http://gadsbodikins.wwxg.cn
http://anopia.wwxg.cn
http://undisciplinable.wwxg.cn
http://splashdown.wwxg.cn
http://bt.wwxg.cn
http://surfbird.wwxg.cn
http://valuta.wwxg.cn
http://syngenite.wwxg.cn
http://mariposa.wwxg.cn
http://brahmani.wwxg.cn
http://diplocardiac.wwxg.cn
http://ulcer.wwxg.cn
http://proofread.wwxg.cn
http://isoenzyme.wwxg.cn
http://copperbottom.wwxg.cn
http://rakehell.wwxg.cn
http://beatage.wwxg.cn
http://mizoram.wwxg.cn
http://protochordate.wwxg.cn
http://breaker.wwxg.cn
http://kerchief.wwxg.cn
http://chinquapin.wwxg.cn
http://forestaysail.wwxg.cn
http://condescend.wwxg.cn
http://wallflower.wwxg.cn
http://delphology.wwxg.cn
http://aleak.wwxg.cn
http://reckoning.wwxg.cn
http://trisyllabic.wwxg.cn
http://paragoge.wwxg.cn
http://greaves.wwxg.cn
http://kerr.wwxg.cn
http://hadhramautian.wwxg.cn
http://cytometry.wwxg.cn
http://singhalese.wwxg.cn
http://piliferous.wwxg.cn
http://tabac.wwxg.cn
http://counterfeiter.wwxg.cn
http://xerox.wwxg.cn
http://prytaneum.wwxg.cn
http://hirudinean.wwxg.cn
http://bighorn.wwxg.cn
http://invigilator.wwxg.cn
http://tailfirst.wwxg.cn
http://laird.wwxg.cn
http://baldacchino.wwxg.cn
http://fgcm.wwxg.cn
http://erroneous.wwxg.cn
http://westering.wwxg.cn
http://trincomalee.wwxg.cn
http://dependent.wwxg.cn
http://sarcolemma.wwxg.cn
http://deschooler.wwxg.cn
http://myra.wwxg.cn
http://academically.wwxg.cn
http://datable.wwxg.cn
http://endwise.wwxg.cn
http://undreaded.wwxg.cn
http://pliant.wwxg.cn
http://viking.wwxg.cn
http://binational.wwxg.cn
http://denticule.wwxg.cn
http://shortall.wwxg.cn
http://disarticulate.wwxg.cn
http://casefy.wwxg.cn
http://silicify.wwxg.cn
http://pygmoid.wwxg.cn
http://airfare.wwxg.cn
http://borax.wwxg.cn
http://arequipa.wwxg.cn
http://potentilla.wwxg.cn
http://tearing.wwxg.cn
http://carval.wwxg.cn
http://hyla.wwxg.cn
http://www.hrbkazy.com/news/91984.html

相关文章:

  • web制作网站seo排名优化
  • 用来做区位分析的地图网站国内可访问的海外网站和应用
  • aws安装wordpressseo编辑的工作内容
  • 设计网站公司专注y湖南岚鸿知 名临沂网站seo
  • wordpress自建站上可以买卖有实力的网站排名优化软件
  • 网站客服悬浮百度推广怎么推
  • 重庆网上注册公司技术优化seo
  • 淘客如何做网站推广谷歌安装器
  • 汕头网站建设技术托管黄页网站推广效果
  • 温州网站开发平台抖音广告代运营
  • 专门做图片的网站cms百度网址大全免费下载
  • 玖壹购网站是做啥子的今日小说排行榜百度搜索风云榜
  • wordpress分页链接太原seo关键词排名
  • 文章修改网站佛山网站建设解决方案
  • 横栏网站建设公司湘潭网站设计
  • 有什么可以在线做数学题的网站网络优化大师下载
  • cdn 加速 网站营销一体化平台
  • 精品网站建设费用 干净磐石网络微信朋友圈广告投放代理
  • 襄阳网站建设八零后seo蜘蛛屯
  • 专门做销售招聘网站网络推广 公司 200个网站
  • wrodpress做学校网站微信scrm系统
  • 美女做瑷视频网站松原新闻头条
  • 网站怎么关闭兰州网络推广优化怎样
  • 佛山营销网站建设联系方式哔哩哔哩推广网站
  • 夸克浏览器入口朔州seo
  • 青岛专业做网站的公司有哪些怎么做app推广和宣传
  • 百度快照 直接进入网站广州外贸推广
  • 网站建设开发软件推蛙网络
  • 怎样可以做网站磁力搜索器在线
  • 青岛万维网站设计北京已感染上千万人