Commit ae931eb86c2f61e08796661c82ad1abcb243a5e0
1 parent
685898b6
车辆分站内站外显示
Showing
1 changed file
with
36 additions
and
10 deletions
src/main/resources/static/real_control_v2/js/utils/svg_chart.js
| ... | ... | @@ -19,6 +19,12 @@ var gb_svg_chart = (function () { |
| 19 | 19 | 'svg-wrap': 'line' |
| 20 | 20 | } |
| 21 | 21 | |
| 22 | + //站点间隔 线路编码 -> space | |
| 23 | + var circle_spaces={}; | |
| 24 | + //var circle_space; | |
| 25 | + //是否启用动画 | |
| 26 | + var animation = true; | |
| 27 | + | |
| 22 | 28 | var calc_text_y = function (t) { |
| 23 | 29 | return (chart_height - (chart_height / t_max_size * t.length)) / 2 + 5; |
| 24 | 30 | }, |
| ... | ... | @@ -43,7 +49,8 @@ var gb_svg_chart = (function () { |
| 43 | 49 | * @param enableAttr 是否启用配置 |
| 44 | 50 | */ |
| 45 | 51 | var draw_line = function (lineCode, wrap, enableAttr) { |
| 46 | - wraps[lineCode+'_'+suffixs[wrap.attr('class')]]=wrap; | |
| 52 | + var wrapId = lineCode+'_'+suffixs[wrap.attr('class')]; | |
| 53 | + wraps[wrapId]=wrap; | |
| 47 | 54 | //环线 |
| 48 | 55 | var loopLine = gb_data_basic.isLoopLine(lineCode); |
| 49 | 56 | |
| ... | ... | @@ -84,6 +91,7 @@ var gb_svg_chart = (function () { |
| 84 | 91 | return cx(d, i) - 8; |
| 85 | 92 | }; |
| 86 | 93 | |
| 94 | + circle_spaces[wrapId] = (w - (x_padd * 2)) / len; | |
| 87 | 95 | //add svg dom |
| 88 | 96 | var svg = d3.select(wrap[0]).append('svg') |
| 89 | 97 | .classed({ |
| ... | ... | @@ -189,11 +197,17 @@ var gb_svg_chart = (function () { |
| 189 | 197 | } |
| 190 | 198 | return circle; |
| 191 | 199 | }, |
| 192 | - gx = function (gps, svg) { | |
| 200 | + gx = function (gps, svg, wrapId) { | |
| 193 | 201 | var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); |
| 194 | 202 | if (!circle) return -100; |
| 195 | 203 | |
| 196 | - return circle.attr('cx') - 16.5; | |
| 204 | + var x = circle.attr('cx') - 16.5, | |
| 205 | + s = circle_spaces[wrapId] / 2; | |
| 206 | + // console.log('ss', gps.lineId + '=' + s); | |
| 207 | + //s = 5; | |
| 208 | + if(gps['instation']==0) | |
| 209 | + x = (gps['upDown']==0?x+s:x-s); | |
| 210 | + return x; | |
| 197 | 211 | }, |
| 198 | 212 | gy = function (gps, svg) { |
| 199 | 213 | var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); |
| ... | ... | @@ -233,10 +247,13 @@ var gb_svg_chart = (function () { |
| 233 | 247 | gps_key = function (d) { |
| 234 | 248 | return d.deviceId; |
| 235 | 249 | }, |
| 236 | - gps_update_point = function (e, svg) { | |
| 237 | - var x; | |
| 238 | - e.transition().attr('x', function (d) { | |
| 239 | - x = gx(d, svg); | |
| 250 | + gps_update_point = function (e, svg, wrapId) { | |
| 251 | + var x,e1; | |
| 252 | + e1 = e; | |
| 253 | + if(animation) | |
| 254 | + e1 = e.transition(); | |
| 255 | + e1.attr('x', function (d) { | |
| 256 | + x = gx(d, svg, wrapId); | |
| 240 | 257 | if(x == -100) |
| 241 | 258 | $(this).css('transition-duration', 0).hide(); |
| 242 | 259 | else |
| ... | ... | @@ -319,12 +336,15 @@ var gb_svg_chart = (function () { |
| 319 | 336 | //rect |
| 320 | 337 | var rects = gps_cont.selectAll('rect').data(data, gps_key); |
| 321 | 338 | rects.enter().append('rect').attr('_id', rct_id); |
| 322 | - gps_update_point(rects, svg); | |
| 339 | + | |
| 340 | + //lineCode+'_'+suffixs[wrap.attr('class')] | |
| 341 | + var wrapId = $(svg).data('code') + '_' + suffixs[$(svg).parent().attr('class')]; | |
| 342 | + gps_update_point(rects, svg, wrapId); | |
| 323 | 343 | //text |
| 324 | 344 | var ts = gps_cont.selectAll('text').data(data, gps_key); |
| 325 | 345 | ts.enter().append('text').attr('_id', tx_id); |
| 326 | 346 | ts.text(g_text) |
| 327 | - gps_update_point(ts, svg); | |
| 347 | + gps_update_point(ts, svg, wrapId); | |
| 328 | 348 | }; |
| 329 | 349 | |
| 330 | 350 | var marker_clusterer = function (svg, lineCode) { |
| ... | ... | @@ -405,6 +425,12 @@ var gb_svg_chart = (function () { |
| 405 | 425 | draw_line: draw_line, |
| 406 | 426 | setGps: setGps, |
| 407 | 427 | deviceOffline: deviceOffline, |
| 408 | - refreshByVisible: refreshByVisible | |
| 428 | + refreshByVisible: refreshByVisible, | |
| 429 | + disabledAnimation: function () { | |
| 430 | + animation = false; | |
| 431 | + }, | |
| 432 | + enabledAnimation: function () { | |
| 433 | + animation = true; | |
| 434 | + } | |
| 409 | 435 | }; |
| 410 | 436 | })(); | ... | ... |