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,6 +19,12 @@ var gb_svg_chart = (function () { | ||
| 19 | 'svg-wrap': 'line' | 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 | var calc_text_y = function (t) { | 28 | var calc_text_y = function (t) { |
| 23 | return (chart_height - (chart_height / t_max_size * t.length)) / 2 + 5; | 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,7 +49,8 @@ var gb_svg_chart = (function () { | ||
| 43 | * @param enableAttr 是否启用配置 | 49 | * @param enableAttr 是否启用配置 |
| 44 | */ | 50 | */ |
| 45 | var draw_line = function (lineCode, wrap, enableAttr) { | 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 | var loopLine = gb_data_basic.isLoopLine(lineCode); | 55 | var loopLine = gb_data_basic.isLoopLine(lineCode); |
| 49 | 56 | ||
| @@ -84,6 +91,7 @@ var gb_svg_chart = (function () { | @@ -84,6 +91,7 @@ var gb_svg_chart = (function () { | ||
| 84 | return cx(d, i) - 8; | 91 | return cx(d, i) - 8; |
| 85 | }; | 92 | }; |
| 86 | 93 | ||
| 94 | + circle_spaces[wrapId] = (w - (x_padd * 2)) / len; | ||
| 87 | //add svg dom | 95 | //add svg dom |
| 88 | var svg = d3.select(wrap[0]).append('svg') | 96 | var svg = d3.select(wrap[0]).append('svg') |
| 89 | .classed({ | 97 | .classed({ |
| @@ -189,11 +197,17 @@ var gb_svg_chart = (function () { | @@ -189,11 +197,17 @@ var gb_svg_chart = (function () { | ||
| 189 | } | 197 | } |
| 190 | return circle; | 198 | return circle; |
| 191 | }, | 199 | }, |
| 192 | - gx = function (gps, svg) { | 200 | + gx = function (gps, svg, wrapId) { |
| 193 | var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); | 201 | var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); |
| 194 | if (!circle) return -100; | 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 | gy = function (gps, svg) { | 212 | gy = function (gps, svg) { |
| 199 | var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); | 213 | var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); |
| @@ -233,10 +247,13 @@ var gb_svg_chart = (function () { | @@ -233,10 +247,13 @@ var gb_svg_chart = (function () { | ||
| 233 | gps_key = function (d) { | 247 | gps_key = function (d) { |
| 234 | return d.deviceId; | 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 | if(x == -100) | 257 | if(x == -100) |
| 241 | $(this).css('transition-duration', 0).hide(); | 258 | $(this).css('transition-duration', 0).hide(); |
| 242 | else | 259 | else |
| @@ -319,12 +336,15 @@ var gb_svg_chart = (function () { | @@ -319,12 +336,15 @@ var gb_svg_chart = (function () { | ||
| 319 | //rect | 336 | //rect |
| 320 | var rects = gps_cont.selectAll('rect').data(data, gps_key); | 337 | var rects = gps_cont.selectAll('rect').data(data, gps_key); |
| 321 | rects.enter().append('rect').attr('_id', rct_id); | 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 | //text | 343 | //text |
| 324 | var ts = gps_cont.selectAll('text').data(data, gps_key); | 344 | var ts = gps_cont.selectAll('text').data(data, gps_key); |
| 325 | ts.enter().append('text').attr('_id', tx_id); | 345 | ts.enter().append('text').attr('_id', tx_id); |
| 326 | ts.text(g_text) | 346 | ts.text(g_text) |
| 327 | - gps_update_point(ts, svg); | 347 | + gps_update_point(ts, svg, wrapId); |
| 328 | }; | 348 | }; |
| 329 | 349 | ||
| 330 | var marker_clusterer = function (svg, lineCode) { | 350 | var marker_clusterer = function (svg, lineCode) { |
| @@ -405,6 +425,12 @@ var gb_svg_chart = (function () { | @@ -405,6 +425,12 @@ var gb_svg_chart = (function () { | ||
| 405 | draw_line: draw_line, | 425 | draw_line: draw_line, |
| 406 | setGps: setGps, | 426 | setGps: setGps, |
| 407 | deviceOffline: deviceOffline, | 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 | })(); |