Changeset 463 in tmcsimulator for trunk/webapps/cmsmonitor/index.html


Ignore:
Timestamp:
07/23/2019 05:08:29 PM (7 years ago)
Author:
jdalbey
Message:

Update cms monitor with enhancements #156

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/webapps/cmsmonitor/index.html

    r406 r463  
    4343  padding-right: 5%; 
    4444} 
     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 
    4565.cms_content{ 
    4666  font-size: 34px; 
     
    6787  clear: both; 
    6888} 
     89 
     90#page { 
     91  margin-left: 46%; 
     92} 
     93 
    6994</style> 
    7095</head> 
     
    7398  <div class="column left" > 
    7499    <h2>Active CMS Messages</h2> 
     100    <h3 id="page">Pg 1 of 1</h3> 
    75101    <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> 
    76109  </div> 
    77110</div> 
     
    83116   <script> 
    84117    showRevision(); 
     118        var msgsPerPage = 8; // constant: number of CMS msgs per display page 
     119    var loaded = false; 
    85120    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 
    86126    // Load the CMS locations from the geojson file 
    87127    function loadCMSlocations() 
     
    99139        }); 
    100140    } 
     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    } 
    101182    // Load the file of CMS messages 
    102183    function loadAllcmsMessages() 
     
    105186        var cnt = 0; 
    106187        var display = document.getElementById("msgs"); 
    107         display.innerHTML = "" 
     188        display.innerHTML = ""; 
    108189        loadJSON("../dynamicdata/cms_messages.json", function(response) 
    109190        { 
     
    124205                var phase2 = item.cms.message.phase2.Line1.toUpperCase() +  "<br>" + 
    125206                    item.cms.message.phase2.Line2.toUpperCase() + "<br>" + 
    126                     item.cms.message.phase2.Line3.toUpperCase(); 
    127        
     207                    item.cms.message.phase2.Line3.toUpperCase() + "<br>"; 
    128208                // If the message isn't blank, append it to the list 
    129209                // 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>") 
    131211                { 
     212                    // store phase 1 and phase 2 messages in arrays 
     213                    phase.one[cnt] = phase1; 
     214                    phase.two[cnt] = phase2; 
    132215                    // Keep track of the number of non-empty cms message  
    133216                    cnt++; 
    134217                    // Determine odd or even cms message in order to alternate the background color 
    135                     if (cnt%2==0) { 
     218                    if (cnt%2==0)  
     219                                        { 
    136220                      bg = "even"; 
    137                     } else { 
     221                    } else  
     222                                        { 
    138223                      bg = "odd"; 
    139224                    } 
    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 + ": " +  
    141227                        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                   }*/ 
    145236                } 
    146             } 
     237            }             
    147238        }); 
    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 
     245function 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 
     250function 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 
     288function 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} 
    150321// Start 
    151322loadCMSlocations(); 
     323loadHARLocations(); 
    152324loadAllcmsMessages(); 
     325loadAllHARMessages(); 
     326 
     327// start an interval timer to switch phases every 5 seconds 
     328var phaseTimer = setInterval(switchPhase, 2000); 
    153329// start an interval timer to refresh the cms icons every 10 seconds 
    154330var cmsTimer = setInterval(loadAllcmsMessages, 10000); 
     331// start an interval timer to refresh the har messages every 10 seconds 
     332var harTimer = setInterval(loadAllHARMessages, 10000); 
    155333 
    156334   </script> 
Note: See TracChangeset for help on using the changeset viewer.