- {contentComponent}
+ let overviewBody = data.map(function(item,index){
+ //渲染图表div.
+ let cid = item.id;
+ let content = item.content.map(function(item,index){
+ let id = `echarts_${cid}_${index}`
+ let echart_div = "";
+ item = common.tempPreHandler(item,this.state[item.stateName]);
+ switch(item.type){
+ case "pie":
+ echart_div =
;
+ case "pieSubarea":
+ echart_div =
+ break;
+ default:
+ echart_div =
+ {item.value}
+
+ }
+ //渲染描述
+ let echart_desc =
{item.desc}
+ return
+
+ {item.name}
+ {echart_div}
+ {echart_desc}
-
-
- });
- return
{overviewBody}
+ },this);
+ return content
+ },this);
+ return
{overviewBody}
},
- refresh(){
- let random = parseInt(100000*Math.random())
- this.setState({random:random});
+ echartsData(type,item){
+ //获取echart数据
+ let data = item.value;
+ switch(type.toLocaleLowerCase()){
+ /*
+ case "gauge":
+ data = {name: "", data: [{value: this.state[value], name: ""}]};
+ break;
+ case "pienumber":
+ data = {name:value, text:this.state[value]};
+ break;
+ */
+ case "pie":
+ break;
+ case "piesubarea":
+ //组合需要单独处理
+ console.log(data);
+ break;
+ default:
+ console.log(`该类型图表暂不支持! type:${type}`);
+ break;
+ }
+ return data;
+ },
+ componentDidMount: function () {
+ //从模版中取数据渲染
+ let data = OverviewConf.overviewData;
+ data.map(function(item,index){
+ //渲染图表div.
+ let title = item.title;
+ let cid = item.id;
+ let content = item.content.map(function(item,index){
+ let id = `echarts_${cid}_${index}`
+ let type = item.type;
+ //根据不用的图表渲染不同的数据
+ //let data = {name: "", data: [{value: 50, name: item.name}]};
+ if( type != undefined ){
+ let data = this.echartsData(type,item);
+ let option = EchartsUtil.renderOptionData(type,data);
+ this.echartsMapping[index] = echarts.init(document.getElementById(id)).setOption(option);
+ }
+ },this);
+ return content
+ },this);
},
requestArgs:{
pageName : "Overview",
@@ -149,18 +237,17 @@ export default React.createClass({
let openstack_url = this.getUrlData({ type: "OPENSTACK_OVERVIEW",
spaceName: spaceName
});
-
- //根据space获取对应的指标信息
- let conent = this.index();
return (
- {conent}
+ {this.index()}
+ {/*
+ */}
)
}
diff --git a/package/Aries/src/functions/Overview/index.less b/package/Aries/src/functions/Overview/index.less
index 0108c7b..752a392 100644
--- a/package/Aries/src/functions/Overview/index.less
+++ b/package/Aries/src/functions/Overview/index.less
@@ -1,14 +1,67 @@
.overview {
- .common{
- min-height: 200px;
- border: 1px solid #D4D4D4;
- margin-top: 10px;
- .title{
- border-bottom: 1px solid #D4D4D4;
- padding: 5px 10px 0px;
- }
- .content{
- padding: 5px 10px 5px;
+ div.container-div{
+ width: 185px;
+ height: 165px;
+ float: left;
+ position: relative;
+ min-height: 1px;
+ margin: 0 auto;
+ margin-right: 10px;
+ margin-bottom: 10px;
+ border: 1px solid #ddd;
+ &:hover{
+ cursor: move;
+ .container-body{
+ display: none;
+ }
+ .diagram-div{
+ display: none;
+ }
+ .chart-hover{
+ display: block;
+ //z-index: 100;
+ }
+ }
+ .diagram-div{
+ width: 185px;
+ height: 130px;
+ }
+
+ .container-head{
+ padding: 8px 5px 5px 5px;
+ font-weight: bold;
+ text-align: left;
+ color: #000;
+ font-size: 15px;
+ }
+
+ .container-body{
+ font-size: 35px;
+ text-align: center;
+ color: #5ab400;
+ font-weight: bold;
+ padding-top: 30px;
+ }
+
+ .chart-hover{
+ /*
+ position: absolute;
+ top: 0;
+ left:0;
+ right: 0;
+ bottom: 0;
+ opacity: 0;
+ transition: 0.1s all ease-in-out;
+ */
+ background-color: #fff;
+ display: none;
+ width: 100%;
+ padding: 8px 5px 5px 5px;
+ font-weight: bold;
+ text-align: center;;
+ color: #000;
+ font-size: 15px;
+ transition: 0.1s all ease-in-out;
}
}
}
From 24cc53d69e9f2b1e9c7c491afff46f00ac2437bd Mon Sep 17 00:00:00 2001
From: LuPan2015 <874325293@qq.com>
Date: Tue, 29 Nov 2016 11:58:58 +0800
Subject: [PATCH 02/16] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../public/Template/Echarts/EchartsUtil.js | 38 +++++++++
.../src/public/Template/Echarts/common.js | 64 +++++++++++++++
.../Aries/src/public/Template/Echarts/pie.js | 78 +++++++++++++++++++
.../src/public/Template/Echarts/pieSubarea.js | 45 +++++++++++
4 files changed, 225 insertions(+)
create mode 100644 package/Aries/src/public/Template/Echarts/EchartsUtil.js
create mode 100644 package/Aries/src/public/Template/Echarts/common.js
create mode 100644 package/Aries/src/public/Template/Echarts/pie.js
create mode 100644 package/Aries/src/public/Template/Echarts/pieSubarea.js
diff --git a/package/Aries/src/public/Template/Echarts/EchartsUtil.js b/package/Aries/src/public/Template/Echarts/EchartsUtil.js
new file mode 100644
index 0000000..4b5412f
--- /dev/null
+++ b/package/Aries/src/public/Template/Echarts/EchartsUtil.js
@@ -0,0 +1,38 @@
+import gauge from './gauge'
+import pieNumber from './pieNumber'
+import pieSubarea from './pieSubarea'
+import pie from './pie'
+/*
+ *echarts数据渲染工具类
+ */
+const EchartsUtil = {
+ /*
+ * 渲染echarts中的数据.
+ * type: 图表类型. echartsType中的key集合
+ * data: 模版中对应的值
+ */
+ renderOptionData(type,data){
+ let tempData = "";
+ switch(type.toLocaleLowerCase()){
+ /*
+ case "gauge":
+ tempData = gauge.renderOption(data);
+ break;
+ case "pienumber":
+ tempData = pieNumber.renderOption(data);
+ break;
+ */
+ case "pie":
+ tempData = pie.renderOption(data);
+ break;
+ case "piesubarea":
+ tempData = pieSubarea.renderOption(data);
+ break;
+ default:
+ console.log("不包含对应的echarts 模版数据: "+type);
+ }
+ return tempData;
+ },
+}
+
+export default EchartsUtil;
diff --git a/package/Aries/src/public/Template/Echarts/common.js b/package/Aries/src/public/Template/Echarts/common.js
new file mode 100644
index 0000000..a089e97
--- /dev/null
+++ b/package/Aries/src/public/Template/Echarts/common.js
@@ -0,0 +1,64 @@
+const common = {
+ /*
+ * 替换单个模版字符串
+ * demo:
+ * params:
+ * temp: {id:1,name:{ n1:"${args.t1}", n2:{nn2:"${args.date.month}",nn3:"${args.date.day}"}}}
+ * args: {t1:1,date:{ month:2, day:3}}
+ * result: {id:1,name:{ n1:1, n2:{nn2:2,nn3:3}}
+ *
+ */
+ tempVariReplace(jsonValue, args){
+ let reg = /\${[\w|.]+}/g;
+ //只替换字符串模版
+ let tempVari = typeof(jsonValue) == "string" ? jsonValue.match(reg): null;
+ tempVari != null && tempVari.forEach((tempVariName,index)=>{
+ debugger;
+ //模版变量变量名
+ let regStr = `/\\${tempVariName}/g`;
+ let reg = eval(regStr);
+ //模版变量变量值
+ let name = /\${([\w|.]+)}/.exec(tempVariName)[1];
+ let names =name.split(".");
+ let tempVarValue = common.getObjectAttr(names,args);
+ jsonValue = jsonValue.replace(reg, JSON.stringify(tempVarValue));
+ })
+ try{
+ jsonValue = JSON.parse(jsonValue);
+ }catch(err){
+ console.log(`${jsonValue} is not object`);
+ }
+ return jsonValue;
+ },
+ tempPreHandler(temp,args){
+ if(typeof(temp) != "object"){
+ //替换字符串中的变量
+ temp = common.tempVariReplace(temp, args);
+ return temp;
+ }
+ //遍历args对象,找到模版变量,然后直接替换模版变量 "${item}"
+ Object.keys(temp).forEach(function(item, index){
+ let jsonValue = temp[item];
+ if(typeof(jsonValue) == "object"){
+ temp[item] = common.tempPreHandler(jsonValue,args);
+ }else{
+ temp[item] = common.tempVariReplace(jsonValue,args);
+ return temp
+ }
+ });
+ return temp;
+ },
+ getObjectAttr(arr, obj){
+ let value = obj;
+ //获取obj的属性对应的值,属性可以是多个层级
+ if( typeof(obj) != "object"){
+ return value;
+ }
+ arr.forEach((item,index)=>{
+ value = value[item];
+ });
+ return value;
+ }
+}
+
+export default common;
diff --git a/package/Aries/src/public/Template/Echarts/pie.js b/package/Aries/src/public/Template/Echarts/pie.js
new file mode 100644
index 0000000..fb3ce1d
--- /dev/null
+++ b/package/Aries/src/public/Template/Echarts/pie.js
@@ -0,0 +1,78 @@
+import common from './common'
+import echarts from 'echarts'
+const pie = {
+ option: {
+ legend: {
+ orient: 'vertical',
+ left: 'left',
+ },
+ series : [
+ {
+ type: 'pie',
+ radius : ['50%', '80%'],
+ center: ['50%','50%'],
+ hoverAnimation:false,
+ label: {
+ normal: {
+ show: true,
+ formatter: function(params){return params.percent.toFixed(0)+"%"},
+ }
+ },
+ itemStyle: {
+ normal: {
+ borderColor: "#ddd",
+ borderWidth: 2,
+ color :
+ new echarts.graphic.RadialGradient(0.5, 0.5, 0.5, [{
+ offset: 0.6, color: 'red' // 0% 处的颜色
+ }, {
+ offset: 1, color: 'red' // 100% 处的颜色
+ }], false
+ )
+
+ }
+ },
+ data:[
+ {
+ value:"${used}",
+ label: {
+ normal: {
+ position: "center",
+ textStyle: {
+ color: 'red',
+ fontSize: 25,
+ fontStyle: 'normal',
+ fontWeight: 'bold',
+ fontFamily: "Helvetica Neue"
+
+ }
+ }
+ }
+ },
+ {
+ value:"${nonUsed}",
+ tooltip: {
+ show: false
+ },
+ itemStyle: {
+ normal: {
+ color: '#fff'
+ }
+ },
+ }
+ ]
+ }
+ ]
+},
+ //渲染option的函数
+ renderOption(data){
+ //let tempOption = {id:1,name:{ n1:"${args.t1}", n2:{nn2:"${args.date.month}",nn3:"${args.date.day}"}}};
+ //let args = {t1:1,date:{ month:2, day:3}}
+ //let option = common.tempPreHandler(tempOption,args);
+ let option = common.tempPreHandler(this.option,data);
+ console.log(option);
+ return option;
+ }
+}
+
+export default pie;
diff --git a/package/Aries/src/public/Template/Echarts/pieSubarea.js b/package/Aries/src/public/Template/Echarts/pieSubarea.js
new file mode 100644
index 0000000..ead406c
--- /dev/null
+++ b/package/Aries/src/public/Template/Echarts/pieSubarea.js
@@ -0,0 +1,45 @@
+//饼图分区模版数据
+import common from './common'
+const pieSubarea = {
+ option: {
+ legend: {
+ orient: 'vertical',
+ x: 'left',
+ },
+ hoverAnimation:false,
+ series: [{
+ type: 'pie',
+ center: ['50%','50%'],
+ radius: ['50%', '80%'],
+ data: "${data}"
+ }]
+ },
+ formtarData(data){
+ return data.map((item,index)=>{
+ return {
+ value: item.value,
+ name: item.name,
+ label: {
+ normal: {
+ show: false
+ }
+ },
+ labelLine: {
+ normal: {
+ show: false
+ }
+ }
+ }
+ });
+ },
+ //渲染option的函数
+ renderOption(data){
+ data = this.formtarData(data);
+ console.log(data);
+ let option = common.tempPreHandler(this.option,{data:data});
+ console.log(option);
+ return option;
+ }
+}
+
+export default pieSubarea;
From 1a573fbbf9e98d10f83a9fb7a6d9e8ee477be06d Mon Sep 17 00:00:00 2001
From: LuPan2015 <874325293@qq.com>
Date: Tue, 29 Nov 2016 14:49:56 +0800
Subject: [PATCH 03/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=B0=83=E8=AF=95?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/functions/Overview/OverviewConf.js | 51 +++++------
.../Aries/src/functions/Overview/index.jsx | 91 +++++--------------
.../public/Template/Echarts/EchartsUtil.js | 10 --
.../src/public/Template/Echarts/common.js | 61 ++++++++-----
.../Aries/src/public/Template/Echarts/pie.js | 4 +-
.../src/public/Template/Echarts/pieSubarea.js | 6 +-
6 files changed, 87 insertions(+), 136 deletions(-)
diff --git a/package/Aries/src/functions/Overview/OverviewConf.js b/package/Aries/src/functions/Overview/OverviewConf.js
index b71ff86..ba5667b 100644
--- a/package/Aries/src/functions/Overview/OverviewConf.js
+++ b/package/Aries/src/functions/Overview/OverviewConf.js
@@ -7,14 +7,15 @@ const OverviewConf={
content: [
{
name: "hdfs使用率",
- stateName: "hdfs_disk_used",
+ stateName: "hdfs_disk",
value: {
used: "${used}",
nonUsed: "${nonUsed}"
},
type: "pie",
desc: "已使用: ${used} ${unit} \
- 剩余: ${nonUsed} ${unit}"
+ 剩余: ${nonUsed} ${unit} \
+ 总共: ${total} ${unit}"
},
{
name: "hdfs分享个数",
@@ -35,21 +36,22 @@ const OverviewConf={
content: [
{
name: "codis集群总数",
- stateName: "codis_count",
+ stateName: "codis_cluster",
value: "${lives} / ${total}",
desc: "正常: ${lives}. \
异常: ${dead}"
},
{
name: "Codis 内存使用率",
- stateName: "codis_memory_used",
+ stateName: "codis_memory",
value: {
used: "${used}",
nonUsed: "${nonUsed}"
},
type: "pie",
desc: "已使用: ${used} ${unit}, \
- 剩余: ${nonUsed} ${unit}"
+ 剩余: ${nonUsed} ${unit} \
+ 总共: ${total} ${unit}"
},
]
},{
@@ -58,25 +60,25 @@ const OverviewConf={
content: [
{
name: "pod个数",
- stateName: "k8sp_pod_count",
+ stateName: "k8sp_pod",
value: "${lives} / ${total}",
desc: "正常: ${lives}. 异常: ${dead}"
},
{
name: "rc个数",
- stateName: "k8sp_rc_count",
+ stateName: "k8sp_rc",
value: "${lives} / ${total}",
desc: "正常: ${lives}. 异常: ${dead}"
},
{
name: "service状态",
- stateName: "k8sp_service_status_count",
- value: "${k8sp_service_status_count}",
- desc: "${k8sp_service_status_count} 状态."
+ stateName: "k8sp_service",
+ value: "${k8sp_service}",
+ desc: "${k8sp_service} 状态."
},
{
name: "node个数",
- stateName: "k8sp_nodes_count",
+ stateName: "k8sp_nodes",
value: "${lives} / ${total}",
desc: "正常: ${lives} 异常: ${dead}"
}
@@ -88,7 +90,7 @@ const OverviewConf={
{
type: "pieSubarea",
name: "BDMS任务运行图:",
- stateName: "bdms_task_count",
+ stateName: "bdms_task",
desc: " 待运行: ${waiting} 个,\n \
运行中: ${running} 个,\n \
运行成功: ${success} 个,\n \
@@ -111,12 +113,7 @@ const OverviewConf={
name: "运行失败",
value: "${failed}",
},
- /*{
- name: "今日总任务",
- value: "${total}",
- }*/
]
-
}
]
},{
@@ -125,21 +122,21 @@ const OverviewConf={
content: [
{
name: "虚拟机状态",
- stateName: "openstack_vm_count",
+ stateName: "openstack_vm",
value: "${total}",
desc: "正常: ${lives} 异常: ${dead}.",
},
{
name: "镜像个数",
- stateName: "openstack_image_count",
- value: "${openstack_image_count}",
- desc: "共保存了 ${openstack_image_count} 个镜像."
+ stateName: "openstack_image",
+ value: "${openstack_image}",
+ desc: "共保存了 ${openstack_image} 个镜像."
},
{
name: "云硬盘个数",
- stateName: "openstack_disk_count",
- value: "${openstack_disk_count}",
- desc: "共分配了 ${openstack_disk_count} 个磁盘."
+ stateName: "openstack_disk",
+ value: "${openstack_disk}",
+ desc: "共分配了 ${openstack_disk} 个磁盘."
}
]
},{
@@ -148,9 +145,9 @@ const OverviewConf={
content: [
{
name: "成员个数",
- stateName: "userAuth_member_count",
- value: "${userAuth_member_count}",
- desc: "当前空间共有 ${userAuth_member_count} 人."
+ stateName: "userAuth_member",
+ value: "${userAuth_member}",
+ desc: "当前空间共有 ${userAuth_member} 人."
},
]
}],
diff --git a/package/Aries/src/functions/Overview/index.jsx b/package/Aries/src/functions/Overview/index.jsx
index 4b777e9..2f15578 100644
--- a/package/Aries/src/functions/Overview/index.jsx
+++ b/package/Aries/src/functions/Overview/index.jsx
@@ -7,72 +7,66 @@ import echarts from 'echarts'
import OverviewConf from './OverviewConf'
import EchartsUtil from 'public/Template/Echarts/EchartsUtil'
import common from 'public/Template/echarts/common'
+import update from 'react-update'
export default React.createClass({
getInitialState:function(){
return {
random: 0,
- //hdfs_disk_used: 0, //HDFS使用百分比
- hdfs_disk_used: {
+ hdfs_disk: { //hdfs磁盘
used: 100,
nonUsed: 50,
unit: "TB",
- total: 0,
+ total: 150,
},
hdfs_shares: 0, //HDFS分享文件的个数
- //hdfs_datanodes: "0/0", //HDFS datanode健康状态(99/100)
- hdfs_datanodes: {
+ hdfs_datanodes: { //hdfs datanode状态
lives: 0,
dead: 0,
total: 0
},
- //codis_count: "0/0", //Codis 集群总个数(10/11,正常集群/总集群)
- codis_count: {
+ codis_cluster: {
lives: 0,
dead: 0,
total: 0,
},
- //codis_memory_used: 0, //Codis 内存使用率50%
- codis_memory_used:{
+ codis_memory:{
used: 100,
nonUsed: 50,
- unit: "GB"
+ unit: "GB",
+ total: 150
},
- //k8sp_pod_count: "0/0", //Pod个数(9/10)
- k8sp_pod_count: {
+ k8sp_pod: {
lives: 0,
dead: 0,
total: 0
},
- //k8sp_rc_count: "0/0", //rc(9/10)
- k8sp_rc_count: {
+ k8sp_rc: {
lives: 0,
dead: 0,
total: 0
},
- k8sp_service_status_count: 0, //Service状态
- //k8sp_nodes_count: 0, //Node个数
- k8sp_nodes_count: {
+ k8sp_service: 0, //Service状态
+ k8sp_nodes: {
lives: 0,
dead: 0,
total: 0
},
- bdms_task_count: {
+ bdms_task: {
running: 0, //运行中
waiting: 0, //等待中
success: 0, //成功
failed: 0, //失败
total: 0 //总数
},
- //openstack_vm_count: "0/0", //虚拟机(9/10)
- openstack_vm_count:{
+ openstack_vm:{
lives: 0, //正常
dead: 0, //异常
total: 0, //总数
},
- openstack_image_count: 0, //镜像个数
- openstack_disk_count: 0, //云硬盘个数
- userAuth_member_count: 0, //当前space成员个数
+ openstack_image: 0, //镜像个数
+ openstack_disk: 0, //云硬盘个数
+ userAuth_member: 0, //当前space成员个数
};
},
echartsMapping:{},
@@ -114,14 +108,6 @@ export default React.createClass({
//获取echart数据
let data = item.value;
switch(type.toLocaleLowerCase()){
- /*
- case "gauge":
- data = {name: "", data: [{value: this.state[value], name: ""}]};
- break;
- case "pienumber":
- data = {name:value, text:this.state[value]};
- break;
- */
case "pie":
break;
case "piesubarea":
@@ -168,54 +154,21 @@ export default React.createClass({
return OverviewConf.getUrlData(this.requestArgs);
},
getBdmsData(data){
- this.setState({
- bdms_running_count: data.today_running_task,
- bdms_success_count: data.today_succeed_task,
- bdms_failed_count: data.today_failed_task,
- bdms_task_count: data.today_total_task
- });
+
},
getK8spData(data){
- let k8sp_pod_count = `${data.pod.count}/${data.pod.total}`;
- let k8sp_rc_count = `${data.rc.count}/${data.rc.total}`;
- let k8sp_service_status_count = `${data.service.count}`;
- let k8sp_nodes_count = data.node.count;
- this.setState({
- k8sp_pod_count: k8sp_pod_count,
- k8sp_rc_count: k8sp_rc_count,
- k8sp_service_status_count: k8sp_service_status_count,
- k8sp_nodes_count: k8sp_nodes_count
- });
+
},
getCodisData(data){
- let codis_count = `${data.nice_codis_count}/${data.all_codis_count}`;
- let codis_memory_used = data.memory_used_count.toFixed(2)/data.memory_total_count;
- codis_memory_used = `${codis_memory_used.toFixed(2)*100} %`;
- this.setState({
- codis_count: codis_count,
- codis_memory_used: codis_memory_used,
- });
},
getOpenstackData(data){
- this.setState({
- openstack_vm_count:data.vm,
- openstack_image_count:data.image,
- openstack_disk_count:data.volume
- });
+
},
getHdfsData(data){
- let hdfs_disk_used = data.hdfs_disk_used * 100;
- hdfs_disk_used = hdfs_disk_used.toFixed(2);
- this.setState({
- hdfs_disk_used: `${hdfs_disk_used} %`,
- hdfs_shares: data.hdfs_shares,
- hdfs_datanodes: data.hdfs_datanodes
- });
+
},
getUserAuthData(data){
- this.setState({
- userAuth_member_count: data.count
- });
+
},
render() {
let spaceName = OverviewConf.getCurSpace(this);
diff --git a/package/Aries/src/public/Template/Echarts/EchartsUtil.js b/package/Aries/src/public/Template/Echarts/EchartsUtil.js
index 4b5412f..e3d9cf3 100644
--- a/package/Aries/src/public/Template/Echarts/EchartsUtil.js
+++ b/package/Aries/src/public/Template/Echarts/EchartsUtil.js
@@ -1,5 +1,3 @@
-import gauge from './gauge'
-import pieNumber from './pieNumber'
import pieSubarea from './pieSubarea'
import pie from './pie'
/*
@@ -14,14 +12,6 @@ const EchartsUtil = {
renderOptionData(type,data){
let tempData = "";
switch(type.toLocaleLowerCase()){
- /*
- case "gauge":
- tempData = gauge.renderOption(data);
- break;
- case "pienumber":
- tempData = pieNumber.renderOption(data);
- break;
- */
case "pie":
tempData = pie.renderOption(data);
break;
diff --git a/package/Aries/src/public/Template/Echarts/common.js b/package/Aries/src/public/Template/Echarts/common.js
index a089e97..3ee6488 100644
--- a/package/Aries/src/public/Template/Echarts/common.js
+++ b/package/Aries/src/public/Template/Echarts/common.js
@@ -1,13 +1,37 @@
const common = {
/*
- * 替换单个模版字符串
- * demo:
- * params:
+ * 递归替换 json(or string) 对象的每个value中的模版变量.
+ * 示例:
* temp: {id:1,name:{ n1:"${args.t1}", n2:{nn2:"${args.date.month}",nn3:"${args.date.day}"}}}
* args: {t1:1,date:{ month:2, day:3}}
- * result: {id:1,name:{ n1:1, n2:{nn2:2,nn3:3}}
+ * 返回: {id:1,name:{ n1:1, n2:{nn2:2,nn3:3}}
*
*/
+ tempPreHandler(temp,args){
+ if(typeof(temp) != "object"){
+ //替换字符串中的变量
+ temp = common.tempVariReplace(temp, args);
+ return temp;
+ }
+ //遍历args对象,找到模版变量,然后直接替换模版变量 "${item}"
+ Object.keys(temp).forEach(function(item, index){
+ let jsonValue = temp[item];
+ if(typeof(jsonValue) == "object"){
+ temp[item] = common.tempPreHandler(jsonValue,args);
+ }else{
+ temp[item] = common.tempVariReplace(jsonValue,args);
+ return temp
+ }
+ });
+ return temp;
+ },
+ /*
+ * 替换单个模版字符串
+ * 示例
+ * jsonValue : "abc_${date.month}"
+ * args: {date:{ month:1}}
+ * 返回: "abc_1"
+ */
tempVariReplace(jsonValue, args){
let reg = /\${[\w|.]+}/g;
//只替换字符串模版
@@ -30,28 +54,16 @@ const common = {
}
return jsonValue;
},
- tempPreHandler(temp,args){
- if(typeof(temp) != "object"){
- //替换字符串中的变量
- temp = common.tempVariReplace(temp, args);
- return temp;
- }
- //遍历args对象,找到模版变量,然后直接替换模版变量 "${item}"
- Object.keys(temp).forEach(function(item, index){
- let jsonValue = temp[item];
- if(typeof(jsonValue) == "object"){
- temp[item] = common.tempPreHandler(jsonValue,args);
- }else{
- temp[item] = common.tempVariReplace(jsonValue,args);
- return temp
- }
- });
- return temp;
- },
+ /*
+ * 取出 json 中 指定属性的值.允许嵌套
+ * 示例
+ * arr: ["date","month"]
+ * obj: {"date":{"month":1}}
+ * 返回: 1
+ */
getObjectAttr(arr, obj){
let value = obj;
- //获取obj的属性对应的值,属性可以是多个层级
- if( typeof(obj) != "object"){
+ if(typeof(obj) != "object"){
return value;
}
arr.forEach((item,index)=>{
@@ -59,6 +71,7 @@ const common = {
});
return value;
}
+
}
export default common;
diff --git a/package/Aries/src/public/Template/Echarts/pie.js b/package/Aries/src/public/Template/Echarts/pie.js
index fb3ce1d..41d2ea5 100644
--- a/package/Aries/src/public/Template/Echarts/pie.js
+++ b/package/Aries/src/public/Template/Echarts/pie.js
@@ -1,5 +1,6 @@
import common from './common'
import echarts from 'echarts'
+// echarts 百分比饼图模版数据
const pie = {
option: {
legend: {
@@ -66,9 +67,6 @@ const pie = {
},
//渲染option的函数
renderOption(data){
- //let tempOption = {id:1,name:{ n1:"${args.t1}", n2:{nn2:"${args.date.month}",nn3:"${args.date.day}"}}};
- //let args = {t1:1,date:{ month:2, day:3}}
- //let option = common.tempPreHandler(tempOption,args);
let option = common.tempPreHandler(this.option,data);
console.log(option);
return option;
diff --git a/package/Aries/src/public/Template/Echarts/pieSubarea.js b/package/Aries/src/public/Template/Echarts/pieSubarea.js
index ead406c..df17fb4 100644
--- a/package/Aries/src/public/Template/Echarts/pieSubarea.js
+++ b/package/Aries/src/public/Template/Echarts/pieSubarea.js
@@ -1,5 +1,5 @@
-//饼图分区模版数据
import common from './common'
+//echarts 饼图分区模版数据
const pieSubarea = {
option: {
legend: {
@@ -14,7 +14,7 @@ const pieSubarea = {
data: "${data}"
}]
},
- formtarData(data){
+ formatterData(data){
return data.map((item,index)=>{
return {
value: item.value,
@@ -34,7 +34,7 @@ const pieSubarea = {
},
//渲染option的函数
renderOption(data){
- data = this.formtarData(data);
+ data = this.formatterData(data);
console.log(data);
let option = common.tempPreHandler(this.option,{data:data});
console.log(option);
From 54ee8811305ffb87b15f394f88bec5f10cf4c496 Mon Sep 17 00:00:00 2001
From: LuPan2015 <874325293@qq.com>
Date: Tue, 29 Nov 2016 17:13:08 +0800
Subject: [PATCH 04/16] =?UTF-8?q?=E5=BE=AE=E8=B0=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/functions/Overview/OverviewConf.js | 52 +++++++++----------
.../Aries/src/functions/Overview/index.jsx | 44 ++++++++++------
.../src/public/Template/Echarts/common.js | 9 ++--
3 files changed, 57 insertions(+), 48 deletions(-)
diff --git a/package/Aries/src/functions/Overview/OverviewConf.js b/package/Aries/src/functions/Overview/OverviewConf.js
index ba5667b..b9eb45c 100644
--- a/package/Aries/src/functions/Overview/OverviewConf.js
+++ b/package/Aries/src/functions/Overview/OverviewConf.js
@@ -6,28 +6,28 @@ const OverviewConf={
id: "hdfs",
content: [
{
- name: "hdfs使用率",
+ name: "HDFS使用率",
stateName: "hdfs_disk",
value: {
used: "${used}",
nonUsed: "${nonUsed}"
},
type: "pie",
- desc: "已使用: ${used} ${unit} \
- 剩余: ${nonUsed} ${unit} \
+ desc: "已使用: ${used} ${unit}
\
+ 剩余: ${nonUsed} ${unit}
\
总共: ${total} ${unit}"
},
{
- name: "hdfs分享个数",
+ name: "HDFS分享个数",
value: "${hdfs_shares}",
stateName: "hdfs_shares",
desc: "${hdfs_shares} 个目录被分享."
},
{
- name: "dn存活状态",
+ name: "DN存活状态",
stateName: "hdfs_datanodes",
value: "${lives} / ${total}",
- desc: "健康: ${lives}. 异常: ${dead}"
+ desc: "健康: ${lives}
异常: ${dead}"
}
]
},{
@@ -35,10 +35,10 @@ const OverviewConf={
id: "codis",
content: [
{
- name: "codis集群总数",
+ name: "Codis 集群",
stateName: "codis_cluster",
value: "${lives} / ${total}",
- desc: "正常: ${lives}. \
+ desc: "正常: ${lives}
\
异常: ${dead}"
},
{
@@ -49,8 +49,8 @@ const OverviewConf={
nonUsed: "${nonUsed}"
},
type: "pie",
- desc: "已使用: ${used} ${unit}, \
- 剩余: ${nonUsed} ${unit} \
+ desc: "已使用: ${used} ${unit}
\
+ 剩余: ${nonUsed} ${unit}
\
总共: ${total} ${unit}"
},
]
@@ -59,28 +59,28 @@ const OverviewConf={
id: "k8s",
content: [
{
- name: "pod个数",
+ name: "Pod个数",
stateName: "k8sp_pod",
value: "${lives} / ${total}",
- desc: "正常: ${lives}. 异常: ${dead}"
+ desc: "正常: ${lives}
异常: ${dead}"
},
{
- name: "rc个数",
+ name: "RC个数",
stateName: "k8sp_rc",
value: "${lives} / ${total}",
- desc: "正常: ${lives}. 异常: ${dead}"
+ desc: "正常: ${lives}
异常: ${dead}"
},
{
- name: "service状态",
+ name: "Service状态",
stateName: "k8sp_service",
value: "${k8sp_service}",
desc: "${k8sp_service} 状态."
},
{
- name: "node个数",
+ name: "Node个数",
stateName: "k8sp_nodes",
value: "${lives} / ${total}",
- desc: "正常: ${lives} 异常: ${dead}"
+ desc: "正常: ${lives}
异常: ${dead}"
}
]
},{
@@ -91,10 +91,10 @@ const OverviewConf={
type: "pieSubarea",
name: "BDMS任务运行图:",
stateName: "bdms_task",
- desc: " 待运行: ${waiting} 个,\n \
- 运行中: ${running} 个,\n \
- 运行成功: ${success} 个,\n \
- 运行失败: ${failed} 个,\n \
+ desc: " 待运行: ${waiting} 个
\
+ 运行中: ${running} 个
\
+ 运行成功: ${success} 个
\
+ 运行失败: ${failed} 个
\
总任务: ${total} 个",
value: [
{
@@ -123,20 +123,20 @@ const OverviewConf={
{
name: "虚拟机状态",
stateName: "openstack_vm",
- value: "${total}",
- desc: "正常: ${lives} 异常: ${dead}.",
+ value: "${lives} / ${total}",
+ desc: "正常: ${lives}
异常: ${dead}",
},
{
name: "镜像个数",
stateName: "openstack_image",
value: "${openstack_image}",
- desc: "共保存了 ${openstack_image} 个镜像."
+ desc: "共保存了 ${openstack_image} 个镜像"
},
{
name: "云硬盘个数",
stateName: "openstack_disk",
value: "${openstack_disk}",
- desc: "共分配了 ${openstack_disk} 个磁盘."
+ desc: "共分配了 ${openstack_disk} 个磁盘"
}
]
},{
@@ -147,7 +147,7 @@ const OverviewConf={
name: "成员个数",
stateName: "userAuth_member",
value: "${userAuth_member}",
- desc: "当前空间共有 ${userAuth_member} 人."
+ desc: "当前空间共有 ${userAuth_member} 人"
},
]
}],
diff --git a/package/Aries/src/functions/Overview/index.jsx b/package/Aries/src/functions/Overview/index.jsx
index 2f15578..f225b57 100644
--- a/package/Aries/src/functions/Overview/index.jsx
+++ b/package/Aries/src/functions/Overview/index.jsx
@@ -10,14 +10,14 @@ import common from 'public/Template/echarts/common'
import update from 'react-update'
export default React.createClass({
- getInitialState:function(){
+ getInitialState: function(){
return {
random: 0,
hdfs_disk: { //hdfs磁盘
- used: 100,
- nonUsed: 50,
+ used: 0,
+ nonUsed: 0,
unit: "TB",
- total: 150,
+ total: 0,
},
hdfs_shares: 0, //HDFS分享文件的个数
hdfs_datanodes: { //hdfs datanode状态
@@ -30,7 +30,7 @@ export default React.createClass({
dead: 0,
total: 0,
},
- codis_memory:{
+ codis_memory: {
used: 100,
nonUsed: 50,
unit: "GB",
@@ -59,7 +59,7 @@ export default React.createClass({
failed: 0, //失败
total: 0 //总数
},
- openstack_vm:{
+ openstack_vm: {
lives: 0, //正常
dead: 0, //异常
total: 0, //总数
@@ -91,7 +91,7 @@ export default React.createClass({