|
21 | 21 |
|
22 | 22 | <script> |
23 | 23 | let requestHost = ""; |
| 24 | + let nameMap = {}; |
24 | 25 | export default { |
25 | 26 | data() { |
26 | 27 | return { |
27 | 28 | form: { |
28 | 29 | server: "" |
29 | 30 | }, |
30 | 31 | serverList: [ |
31 | | - {"name": "http://192.168.199.105:5000", "value": "http://192.168.199.105:5000"} |
| 32 | + {"name": "http://192.168.199.112:5000", "value": "http://192.168.199.112:5000"} |
32 | 33 | ] |
33 | 34 | }; |
34 | 35 | }, |
|
43 | 44 | if (requestHost === "") { |
44 | 45 | return; |
45 | 46 | } |
46 | | - let action = "get_dag"; |
47 | | - requestHost += "/" + action; |
| 47 | + let requestUrl = ""; |
| 48 | + requestUrl = requestHost + "/get_dag"; |
48 | 49 | let request = {}; |
49 | 50 | let requestData = {"type": "JSON"}; |
50 | | - request.requestUrl = requestHost; |
| 51 | + request.requestUrl = requestUrl; |
51 | 52 | request.requestData = JSON.stringify(requestData); |
52 | 53 | this.axios.post("/api/QueryNodeDetail", request).then((res) => { |
53 | 54 | if (res.data["Code"] === 0) { |
|
60 | 61 | console.error(err); |
61 | 62 | }) |
62 | 63 | }, |
63 | | - getTotalOrder() { |
64 | | - if (requestHost === "") { |
65 | | - return; |
66 | | - } |
67 | | - let action = "get_total_order"; |
68 | | - requestHost += "/" + action; |
69 | | - let request = {}; |
70 | | - request.requestUrl = requestHost; |
71 | | - request.requestData = ""; |
72 | | - this.axios.post("/api/QueryNodeDetail", request).then((res) => { |
73 | | - console.log(res); |
74 | | - }).catch((err) => { |
75 | | - console.error(err); |
76 | | - }) |
77 | | - }, |
78 | 64 | drawDagMap(data) { |
79 | 65 | let myChart = this.$echarts.init(document.getElementById("dagChart")); |
80 | 66 | myChart.showLoading(); |
81 | 67 | // prepare nodes |
82 | | - let nodes = {}; |
| 68 | + let nodes = this.prepareMapData(data); |
| 69 | + let datas = []; |
| 70 | + nodes.forEach(function (item) { |
| 71 | + let shortName = item.id.substr(0,6); |
| 72 | + let unit = { |
| 73 | + x: item.x, |
| 74 | + y: item.y, |
| 75 | + id: shortName, |
| 76 | + name: shortName, |
| 77 | + symbolSize: 15, |
| 78 | + itemStyle: { |
| 79 | + normal: { |
| 80 | + color: "rgb(63, 167, 220)" |
| 81 | + } |
| 82 | + } |
| 83 | + }; |
| 84 | + datas.push(unit); |
| 85 | + nameMap[nameMap] = item.id; |
| 86 | + }); |
| 87 | + console.log(JSON.stringify(datas)); |
83 | 88 | let relations = []; |
84 | 89 | for (let i in data) { |
85 | | - let unit = {}; |
86 | | - nodes[i] = 1; |
87 | | - unit.target = i; |
88 | 90 | let b = data[i]; |
89 | 91 | for (let j in b) { |
90 | | - nodes[b[j]] = 1; |
91 | | - unit.source = b[j]; |
| 92 | + let unit = {}; |
| 93 | + unit.target = i.substr(0,6); |
| 94 | + unit.source = b[j].substr(0,6); |
92 | 95 | relations.push(unit); |
93 | 96 | } |
94 | 97 | } |
| 98 | + console.log(relations); |
95 | 99 | //prepare charts datas |
96 | 100 | let series = []; |
97 | 101 | let seriesData; |
98 | 102 | seriesData = { |
99 | 103 | type: "graph", |
100 | | - layout: "force", |
| 104 | + layout: "none", |
101 | 105 | edgeSymbol: ['arrow'], |
102 | | - data: Object.keys(nodes).map(function (item) { |
103 | | - return { |
104 | | - x: null, |
105 | | - y: null, |
106 | | - id: item, |
107 | | - name: item, |
108 | | - symbolSize: 25, |
109 | | - itemStyle: { |
110 | | - normal: { |
111 | | - color: "rgb(63, 167, 220)" |
112 | | - } |
113 | | - } |
114 | | - }; |
115 | | - }), |
| 106 | + data: datas, |
116 | 107 | edges: relations.map(function (edge) { |
117 | 108 | return { |
118 | 109 | source: edge.source, |
|
135 | 126 | } |
136 | 127 | }, |
137 | 128 | force: { |
138 | | - repulsion: 200, |
139 | | - edgeLength: [200, 200] |
| 129 | + repulsion: 150, |
| 130 | + edgeLength: [50, 250] |
140 | 131 | } |
141 | 132 | }; |
142 | 133 | series[0] = seriesData; |
|
168 | 159 | }); |
169 | 160 | myChart.hideLoading(); |
170 | 161 | }, |
| 162 | + prepareMapData(data) { |
| 163 | + //get root node |
| 164 | + let root = ""; |
| 165 | + let keys = []; |
| 166 | + let values = {}; |
| 167 | + for (let i in data) { |
| 168 | + keys.push(i); |
| 169 | + let b = data[i]; |
| 170 | + for (let j in b) { |
| 171 | + values[b[j]] = 1; |
| 172 | + } |
| 173 | + } |
| 174 | + for (let i in keys) { |
| 175 | + if (values[keys[i]] == null) { |
| 176 | + root = keys[i]; |
| 177 | + break; |
| 178 | + } |
| 179 | + } |
| 180 | + let resultData = []; |
| 181 | + let existNode = {}; |
| 182 | + let startx = 0; |
| 183 | + let starty = 500; |
| 184 | + let unit = {0: 80, 1: -80}; |
| 185 | + if (root !== "") { |
| 186 | + let createMap = function (nodeName, data, x, y) { |
| 187 | + if (!data[nodeName] || existNode[nodeName]) { |
| 188 | + return; |
| 189 | + } else { |
| 190 | + let item = {}; |
| 191 | + item.id = nodeName; |
| 192 | + item.x = x; |
| 193 | + item.y = y; |
| 194 | + resultData.push(item); |
| 195 | + existNode[nodeName] = 1; |
| 196 | + for (var i = 0, j = data[nodeName].length; i < j; i++) { |
| 197 | + if (j > 1) { |
| 198 | + createMap(data[nodeName][i], data, x + 100, y + unit[i]); |
| 199 | + } else { |
| 200 | + createMap(data[nodeName][i], data, x + 100, y); |
| 201 | + } |
| 202 | + } |
| 203 | + } |
| 204 | + }; |
| 205 | + createMap(root, data, startx, starty); |
| 206 | + } |
| 207 | + return resultData; |
| 208 | + }, |
| 209 | + getTotalOrder() { |
| 210 | + if (requestHost === "") { |
| 211 | + return; |
| 212 | + } |
| 213 | + let requestUrl = ""; |
| 214 | + requestUrl = requestHost + "/get_total_order"; |
| 215 | + let request = {}; |
| 216 | + request.requestUrl = requestUrl; |
| 217 | + request.requestData = ""; |
| 218 | + this.axios.post("/api/QueryNodeDetail", request).then((res) => { |
| 219 | + if (res.data["Code"] === 0) { |
| 220 | + alert(data["Message"]); |
| 221 | + } else { |
| 222 | + let data = JSON.parse(res.data["Data"]); |
| 223 | + this.drawOrderMap(data); |
| 224 | + } |
| 225 | + }).catch((err) => { |
| 226 | + console.error(err); |
| 227 | + }) |
| 228 | + }, |
| 229 | + drawOrderMap(data) { |
| 230 | + let myChart = this.$echarts.init(document.getElementById("dagChart")); |
| 231 | + myChart.showLoading(); |
| 232 | + let treeData = this.prepareTreeData(data); |
| 233 | + let series = []; |
| 234 | + let seriesData; |
| 235 | + seriesData = { |
| 236 | + type: 'tree', |
| 237 | + data: [treeData], |
| 238 | + top: '1%', |
| 239 | + left: '2%', |
| 240 | + bottom: '1%', |
| 241 | + right: '2%', |
| 242 | + symbolSize: 10, |
| 243 | + label: { |
| 244 | + normal: { |
| 245 | + position: 'left', |
| 246 | + verticalAlign: 'middle', |
| 247 | + align: 'right', |
| 248 | + fontSize: 9 |
| 249 | + } |
| 250 | + }, |
| 251 | + leaves: { |
| 252 | + label: { |
| 253 | + normal: { |
| 254 | + position: 'right', |
| 255 | + verticalAlign: 'middle', |
| 256 | + align: 'left' |
| 257 | + } |
| 258 | + } |
| 259 | + }, |
| 260 | + expandAndCollapse: false, |
| 261 | + animationDuration: 550, |
| 262 | + animationDurationUpdate: 750 |
| 263 | + }; |
| 264 | + series[0] = seriesData; |
| 265 | + let mapOption = {}; |
| 266 | + mapOption.title = {}; |
| 267 | + mapOption.title.text = "Dag Map"; |
| 268 | + mapOption.series = series; |
| 269 | + mapOption.tooltip = {trigger: 'item', triggerOn: 'mousemove'}; |
| 270 | + myChart.setOption(mapOption, true); |
| 271 | + myChart.on("click", function (param) { |
| 272 | + if (requestHost === "") { |
| 273 | + return; |
| 274 | + } |
| 275 | + let action = "get_block_content"; |
| 276 | + requestHost += "/" + action; |
| 277 | + let request = {}; |
| 278 | + let requestData = {"hashes": param.name}; |
| 279 | + request.requestUrl = requestHost; |
| 280 | + request.requestData = JSON.stringify(requestData); |
| 281 | + // $.ajax( |
| 282 | + // |
| 283 | + // ); |
| 284 | + this.axios.post("/api/QueryNodeDetail", request).then((res) => { |
| 285 | + console.log(res); |
| 286 | + }).catch((err) => { |
| 287 | + console.error(err); |
| 288 | + }) |
| 289 | + }); |
| 290 | + myChart.hideLoading(); |
| 291 | + }, |
| 292 | + prepareTreeData(data) { |
| 293 | + //get root node |
| 294 | + let root = ""; |
| 295 | + let keys = []; |
| 296 | + let values = {}; |
| 297 | + for (let i in data) { |
| 298 | + keys.push(i); |
| 299 | + let b = data[i]; |
| 300 | + for (let j in b) { |
| 301 | + values[b[j]] = 1; |
| 302 | + } |
| 303 | + } |
| 304 | + for (let i in keys) { |
| 305 | + if (values[keys[i]] == null) { |
| 306 | + root = keys[i]; |
| 307 | + break; |
| 308 | + } |
| 309 | + } |
| 310 | + // create tree |
| 311 | + let treeData = {}; |
| 312 | + let existNode = {}; |
| 313 | + if (root !== "") { |
| 314 | + let createTree = function (nodeName, data, treeData) { |
| 315 | + treeData.name = nodeName.substr(0, 6); |
| 316 | + if (!data[nodeName] || existNode[nodeName]) { |
| 317 | + return treeData; |
| 318 | + } else { |
| 319 | + existNode[nodeName] = 1; |
| 320 | + if (!treeData.children) { |
| 321 | + treeData.children = []; |
| 322 | + } |
| 323 | + for (var i in data[nodeName]) { |
| 324 | + let item = {}; |
| 325 | + treeData.children.push(createTree(data[nodeName][i], data, item)); |
| 326 | + } |
| 327 | + } |
| 328 | + return treeData; |
| 329 | + }; |
| 330 | + createTree(root, data, treeData); |
| 331 | + } |
| 332 | + return treeData; |
| 333 | + }, |
171 | 334 | } |
172 | 335 | } |
173 | 336 | </script> |
|
0 commit comments