ECMAscript echart图表转换

图表数据输出

  1 var InputStreamCallback = Java.type("org.apache.nifi.processor.io.InputStreamCallback");
  2 var OutputStreamCallback = Java.type("org.apache.nifi.processor.io.OutputStreamCallback");
  3 var IOUtils = Java.type("org.apache.commons.io.IOUtils");
  4 var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
  5 var flowFile = session.get();
  6 if(flowFile != null) {
  7     try {
  8         var names = flowFile.getAttribute('图表名称')
  9         var keys = flowFile.getAttribute('图表key字段')
 10         var values = flowFile.getAttribute('图表值字段')
 11         var type = flowFile.getAttribute('输出图表类型')
 12         var namesArr = names.split(",")
 13         var keysArr = keys.split(",")
 14         var valuesArr = values.split(",")
 15         var res = {};
 16         var list = [];
 17         session.read(flowFile, new InputStreamCallback(function(inputStream) {
 18             var str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
 19             var obj = JSON.parse(str);
 20             list = obj
 21         }));
 22         switch(type){
 23             case 'line':
 24                 for(var i = 0;i < valuesArr.length;i++){
 25                     if(keysArr[i]){
 26                         var yAsix = [];
 27                         var xAsix = [];
 28                         for(var j =0;j<list.length;j++){
 29                             var itemj = list[j]
 30                             xAsix.push(itemj[keysArr[i]])
 31                             yAsix.push(itemj[valuesArr[i]])
 32                         }
 33                         res["data"+i] = {
 34                             "name":(namesArr[i] ||"")+"线性图",
 35                             "type":"line",
 36                             "yAsix": yAsix,
 37                             "xAsix": xAsix
 38                         }
 39                     }
 40                 }
 41             break;
 42             case 'pie':
 43                 for(var i = 0;i < valuesArr.length;i++){
 44                     if(keysArr[i]){
 45                         var legend = [];
 46                         var series = [];
 47                         for(var j =0;j<list.length;j++){
 48                             var itemj = list[j]
 49                             legend.push(itemj[keysArr[i]])
 50                             series.push({
 51                                 "name":itemj[keysArr[i]],
 52                                 "value":itemj[valuesArr[i]]
 53                             })
 54                         }
 55                         res["data"+i] = {
 56                             "name":(namesArr[i] ||"")+"饼图",
 57                             "type":"pie",
 58                             "legend": legend,
 59                             "series": series
 60                         }
 61                     }
 62                 }
 63             break;
 64             case 'laser':
 65                 for(var i = 0;i < valuesArr.length;i++){
 66                     if(keysArr[i]){
 67                         var indicator = [];
 68                         var values = [];
 69                         for(var j =0;j<list.length;j++){
 70                             var itemj = list[j]
 71                             indicator.push({
 72                                 "name":itemj[keysArr[i]],
 73                                 "max":parseFloat(itemj[valuesArr[i]],10)*1.25
 74                             })
 75                             values.push(itemj[valuesArr[i]])
 76                         }
 77                         res["data"+i] = {
 78                             "type":"laser",
 79                             "name":(namesArr[i] ||"")+"雷达图",
 80                             "indicator":indicator,
 81                             "data":{
 82                                 "name":(namesArr[i] ||"")+"雷达图",
 83                                 "value": values
 84                             }
 85                         }
 86                     }
 87                 }
 88             break;
 89             default:
 90             break;
 91         }
 92         flowFile = session.write(flowFile, new OutputStreamCallback(function(outputStream) {
 93             var text = JSON.stringify(res);
 94             outputStream.write(text.getBytes(StandardCharsets.UTF_8))
 95         }));
 96         session.transfer(flowFile, REL_SUCCESS)
 97     } catch(e) {
 98         session.transfer(flowFile, REL_FAILURE)
 99     }
100 }
101 var type = 'laser';
102 var names = 'area分布,percent分布';
103 var keys = 'name,name';
104 var values = 'area,percent';
105 var namesArr = names.split(",")
106 var keysArr = keys.split(",")
107 var valuesArr = values.split(",")
108 var res = {};
109 switch(type){
110     case 'line':
111         for(var i = 0;i < valuesArr.length;i++){
112             if(keysArr[i]){
113                 var yAsix = [];
114                 var xAsix = [];
115                 for(var j =0;j<list.length;j++){
116                     var itemj = list[j]
117                     xAsix.push(itemj[keysArr[i]])
118                     yAsix.push(itemj[valuesArr[i]])
119                 }
120                 res["data"+i] = {
121                     "name":(namesArr[i] ||"")+"线性图",
122                     "type":"line",
123                     "yAsix": yAsix,
124                     "xAsix": xAsix
125                 }
126             }
127         }
128     break;
129     case 'pie':
130         for(var i = 0;i < valuesArr.length;i++){
131             if(keysArr[i]){
132                 var legend = [];
133                 var series = [];
134                 for(var j =0;j<list.length;j++){
135                     var itemj = list[j]
136                     legend.push(itemj[keysArr[i]])
137                     series.push({
138                         "name":itemj[keysArr[i]],
139                         "value":itemj[valuesArr[i]]
140                     })
141                 }
142                 res["data"+i] = {
143                     "name":(namesArr[i] ||"")+"饼图",
144                     "type":"pie",
145                     "legend": legend,
146                     "series": series
147                 }
148             }
149         }
150     break;
151     case 'laser':
152         for(var i = 0;i < valuesArr.length;i++){
153             if(keysArr[i]){
154                 var indicator = [];
155                 var values = [];
156                 for(var j =0;j<list.length;j++){
157                     var itemj = list[j]
158                     indicator.push({
159                         "name":itemj[keysArr[i]],
160                         "max":parseFloat(itemj[valuesArr[i]],10)*1.25
161                     })
162                     values.push(itemj[valuesArr[i]])
163                 }
164                 res["data"+i] = {
165                     "type":"laser",
166                     "name":(namesArr[i] ||"")+"雷达图",
167                     "indicator":indicator,
168                     "data":{
169                         "name":(namesArr[i] ||"")+"雷达图",
170                         "value": values
171                     }
172                 }
173             }
174         }
175     break;
176     default:
177     break;
178 }

 

posted @ 2021-07-22 14:31  木章  阅读(67)  评论(0编辑  收藏  举报