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 }
做你说过的 说你能做的;