Changeset 463 in tmcsimulator for trunk/webapps
- Timestamp:
- 07/23/2019 05:08:29 PM (7 years ago)
- Location:
- trunk/webapps
- Files:
-
- 1 added
- 5 edited
-
cmsmonitor/index.html (modified) (7 diffs)
-
common/js/revision_number.dat (modified) (1 diff)
-
dynamicdata/IncidentActivity.log (added)
-
dynamicdata/cms_messages.json (modified) (3 diffs)
-
dynamicdata/har_messages.json (modified) (1 diff)
-
dynamicdata/unifiedlog.csv (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/webapps/cmsmonitor/index.html
r406 r463 43 43 padding-right: 5%; 44 44 } 45 #har_info{ 46 font-size: 20px; 47 font-family: Arial; 48 font-weight:lighter; 49 color: white; 50 padding-left: 5%; 51 padding-right: 5%; 52 } 53 54 .har_content{ 55 font-size: 20px; 56 padding: 8px; 57 font-family: "Calibri"; 58 color: white; 59 margin: 5px 10% 20px 10%; 60 background-color: rgb(29, 21, 21); 61 white-space:nowrap; 62 overflow:hidden; 63 } 64 45 65 .cms_content{ 46 66 font-size: 34px; … … 67 87 clear: both; 68 88 } 89 90 #page { 91 margin-left: 46%; 92 } 93 69 94 </style> 70 95 </head> … … 73 98 <div class="column left" > 74 99 <h2>Active CMS Messages</h2> 100 <h3 id="page">Pg 1 of 1</h3> 75 101 <p id="msgs"></p> 102 </div> 103 </div> 104 <div class="row"> 105 <div class="column left" > 106 <h2>Active HAR Messages</h2> 107 <p id="har"></p> 108 </div> 76 109 </div> 77 110 </div> … … 83 116 <script> 84 117 showRevision(); 118 var msgsPerPage = 8; // constant: number of CMS msgs per display page 119 var loaded = false; 85 120 var cmsLocations = {}; 121 var harLocations = {}; 122 var phase = {one: [], two: [], header:[]}; //Phase1 and Phase2 messages, and location info each stored in a different array 123 var pageNumber = 0; //Current page index 124 var messages = {}; //Container to hold arrays for pagination 125 86 126 // Load the CMS locations from the geojson file 87 127 function loadCMSlocations() … … 99 139 }); 100 140 } 141 // Load the HAR locations from the geojson file 142 function loadHARLocations() 143 { 144 loadJSON("../cptms/data_layers/har_locations_D12.gjson", function(response) 145 { 146 // Parse JSON string into object 147 var harjson = JSON.parse(response); 148 for (var i = 0; i < harjson.features.length; i++) 149 { 150 var item = harjson.features[i]; 151 // Add each item to a lookup dictionary 152 harLocations[item.id] = item; 153 } 154 }); 155 } 156 // Load the file of HAR messages 157 function loadAllHARMessages() 158 { 159 var cnt = 1; 160 var display = document.getElementById("har"); 161 display.innerHTML = ""; 162 loadJSON("../dynamicdata/har_messages.json", function(response) 163 { 164 // Parse JSON string into object 165 messagejson = JSON.parse(response); 166 // Consider each message 167 for (var i = 0; i < messagejson.data.length; i++) 168 { 169 var item = messagejson.data[i]; 170 var harLoc = harLocations[item.har.index]; 171 var phase1 = item.har.message.phase1.Line1; 172 if (phase1 != "" && cnt <= 3) //limit to 3 messages 173 { 174 display.innerHTML += "<div id=\"har_info\">" + item.har.index + ": " + 175 harLoc.properties.location + " " + harLoc.properties.street + "</div>"; 176 display.innerHTML += "<div class=\"har_content\">" + phase1 + "</div>" ; 177 cnt++; 178 } 179 } 180 }); 181 } 101 182 // Load the file of CMS messages 102 183 function loadAllcmsMessages() … … 105 186 var cnt = 0; 106 187 var display = document.getElementById("msgs"); 107 display.innerHTML = "" 188 display.innerHTML = ""; 108 189 loadJSON("../dynamicdata/cms_messages.json", function(response) 109 190 { … … 124 205 var phase2 = item.cms.message.phase2.Line1.toUpperCase() + "<br>" + 125 206 item.cms.message.phase2.Line2.toUpperCase() + "<br>" + 126 item.cms.message.phase2.Line3.toUpperCase(); 127 207 item.cms.message.phase2.Line3.toUpperCase() + "<br>"; 128 208 // If the message isn't blank, append it to the list 129 209 // adding a seperate dotted line between phase1 and phase2 130 if (phase1 != "<br><br><br>" || phase2 != "<br><br> ")210 if (phase1 != "<br><br><br>" || phase2 != "<br><br><br>") 131 211 { 212 // store phase 1 and phase 2 messages in arrays 213 phase.one[cnt] = phase1; 214 phase.two[cnt] = phase2; 132 215 // Keep track of the number of non-empty cms message 133 216 cnt++; 134 217 // Determine odd or even cms message in order to alternate the background color 135 if (cnt%2==0) { 218 if (cnt%2==0) 219 { 136 220 bg = "even"; 137 } else { 221 } else 222 { 138 223 bg = "odd"; 139 224 } 140 display.innerHTML += "<div id=\"cms_info\" class=\"" + bg + "\">" + item.cms.index + ": " + 225 // Store location info in array 226 phase.header[cnt-1] = "<div id=\"cms_info\" class=\"" + bg + "\">" + item.cms.index + ": " + 141 227 cmsLoc.properties.location + " " + cmsLoc.properties.street + "</div>"; 142 display.innerHTML += "<div class=\"cms_content " + bg + "\">" + phase1 + "</div>" + 143 "<div class=\"divider " + bg + "\"> -----------------------------------------------</div>" + 144 "<div class=\"cms_content " + bg + "\">" + phase2 + "</div>"; 228 229 // Only come here initially where page is loaded 230 /* if (i <= messagejson.data.length - 1 && loaded === false) { 231 display.innerHTML += phase.header[cnt-1]; 232 display.innerHTML += "<div class=\"cms_content " + bg + "\">" + phase1 + "</div>" ; 233 if (i == messagejson.data.length - 1) 234 loaded = true; 235 }*/ 145 236 } 146 } 237 } 147 238 }); 148 } 149 239 // After all relevant info is stored in arrays, we can begin pagination 240 //console.log(phase.one, phase.one.length); 241 switchPages(); 242 } 243 244 // Returns an array of elements to be displayed given a page_number 245 function paginate (array, page_size, page_number) { 246 --page_number; // because pages logically start with 1, but technically with 0 247 return array.slice(page_number * page_size, (page_number + 1) * page_size); 248 } 249 250 function switchPages() 251 { 252 var display = document.getElementById("msgs"); 253 var finalPage = Math.ceil(phase.one.length / msgsPerPage); 254 display.innerHTML = ""; 255 pageNumber++; 256 // Check if last page is reached, then cycle back to 1 257 if (pageNumber > finalPage) 258 { 259 pageNumber = 1; 260 } 261 // Change Page Number 262 var pageIndex = document.getElementById("page"); 263 pageIndex.innerHTML = "Pg " + pageNumber + " of " + finalPage; 264 // Paginate all arrays 265 var phase1msgs = paginate(phase.one, msgsPerPage, pageNumber); //phase 1 messages after pagination 266 var phase2msgs = paginate(phase.two, msgsPerPage, pageNumber); //phase 2 messages after pagination 267 var header = paginate(phase.header, msgsPerPage, pageNumber); //location info after pagination 268 // Output the CMS messages and location info from the paginated arrays 269 for (var cnt = 0; cnt < phase1msgs.length; cnt++) 270 { 271 // Determine odd or even cms message in order to alternate the background color 272 if (cnt % 2 == 0) 273 { 274 bg = "odd"; 275 } 276 else 277 { 278 bg = "even"; 279 } 280 display.innerHTML += header[cnt]; 281 display.innerHTML += "<div class=\"cms_content " + bg + "\">" + phase1msgs[cnt] + "</div>"; 282 } 283 // Hold the paginated arrays in container 'messages' 284 messages.phase1msgs = phase1msgs; 285 messages.phase2msgs = phase2msgs; 286 } 287 288 function switchPhase() 289 { 290 var cnt = 0; 291 // Do a swap between the arrays in 'messages' storing each phase 292 var temp = messages.phase1msgs; 293 messages.phase1msgs = messages.phase2msgs; 294 messages.phase2msgs = temp; 295 if (messages.phase1msgs.length == 0) 296 { 297 messages.phase1msgs = phase.two; 298 } 299 // Get all CMS messages currently displayed 300 odd = document.getElementsByClassName('cms_content odd'); 301 even = document.getElementsByClassName('cms_content even'); 302 // Change each message to display messages from the swapped array instead 303 [].slice.call(odd).forEach(function(o) 304 { 305 if (messages.phase1msgs[cnt] != "<br><br><br>") 306 { 307 o.innerHTML = messages.phase1msgs[cnt] + "</div>"; 308 } 309 cnt += 2; 310 }); 311 cnt = 1; 312 [].slice.call(even).forEach(function(e) 313 { 314 if (messages.phase1msgs[cnt] != "<br><br><br>") 315 { 316 e.innerHTML = messages.phase1msgs[cnt] + "</div>"; 317 } 318 cnt += 2; 319 }); 320 } 150 321 // Start 151 322 loadCMSlocations(); 323 loadHARLocations(); 152 324 loadAllcmsMessages(); 325 loadAllHARMessages(); 326 327 // start an interval timer to switch phases every 5 seconds 328 var phaseTimer = setInterval(switchPhase, 2000); 153 329 // start an interval timer to refresh the cms icons every 10 seconds 154 330 var cmsTimer = setInterval(loadAllcmsMessages, 10000); 331 // start an interval timer to refresh the har messages every 10 seconds 332 var harTimer = setInterval(loadAllHARMessages, 10000); 155 333 156 334 </script> -
trunk/webapps/common/js/revision_number.dat
r443 r463 1 1 2 var revisionNumber = "4 42";2 var revisionNumber = "462"; 3 3 -
trunk/webapps/dynamicdata/cms_messages.json
r442 r463 8 8 {"cms":{"index":"16","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 9 9 {"cms":{"index":"17","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 10 {"cms":{"index":"18","message":{"displayTime":"","phase1":{"Line1":" ","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}},10 {"cms":{"index":"18","message":{"displayTime":"","phase1":{"Line1":"BBBBB","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 11 11 {"cms":{"index":"19","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 12 12 {"cms":{"index":"20","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, … … 34 34 {"cms":{"index":"69","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 35 35 {"cms":{"index":"70","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 36 {"cms":{"index":"71","message":{"displayTime":"","phase1":{"Line1":"SLOW FOR THE","Line2":"","Line3":"CONE ZONE"},"phase2":{"Line1":" ","Line2":"","Line3":""}}}},36 {"cms":{"index":"71","message":{"displayTime":"","phase1":{"Line1":"SLOW FOR THE","Line2":"","Line3":"CONE ZONE"},"phase2":{"Line1":"ROAD WORK","Line2":"AHEAD","Line3":""}}}}, 37 37 {"cms":{"index":"72","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 38 38 {"cms":{"index":"73","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, … … 49 49 {"cms":{"index":"84","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 50 50 {"cms":{"index":"85","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 51 {"cms":{"index":"86","message":{"displayTime":"","phase1":{"Line1":" ","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}},51 {"cms":{"index":"86","message":{"displayTime":"","phase1":{"Line1":"AAAAAA","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 52 52 {"cms":{"index":"87","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, 53 53 {"cms":{"index":"88","message":{"displayTime":"","phase1":{"Line1":"","Line2":"","Line3":""},"phase2":{"Line1":"","Line2":"","Line3":""}}}}, -
trunk/webapps/dynamicdata/har_messages.json
r438 r463 1 1 {"data":[ 2 {"har":{"index":"WPMW407 1620 AM","message":{"displayTime":"","phase1":{"Line1":"GOOD MORNING, AMERICA"}}}},2 {"har":{"index":"WPMW407 1620 AM","message":{"displayTime":"","phase1":{"Line1":"GOOD NIGHT"}}}}, 3 3 {"har":{"index":"KNNN868 1620 AM","message":{"displayTime":"","phase1":{"Line1":"HELLO WORLD"}}}} 4 4 ]} -
trunk/webapps/dynamicdata/unifiedlog.csv
r443 r463 1 0:00:49, CMS Activated.,N I-405 15.18 MAGNOLIA ST, 'SLOW FOR THE::CONE ZONE:::' 1 0:00:30, CMS Activated.,N I-405 15.18 MAGNOLIA ST, 'SLOW FOR THE::CONE ZONE:::' 2 0:00:30, Activity Log: Ha, Khanh DuyPer 32-1, NB rte 405 blocked 3 0:00:30, Activity Log: Gross, AngeloHCC NOTIFIED 4 0:00:30, Activity Log: Gross, Angelo32-1 Vehicle Disabled S 55@ 405 1308 hours 5 0:00:30, Activity Log: 10-98 Assignment Completed75-1
Note: See TracChangeset
for help on using the changeset viewer.
