Commit 18c7788e20b6a29d552c11c8ff68c425c6604ab6

Authored by 潘钊
1 parent 4d115176

update...

src/main/resources/static/real_control_v2/js/utils/svg_data_convert.js
@@ -6,184 +6,168 @@ var gb_svg_data_convert = (function () { @@ -6,184 +6,168 @@ var gb_svg_data_convert = (function () {
6 * 6 *
7 * enableAttr: 是否启用配置信息 7 * enableAttr: 是否启用配置信息
8 */ 8 */
9 - function mergeRoute(routes, enableAttr, lineCode, loopLine) { 9 + function mergeRoute(rs, enableAttr, lineCode, loopLine) {
10 //按上下行拆分 10 //按上下行拆分
11 - routes = gb_common.groupBy(routes, 'directions');  
12 - var up = routes[0],  
13 - down = routes[1]; 11 + rs = gb_common.groupBy(rs, 'directions');
14 //排序 12 //排序
15 - up.sort(upSort);  
16 - down.sort(downSort);  
17 - var data = [];  
18 -  
19 - //根据配置处理一下数据  
20 - if (enableAttr) {  
21 - var svgAttr = gb_data_basic.getSvgAttr(lineCode);  
22 - if (svgAttr) {  
23 - up = filterByAttrs(svgAttr, up);  
24 - down = filterByAttrs(svgAttr, down);  
25 - }  
26 - }  
27 -  
28 - //环线 只画上行  
29 - if(loopLine){  
30 - for (var j = 0; j < up.length; j++) {  
31 - var upS = nvl_get(up, j);  
32 - op = {  
33 - name: [upS.stationName],  
34 - id: [get_station_code(upS)],  
35 - type: 0,  
36 - stationMark: upS.stationMark  
37 - };  
38 - data.push(op); 13 + sort_station_route(rs);
  14 + //模拟图配置信息
  15 + use_chart_config(enableAttr, lineCode, rs);
  16 +
  17 + if(loopLine)
  18 + rs[1]=[];
  19 + //一个萝卜一个坑
  20 + data = putTurnip(rs[0], rs[1]);
  21 + return data;
  22 + }
  23 +
  24 + var putTurnip = function (arr1, arr2) {
  25 + var data = [], a1, a2;
  26 + for(var i = 0; i < 888; i ++){
  27 + a1=arr1[i];
  28 + a2=arr2[i];
  29 + if(null != a1 && null != a2 && a1.stationName!=a2.stationName) {
  30 + //arr2 包含 a1
  31 + var ii = name_indexOf(a1, arr2);
  32 + if(ii > i){
  33 + fill_arr(arr1, i, ii - i);
  34 + i-=1;
  35 + continue;
  36 + }
  37 + //arr1 包含 a2
  38 + ii = name_indexOf(a2, arr1);
  39 + if(ii > i){
  40 + fill_arr(arr2, i, ii - i);
  41 + i-=1;
  42 + continue;
  43 + }
39 } 44 }
40 45
41 - //上下行GPS容器  
42 - $.each(data, function () {  
43 - this.gpsUps = [];  
44 - this.gpsDowns = [];  
45 - });  
46 -  
47 - return data; 46 + if(null==a1 && null==a2)
  47 + break;
  48 + merge(data, i, a1, a2);
48 } 49 }
49 50
  51 + return data;
  52 + };
  53 +
  54 + var fill_arr = function (array, i, size) {
  55 + for(var j=0; j < size; j++){
  56 + array.splice(j + i, 0, null);
  57 + }
  58 + };
50 59
51 - //同名站点合并  
52 - for (var j = 0; j < up.length; j++) {  
53 - var upS = nvl_get(up, j),  
54 - downS = nvl_get(down, j),  
55 - op = {  
56 - name: [upS.stationName],  
57 - id: [get_station_code(upS), get_station_code(downS)],  
58 - type: 2,  
59 - stationMark: upS.stationMark//站点标记  
60 - };  
61 -  
62 - if (upS.stationName != downS.stationName) {  
63 - //下行站点在上行路由中是否存在  
64 - var dIndex = station_indexof(down, upS, j);  
65 - //上行站点在下行路由中是否存在  
66 - var uIndex = station_indexof(up, downS, j);  
67 - if (dIndex == -1 || dIndex - j > 4) {  
68 - if (uIndex == -1 && dIndex - j < 4) {  
69 - op.type = 3;  
70 - op.name = [upS.stationName, downS.stationName];  
71 - }  
72 - else {  
73 - op.type = 0;  
74 - op.id = [get_station_code(upS), -1];  
75 - //占位  
76 - down.splice(j, 0, {});  
77 - }  
78 - } else {  
79 - for (var t = j; t < dIndex - 1; t++) {  
80 - var temp = down[t];  
81 - data.push({  
82 - name: [temp.stationName],  
83 - type: 1,  
84 - id: [get_station_code(temp)]  
85 - });  
86 - }  
87 - //delete  
88 - down.splice(j, dIndex - 1 - j);  
89 - j--;  
90 - continue;  
91 - } 60 + var merge = function (array, i, a1, a2) {
  61 + array.splice(i, 1, createItem(a1, a2));
  62 + };
  63 +
  64 + var createItem = function (up, down) {
  65 + if(null==up && null==down)
  66 + return null;
  67 +
  68 + var names, type=2,ids,mark;
  69 + if(null==up){
  70 + type=1;
  71 + names=[down.stationName];
  72 + ids=[get_station_code(down)];
  73 + mark=down.stationMark;
  74 + }
  75 + else if(null==down) {
  76 + type=0;
  77 + names=[up.stationName];
  78 + ids=[get_station_code(up)];
  79 + mark=up.stationMark;
  80 + }
  81 + else{
  82 + names=[up.stationName];
  83 + ids=[get_station_code(up), get_station_code(down)];
  84 + mark=up.stationMark;
  85 + if(up.stationName!=down.stationName){
  86 + type=3;
  87 + names.push(down.stationName);
92 } 88 }
93 - data.push(op);  
94 } 89 }
  90 + return {
  91 + name: names,
  92 + id: ids,
  93 + type: type,
  94 + stationMark: mark
  95 + };
  96 + };
95 97
96 - //将上下行挨着的异名站点合并  
97 - var len = data.length - 1,  
98 - first, sec;  
99 - for (var s = 0; s < len; s++) {  
100 - first = data[s];  
101 - sec = data[s + 1];  
102 -  
103 - if (first.type == 0 &&  
104 - sec.type == 1) {  
105 - data.splice(s, 2, {  
106 - name: [first['name'][0], sec['name'][0]],  
107 - type: 3,  
108 - id: [first['id'][0], sec['id'][0]]  
109 - });  
110 - len--;  
111 - } else if (first.type == 1 && sec.type == 0) {  
112 - data.splice(s, 2, {  
113 - name: [first['name'][0], sec['name'][0]],  
114 - type: 3,  
115 - id: [first['id'][0], sec['id'][0]]  
116 - });  
117 - len--;  
118 - } 98 + var name_indexOf = function (a1, arr) {
  99 + for(var j=0,len=arr.length;j<len;j++){
  100 + if(null != arr[j] && a1.stationName==arr[j].stationName)
  101 + return j;
119 } 102 }
  103 + return -1;
  104 + };
120 105
121 - //上下行GPS容器  
122 - $.each(data, function () {  
123 - this.gpsUps = [];  
124 - this.gpsDowns = [];  
125 - });  
126 - return data; 106 + var get_station_code = function (s) {
  107 + return s.stationCode + '_' + s.directions;
127 }; 108 };
128 109
129 - var filterByAttrs = function (svgAttr, routes) {  
130 - var hideStations = svgAttr.hideStations ? svgAttr.hideStations : [];  
131 - var nicknames = svgAttr.nicknames ? svgAttr.nicknames : {};  
132 - var stationCode;  
133 - $.each(routes, function (i) {  
134 - stationCode = this.stationCode  
135 - //要隐藏的站点  
136 - $.each(hideStations, function (j, hide) {  
137 - if (stationCode == hide)  
138 - delete routes[i];  
139 - });  
140 -  
141 - //要重命名的站点  
142 - if (nicknames[this.stationName]) {  
143 - this.stationName = nicknames[this.stationName]; 110 + var use_chart_config = function (isEnable, lineCode, rs) {
  111 + if (isEnable) {
  112 + var config = gb_data_basic.getSvgAttr(lineCode);
  113 + if (config) {
  114 + rs[0] = filterByAttr(config, rs[0]);
  115 + rs[1] = filterByAttr(config, rs[1]);
144 } 116 }
145 - });  
146 - 117 + }
  118 + //路由首尾标记一下
  119 + rs[0][0].stationMark='B';
  120 + rs[0][rs[0].length-1].stationMark='E';
  121 + rs[1][0].stationMark='B';
  122 + rs[1][rs[1].length-1].stationMark='E';
  123 + };
  124 +
  125 + var filterByAttr = function (svgAttr, rs) {
  126 + var hsArray = svgAttr.hideStations ? svgAttr.hideStations : [];
  127 + var nsArray = svgAttr.nicknames ? svgAttr.nicknames : {};
147 var newRoutes = []; 128 var newRoutes = [];
148 - $.each(routes, function (i, station) {  
149 - if(station)  
150 - newRoutes.push(station);  
151 - });  
152 129
  130 + for (var i = 0, s; s = rs[i++];) {
  131 + if (isHidden(s.stationCode, hsArray))
  132 + return;
  133 +
  134 + if (nsArray[s.stationName])
  135 + s.stationName = nsArray[s.stationName];
  136 +
  137 + newRoutes.push(s);
  138 + }
153 return newRoutes; 139 return newRoutes;
154 }; 140 };
155 141
156 - var upSort = function (a, b) {  
157 - return a.stationRouteCode - b.stationRouteCode;  
158 - }; 142 + var isHidden = function (code, array) {
  143 + for (var i = 0, temp; temp = array[i++];) {
  144 + if (code == temp)
  145 + return true;
  146 + }
159 147
160 - var downSort = function (a, b) {  
161 - return b.stationRouteCode - a.stationRouteCode; 148 + return false;
162 }; 149 };
163 150
164 - var station_indexof = function (array, station, start) {  
165 - var res = -1;  
166 - for (var i = start, obj; obj = array[i++];) {  
167 - if (obj.stationName == station.stationName) {  
168 - res = i;  
169 - break;  
170 - } 151 + var sort_station_route = function (routes) {
  152 + try{
  153 + routes[0].sort(upSort);
  154 + routes[1].sort(downSort);
  155 + }catch (e){
  156 + console.log(e);
  157 + notify_err('有站点路由数据异常!');
171 } 158 }
172 - return res;  
173 }; 159 };
174 160
175 - var get_station_code = function (station) {  
176 - return station.stationCode + '_' + station.directions; 161 + var upSort = function (a, b) {
  162 + return a.stationRouteCode - b.stationRouteCode;
177 }; 163 };
178 164
179 - var nvl_get = function (list, index) {  
180 - return list[index] == null ? {} : list[index]; 165 + var downSort = function (a, b) {
  166 + return b.stationRouteCode - a.stationRouteCode;
181 }; 167 };
182 168
183 var groupByStationAndUpdown = function (data) { 169 var groupByStationAndUpdown = function (data) {
184 - //gb_common.groupBy(data, 'stopNo')  
185 - var rs = {},  
186 - key; 170 + var rs = {}, key;
187 $.each(data, function () { 171 $.each(data, function () {
188 key = this['stopNo'] + '_' + this['upDown']; 172 key = this['stopNo'] + '_' + this['upDown'];
189 if (!rs[key]) 173 if (!rs[key])
src/main/resources/static/real_control_v2/js/utils/svg_data_convert_bf.js 0 → 100644
  1 +var gb_svg_data_convert = (function () {
  2 +
  3 + /**
  4 + * 合并上下行路由
  5 + * type 0 上行 1 下行 2 同名合并 3 异名合并
  6 + *
  7 + * enableAttr: 是否启用配置信息
  8 + */
  9 + function mergeRoute(routes, enableAttr, lineCode, loopLine) {
  10 + console.log('routesroutes', routes);
  11 + //按上下行拆分
  12 + routes = gb_common.groupBy(routes, 'directions');
  13 + var up = routes[0],
  14 + down = routes[1];
  15 + //排序
  16 + up.sort(upSort);
  17 + down.sort(downSort);
  18 + var data = [];
  19 +
  20 + //根据配置处理一下数据
  21 + if (enableAttr) {
  22 + var svgAttr = gb_data_basic.getSvgAttr(lineCode);
  23 + if (svgAttr) {
  24 + up = filterByAttrs(svgAttr, up);
  25 + down = filterByAttrs(svgAttr, down);
  26 + }
  27 + }
  28 +
  29 + //环线 只画上行
  30 + if(loopLine){
  31 + for (var j = 0; j < up.length; j++) {
  32 + var upS = nvl_get(up, j);
  33 + op = {
  34 + name: [upS.stationName],
  35 + id: [get_station_code(upS)],
  36 + type: 0,
  37 + stationMark: upS.stationMark
  38 + };
  39 + data.push(op);
  40 + }
  41 +
  42 + //上下行GPS容器
  43 + $.each(data, function () {
  44 + this.gpsUps = [];
  45 + this.gpsDowns = [];
  46 + });
  47 +
  48 + return data;
  49 + }
  50 +
  51 +
  52 + //同名站点合并
  53 + for (var j = 0; j < up.length; j++) {
  54 + var upS = nvl_get(up, j),
  55 + downS = nvl_get(down, j),
  56 + op = {
  57 + name: [upS.stationName],
  58 + id: [get_station_code(upS), get_station_code(downS)],
  59 + type: 2,
  60 + stationMark: upS.stationMark//站点标记
  61 + };
  62 +
  63 + if (upS.stationName != downS.stationName) {
  64 + //下行站点在上行路由中是否存在
  65 + var dIndex = station_indexof(down, upS, j);
  66 + //上行站点在下行路由中是否存在
  67 + var uIndex = station_indexof(up, downS, j);
  68 + if (dIndex == -1 || dIndex - j > 4) {
  69 + if (uIndex == -1 && dIndex - j < 4) {
  70 + op.type = 3;
  71 + op.name = [upS.stationName, downS.stationName];
  72 + }
  73 + else {
  74 + op.type = 0;
  75 + op.id = [get_station_code(upS), -1];
  76 + //占位
  77 + down.splice(j, 0, {});
  78 + }
  79 + } else {
  80 + for (var t = j; t < dIndex - 1; t++) {
  81 + var temp = down[t];
  82 + data.push({
  83 + name: [temp.stationName],
  84 + type: 1,
  85 + id: [get_station_code(temp)]
  86 + });
  87 + }
  88 + //delete
  89 + down.splice(j, dIndex - 1 - j);
  90 + j--;
  91 + continue;
  92 + }
  93 + }
  94 + data.push(op);
  95 + }
  96 +
  97 + //将上下行挨着的异名站点合并
  98 + var len = data.length - 1,
  99 + first, sec;
  100 + for (var s = 0; s < len; s++) {
  101 + first = data[s];
  102 + sec = data[s + 1];
  103 +
  104 + if (first.type == 0 &&
  105 + sec.type == 1) {
  106 + data.splice(s, 2, {
  107 + name: [first['name'][0], sec['name'][0]],
  108 + type: 3,
  109 + id: [first['id'][0], sec['id'][0]]
  110 + });
  111 + len--;
  112 + } else if (first.type == 1 && sec.type == 0) {
  113 + data.splice(s, 2, {
  114 + name: [first['name'][0], sec['name'][0]],
  115 + type: 3,
  116 + id: [first['id'][0], sec['id'][0]]
  117 + });
  118 + len--;
  119 + }
  120 + }
  121 +
  122 + //上下行GPS容器
  123 + $.each(data, function () {
  124 + this.gpsUps = [];
  125 + this.gpsDowns = [];
  126 + });
  127 + return data;
  128 + };
  129 +
  130 + var filterByAttrs = function (svgAttr, routes) {
  131 + var hideStations = svgAttr.hideStations ? svgAttr.hideStations : [];
  132 + var nicknames = svgAttr.nicknames ? svgAttr.nicknames : {};
  133 + var stationCode;
  134 + $.each(routes, function (i) {
  135 + stationCode = this.stationCode
  136 + //要隐藏的站点
  137 + $.each(hideStations, function (j, hide) {
  138 + if (stationCode == hide)
  139 + delete routes[i];
  140 + });
  141 +
  142 + //要重命名的站点
  143 + if (nicknames[this.stationName]) {
  144 + this.stationName = nicknames[this.stationName];
  145 + }
  146 + });
  147 +
  148 + var newRoutes = [];
  149 + $.each(routes, function (i, station) {
  150 + if(station)
  151 + newRoutes.push(station);
  152 + });
  153 +
  154 + return newRoutes;
  155 + };
  156 +
  157 + var upSort = function (a, b) {
  158 + return a.stationRouteCode - b.stationRouteCode;
  159 + };
  160 +
  161 + var downSort = function (a, b) {
  162 + return b.stationRouteCode - a.stationRouteCode;
  163 + };
  164 +
  165 + var station_indexof = function (array, station, start) {
  166 + var res = -1;
  167 + for (var i = start, obj; obj = array[i++];) {
  168 + if (obj.stationName == station.stationName) {
  169 + res = i;
  170 + break;
  171 + }
  172 + }
  173 + return res;
  174 + };
  175 +
  176 + var get_station_code = function (station) {
  177 + return station.stationCode + '_' + station.directions;
  178 + };
  179 +
  180 + var nvl_get = function (list, index) {
  181 + return list[index] == null ? {} : list[index];
  182 + };
  183 +
  184 + var groupByStationAndUpdown = function (data) {
  185 + //gb_common.groupBy(data, 'stopNo')
  186 + var rs = {},
  187 + key;
  188 + $.each(data, function () {
  189 + key = this['stopNo'] + '_' + this['upDown'];
  190 + if (!rs[key])
  191 + rs[key] = [];
  192 +
  193 + rs[key].push(this);
  194 + });
  195 +
  196 + return rs;
  197 + };
  198 + return {mergeRoute: mergeRoute, groupByStationAndUpdown: groupByStationAndUpdown};
  199 +})();
src/main/resources/static/real_control_v2/js/utils/svg_data_convert_cx.js deleted 100644 → 0
1 -var gb_svg_data_convert = (function () {  
2 -  
3 - /**  
4 - * 合并上下行路由  
5 - * type 0 上行 1 下行 2 同名合并 3 异名合并  
6 - *  
7 - * enableAttr: 是否启用配置信息  
8 - */  
9 - function mergeRoute(rs, enableAttr, lineCode, loopLine) {  
10 - //按上下行拆分  
11 - rs = gb_common.groupBy(rs, 'directions');  
12 - //排序  
13 - sort_station_route(rs);  
14 - //模拟图配置信息  
15 - use_chart_config(enableAttr, lineCode, rs);  
16 -  
17 - var data = [].concat(rs[0]);  
18 -  
19 -  
20 - return data;  
21 - }  
22 -  
23 - var use_chart_config = function (isEnable, lineCode, rs) {  
24 - if (isEnable) {  
25 - var config = gb_data_basic.getSvgAttr(lineCode);  
26 - if (config) {  
27 - rs[0] = filterByAttr(config, rs[0]);  
28 - rs[1] = filterByAttr(config, rs[1]);  
29 - }  
30 - }  
31 - };  
32 -  
33 - var filterByAttr = function (svgAttr, rs) {  
34 - var hsArray = svgAttr.hideStations ? svgAttr.hideStations : [];  
35 - var nsArray = svgAttr.nicknames ? svgAttr.nicknames : {};  
36 - var newRoutes = [];  
37 -  
38 - for (var i = 0, s; s = rs[i++];) {  
39 - if (isHidden(s.stationCode, hsArray))  
40 - return;  
41 -  
42 - if (nsArray[s.stationName])  
43 - s.stationName = nsArray[s.stationName];  
44 -  
45 - newRoutes.push(s);  
46 - }  
47 - return newRoutes;  
48 - };  
49 -  
50 - var isHidden = function (code, array) {  
51 - for (var i = 0, temp; temp = array[i++];) {  
52 - if (code == temp)  
53 - return true;  
54 - }  
55 -  
56 - return false;  
57 - };  
58 -  
59 - var sort_station_route = function (routes) {  
60 - try{  
61 - routes[0].sort(upSort);  
62 - routes[1].sort(downSort);  
63 - }catch (e){  
64 - console.log(e);  
65 - notify_err('有站点路由数据异常!');  
66 - }  
67 - };  
68 -  
69 - var upSort = function (a, b) {  
70 - return a.stationRouteCode - b.stationRouteCode;  
71 - };  
72 -  
73 - var downSort = function (a, b) {  
74 - return b.stationRouteCode - a.stationRouteCode;  
75 - };  
76 -  
77 -  
78 - var nvl_get = function (list, index) {  
79 - return list[index] == null ? {} : list[index];  
80 - };  
81 -  
82 - var groupByStationAndUpdown = function (data) {  
83 - var rs = {}, key;  
84 - $.each(data, function () {  
85 - key = this['stopNo'] + '_' + this['upDown'];  
86 - if (!rs[key])  
87 - rs[key] = [];  
88 -  
89 - rs[key].push(this);  
90 - });  
91 -  
92 - return rs;  
93 - };  
94 - return {mergeRoute: mergeRoute, groupByStationAndUpdown: groupByStationAndUpdown};  
95 -})();