extensions/net.sf.basedb.reggie/trunk/resources/index.js

Code
Comments
Other
Rev Date Author Line
2369 22 Apr 14 nicklas 1 var Index = function()
2369 22 Apr 14 nicklas 2 {
2369 22 Apr 14 nicklas 3   var index = {};
3744 12 Feb 16 nicklas 4   var debug = 0;
2369 22 Apr 14 nicklas 5   var myPermissions = {};
3124 09 Feb 15 nicklas 6   var counterInfo = null;
2369 22 Apr 14 nicklas 7
2369 22 Apr 14 nicklas 8   index.initPage = function()
2369 22 Apr 14 nicklas 9   {
2369 22 Apr 14 nicklas 10     Events.doOnEnter('caseName', index.caseSummary);
2801 13 Oct 14 nicklas 11     Events.addEventHandler('caseName', 'keypress', index.testSnake);
2369 22 Apr 14 nicklas 12     Buttons.addClickHandler('btnCaseSummary', index.caseSummary);
4691 13 Mar 18 nicklas 13     Buttons.addClickHandler('counter-refresh', index.forceLoadCounts);
4691 13 Mar 18 nicklas 14     Doc.removeClass('counter-loading', 'link');
4691 13 Mar 18 nicklas 15     
5374 18 Apr 19 nicklas 16     var groupMenus = document.getElementsByClassName('group-menu');
5374 18 Apr 19 nicklas 17     for (var groupNo = 0; groupNo < groupMenus.length; groupNo++)
5374 18 Apr 19 nicklas 18     {
5374 18 Apr 19 nicklas 19       var grp = groupMenus[groupNo];
5374 18 Apr 19 nicklas 20       if (!Doc.isDisabled(grp))
5374 18 Apr 19 nicklas 21       {
5374 18 Apr 19 nicklas 22         Buttons.addClickHandler(grp, index.showWizardGroup);
5374 18 Apr 19 nicklas 23       }
5374 18 Apr 19 nicklas 24     }
5374 18 Apr 19 nicklas 25     
2369 22 Apr 14 nicklas 26     index.initPermissions();
3059 19 Dec 14 nicklas 27     index.loadCounts();
4691 13 Mar 18 nicklas 28     index.updateCounterAge();
2620 01 Sep 14 nicklas 29     
2620 01 Sep 14 nicklas 30     var frm = document.forms['reggie'];
2620 01 Sep 14 nicklas 31     frm.caseName.disabled = !App.getActiveProjectId();
2369 22 Apr 14 nicklas 32   }
2369 22 Apr 14 nicklas 33   
5374 18 Apr 19 nicklas 34   index.showWizardGroup = function(event)
5374 18 Apr 19 nicklas 35   {
5374 18 Apr 19 nicklas 36     var group = Data.get(event.currentTarget, 'wizard-group');
5374 18 Apr 19 nicklas 37     Data.set('wizard', 'wizard-group', group);
5375 18 Apr 19 nicklas 38     var url = 'Session.servlet?ID='+App.getSessionId();
5375 18 Apr 19 nicklas 39     url += '&cmd=SetLastWizardGroup';
5375 18 Apr 19 nicklas 40     url += '&group='+encodeURIComponent(group);
5375 18 Apr 19 nicklas 41     Wizard.asyncJsonRequest(url, null, 'POST');
5374 18 Apr 19 nicklas 42   }
5374 18 Apr 19 nicklas 43   
2369 22 Apr 14 nicklas 44   index.initPermissions = function()
2369 22 Apr 14 nicklas 45   {
2369 22 Apr 14 nicklas 46     // Get permission information
2369 22 Apr 14 nicklas 47     var url = 'Install.servlet?ID='+App.getSessionId();
2369 22 Apr 14 nicklas 48     url += '&cmd=GetPermissions';
2369 22 Apr 14 nicklas 49     var request = Ajax.getXmlHttpRequest();
2369 22 Apr 14 nicklas 50     request.open("GET", url, true);
2369 22 Apr 14 nicklas 51     Ajax.setReadyStateHandler(request, index.onPermissionsLoaded, index.onPermissionsLoaded);
2369 22 Apr 14 nicklas 52     request.send(null);
2369 22 Apr 14 nicklas 53   }
2369 22 Apr 14 nicklas 54   
2369 22 Apr 14 nicklas 55   // Callback when permission information is ready
2369 22 Apr 14 nicklas 56   index.onPermissionsLoaded = function(request)
2369 22 Apr 14 nicklas 57   {
2369 22 Apr 14 nicklas 58     if (debug) App.debug(Strings.encodeTags(request.responseText));
2369 22 Apr 14 nicklas 59     var response;
2369 22 Apr 14 nicklas 60     var error = false;
2369 22 Apr 14 nicklas 61     try
2369 22 Apr 14 nicklas 62     {
2369 22 Apr 14 nicklas 63       response = JSON.parse(request.responseText);
2369 22 Apr 14 nicklas 64       if (response.status != 'ok')
2369 22 Apr 14 nicklas 65       {
2369 22 Apr 14 nicklas 66         error = response.message || response.stacktrace || 'Unexpected error';
2369 22 Apr 14 nicklas 67       }
2369 22 Apr 14 nicklas 68     }
2369 22 Apr 14 nicklas 69     catch (ex)
2369 22 Apr 14 nicklas 70     {
2369 22 Apr 14 nicklas 71       error = ex;
2369 22 Apr 14 nicklas 72     }
2369 22 Apr 14 nicklas 73     
2369 22 Apr 14 nicklas 74     if (error)
2369 22 Apr 14 nicklas 75     {
2369 22 Apr 14 nicklas 76       alert(error);
2369 22 Apr 14 nicklas 77       return;
2369 22 Apr 14 nicklas 78     }
2369 22 Apr 14 nicklas 79     
2369 22 Apr 14 nicklas 80     myPermissions = response.permissions;
3743 12 Feb 16 nicklas 81     var experimentalFeatures = response.experimentalFeatures;
2369 22 Apr 14 nicklas 82     var isAdmin = myPermissions['Administrator'] == 1;
2620 01 Sep 14 nicklas 83     var noProjectIsActive = !App.getActiveProjectId();
2369 22 Apr 14 nicklas 84     
2369 22 Apr 14 nicklas 85     // Enable links based on the permission
2369 22 Apr 14 nicklas 86     var wizards = document.getElementsByClassName('require-permission');
2369 22 Apr 14 nicklas 87     // NOTE! Loop backwards since changing the classname 
2369 22 Apr 14 nicklas 88     // of an element so that 'require-permission' no longer is included
2369 22 Apr 14 nicklas 89     // removes the element from the 'wizards' list
2369 22 Apr 14 nicklas 90     for (var wizardNo = wizards.length-1; wizardNo >= 0; wizardNo--)
2369 22 Apr 14 nicklas 91     {
2369 22 Apr 14 nicklas 92       var wizard = wizards[wizardNo];
3743 12 Feb 16 nicklas 93       if (wizard.className.indexOf('experimental') >= 0)
3743 12 Feb 16 nicklas 94       {
3743 12 Feb 16 nicklas 95         if (experimentalFeatures[wizard.id] == 1) Doc.removeClass(wizard, 'not-implemented');
3743 12 Feb 16 nicklas 96       }
3743 12 Feb 16 nicklas 97       
2369 22 Apr 14 nicklas 98       if (wizard.className.indexOf('not-implemented') == -1)
2369 22 Apr 14 nicklas 99       {
2369 22 Apr 14 nicklas 100         var role = wizard.getAttribute('data-role');
2620 01 Sep 14 nicklas 101         if (noProjectIsActive)
2369 22 Apr 14 nicklas 102         {
2620 01 Sep 14 nicklas 103           wizard.title = 'You must select a project before using this wizard';
2620 01 Sep 14 nicklas 104         }
2620 01 Sep 14 nicklas 105         else if (!role || myPermissions[role] == 1 || isAdmin)
2620 01 Sep 14 nicklas 106         {
2369 22 Apr 14 nicklas 107           wizard.className = 'link';
2369 22 Apr 14 nicklas 108           wizard.addEventListener('click', index.wizardOnClick);
2369 22 Apr 14 nicklas 109         }
2369 22 Apr 14 nicklas 110         else
2369 22 Apr 14 nicklas 111         {
3163 04 Mar 15 nicklas 112           wizard.title = role + ' permission is required to use this wizard';
2369 22 Apr 14 nicklas 113         }
2369 22 Apr 14 nicklas 114       }
2369 22 Apr 14 nicklas 115     }
4624 17 Nov 17 nicklas 116     
6684 20 Apr 22 nicklas 117     if (response.configIsModified) 
6684 20 Apr 22 nicklas 118     {
6684 20 Apr 22 nicklas 119       Doc.show('reload-config-wizard');
6684 20 Apr 22 nicklas 120       Events.addEventHandler('reload-config', 'click', index.reloadConfig);
6684 20 Apr 22 nicklas 121     }
7399 07 Nov 23 nicklas 122     
7399 07 Nov 23 nicklas 123     // Show the "auto-processing is disabled" icon
7399 07 Nov 23 nicklas 124     for (var i = 0; i < response.autoProcessingDisabled.length; i++)
7399 07 Nov 23 nicklas 125     {
7399 07 Nov 23 nicklas 126       Doc.show(response.autoProcessingDisabled[i], 'inline-block');
7399 07 Nov 23 nicklas 127     }
7399 07 Nov 23 nicklas 128     
7399 07 Nov 23 nicklas 129     // Hiden hidden wizards
7399 07 Nov 23 nicklas 130     for (var i = 0; i < response.hiddenWizards.length; i++)
7399 07 Nov 23 nicklas 131     {
7399 07 Nov 23 nicklas 132       Doc.hide(response.hiddenWizards[i]);
7399 07 Nov 23 nicklas 133     }
2369 22 Apr 14 nicklas 134   }
2369 22 Apr 14 nicklas 135
2369 22 Apr 14 nicklas 136   index.wizardOnClick = function(event)
2369 22 Apr 14 nicklas 137   {
2369 22 Apr 14 nicklas 138     var role = Data.get(event.currentTarget, 'role');
2369 22 Apr 14 nicklas 139     var isAdmin = myPermissions['Administrator'] == 1;
2705 29 Sep 14 nicklas 140     if (!role || myPermissions[role] == 1 || isAdmin)
2369 22 Apr 14 nicklas 141     {
2369 22 Apr 14 nicklas 142       var link = Data.get(event.currentTarget, 'link');
6684 20 Apr 22 nicklas 143       if (link) location.href = link;
2369 22 Apr 14 nicklas 144     }
2369 22 Apr 14 nicklas 145     else
2369 22 Apr 14 nicklas 146     {
2369 22 Apr 14 nicklas 147       Forms.showNotification(event.currentTarget, 'You do not have permission to use this wizard!', null, null, 'left');
2369 22 Apr 14 nicklas 148     }
2369 22 Apr 14 nicklas 149   }
2369 22 Apr 14 nicklas 150
6684 20 Apr 22 nicklas 151   index.reloadConfig = function()
6684 20 Apr 22 nicklas 152   {
6684 20 Apr 22 nicklas 153     var url = 'Admin.servlet?ID='+App.getSessionId();
6684 20 Apr 22 nicklas 154     url += '&cmd=ReloadConfig'
6684 20 Apr 22 nicklas 155     var request = Ajax.getXmlHttpRequest();
6684 20 Apr 22 nicklas 156     request.open("GET", url, true);
6684 20 Apr 22 nicklas 157     Ajax.setReadyStateHandler(request, App.reloadWindow, App.reloadWindow);
6684 20 Apr 22 nicklas 158     request.send(null);
6684 20 Apr 22 nicklas 159   }
6684 20 Apr 22 nicklas 160
3124 09 Feb 15 nicklas 161   index.forceLoadCounts = function()
2369 22 Apr 14 nicklas 162   {
4691 13 Mar 18 nicklas 163     Doc.hide('counter-refresh');
4691 13 Mar 18 nicklas 164     Doc.show('counter-loading', 'inline');
4691 13 Mar 18 nicklas 165     counterInfo = null;
3124 09 Feb 15 nicklas 166     index.loadCounts(true);
3124 09 Feb 15 nicklas 167   }
3124 09 Feb 15 nicklas 168   
3124 09 Feb 15 nicklas 169   index.loadCounts = function(forceUpdate)
3124 09 Feb 15 nicklas 170   {
3059 19 Dec 14 nicklas 171     var url = 'Session.servlet?ID='+App.getSessionId();
5376 23 Apr 19 nicklas 172     url += '&cmd=GetCountersAndActivityLog'
3124 09 Feb 15 nicklas 173     if (forceUpdate) url += '&forceUpdate=1';
3059 19 Dec 14 nicklas 174     var request = Ajax.getXmlHttpRequest();
3059 19 Dec 14 nicklas 175     request.open("GET", url, true);
3059 19 Dec 14 nicklas 176     Ajax.setReadyStateHandler(request, index.onCounted, index.onCounted);
3059 19 Dec 14 nicklas 177     request.send(null);
2369 22 Apr 14 nicklas 178   }
2369 22 Apr 14 nicklas 179   
2369 22 Apr 14 nicklas 180   index.onCounted = function(request)
2369 22 Apr 14 nicklas 181   {
2369 22 Apr 14 nicklas 182     if (debug) 
2369 22 Apr 14 nicklas 183     {
3059 19 Dec 14 nicklas 184       App.debug(Strings.encodeTags(request.responseText));
2369 22 Apr 14 nicklas 185     }
2369 22 Apr 14 nicklas 186
2369 22 Apr 14 nicklas 187     var response;
2369 22 Apr 14 nicklas 188     var error = false;
2369 22 Apr 14 nicklas 189     try
2369 22 Apr 14 nicklas 190     {
2369 22 Apr 14 nicklas 191       response = JSON.parse(request.responseText);
2369 22 Apr 14 nicklas 192       if (response.status != 'ok')
2369 22 Apr 14 nicklas 193       {
2369 22 Apr 14 nicklas 194         error = response.message || response.stacktrace || 'Unexpected error';
2369 22 Apr 14 nicklas 195       }
2369 22 Apr 14 nicklas 196     }
2369 22 Apr 14 nicklas 197     catch (ex)
2369 22 Apr 14 nicklas 198     {
2369 22 Apr 14 nicklas 199       error = ex;
2369 22 Apr 14 nicklas 200     }
4691 13 Mar 18 nicklas 201     if (error) 
4691 13 Mar 18 nicklas 202     {
4691 13 Mar 18 nicklas 203       App.debug(error);
4691 13 Mar 18 nicklas 204       return;
4691 13 Mar 18 nicklas 205     }
2369 22 Apr 14 nicklas 206     
3124 09 Feb 15 nicklas 207     counterInfo = response;
3124 09 Feb 15 nicklas 208     counterInfo.infoTime = new Date().getTime();
4691 13 Mar 18 nicklas 209     var counts = response.counts || {};
3124 09 Feb 15 nicklas 210     
3059 19 Dec 14 nicklas 211     var counters = document.getElementsByClassName('counter');
3059 19 Dec 14 nicklas 212     for (var counterNo = 0; counterNo < counters.length; counterNo++)
2369 22 Apr 14 nicklas 213     {
3059 19 Dec 14 nicklas 214       var counter = counters[counterNo];
3059 19 Dec 14 nicklas 215       var countId = Data.get(counter, 'counter');
3059 19 Dec 14 nicklas 216
3059 19 Dec 14 nicklas 217       var count = counts[countId];
3059 19 Dec 14 nicklas 218       Doc.addClass(counter, 'done');
3059 19 Dec 14 nicklas 219       if (count == null)
3059 19 Dec 14 nicklas 220       {
3059 19 Dec 14 nicklas 221         counter.innerHTML = '-';
3059 19 Dec 14 nicklas 222       }
3059 19 Dec 14 nicklas 223       else
3059 19 Dec 14 nicklas 224       {
4047 04 Aug 16 nicklas 225         counter.innerHTML = count < 1000 ? count : Math.floor(count / 1000) + ',' + index.zeroPad(count % 1000);
3059 19 Dec 14 nicklas 226       }
2369 22 Apr 14 nicklas 227     }
3124 09 Feb 15 nicklas 228     
7138 26 Apr 23 nicklas 229     if (counts['empty-storage-boxes'] < 2 || counts['empty-paused-storage-boxes'] < 2 || counts['empty-external-storage-boxes'] < 2)
4544 28 Jun 17 nicklas 230     {
6684 20 Apr 22 nicklas 231       Doc.show('more-boxes-are-needed', 'inline');
4544 28 Jun 17 nicklas 232     }
4544 28 Jun 17 nicklas 233     
6091 01 Dec 20 nicklas 234     if (!counterInfo.isRunning)
6091 01 Dec 20 nicklas 235     {
6091 01 Dec 20 nicklas 236       Doc.element('counter-age').innerHTML = '<img src="images/warning.png"> The counter service is not running';
6091 01 Dec 20 nicklas 237       Doc.element('counter-age').title = 'Go to Administrate › Services to start the service.';
6091 01 Dec 20 nicklas 238       Doc.hide('counter-loading');
6091 01 Dec 20 nicklas 239       Doc.hide('counter-refresh');
6091 01 Dec 20 nicklas 240     }
6091 01 Dec 20 nicklas 241     else
6091 01 Dec 20 nicklas 242     {
6091 01 Dec 20 nicklas 243       index.displayCounterAge();
6091 01 Dec 20 nicklas 244     }
5376 23 Apr 19 nicklas 245     
5376 23 Apr 19 nicklas 246     var activityLog = response.activityLog;
5376 23 Apr 19 nicklas 247     if (activityLog)
5376 23 Apr 19 nicklas 248     {
5376 23 Apr 19 nicklas 249       var html = '';
5376 23 Apr 19 nicklas 250       var currentDay = '';
5376 23 Apr 19 nicklas 251       for (var activityNo = 0; activityNo < activityLog.length; activityNo++)
5376 23 Apr 19 nicklas 252       {
5376 23 Apr 19 nicklas 253         var activity = activityLog[activityNo];
5376 23 Apr 19 nicklas 254         if (activity.day != currentDay)
5376 23 Apr 19 nicklas 255         {
5376 23 Apr 19 nicklas 256           html += '<div class="activity-day">'+Strings.encodeTags(activity.day)+'</div>';
5376 23 Apr 19 nicklas 257           currentDay = activity.day;
5376 23 Apr 19 nicklas 258         }
5388 26 Apr 19 nicklas 259         html += '<div class="activity '+(activity.subclass||'')+'">';
5376 23 Apr 19 nicklas 260         html += '<span class="activity-time">'+Strings.encodeTags(activity.time)+'</span>';
5376 23 Apr 19 nicklas 261         html += '<span class="activity-message">' + Strings.encodeTags(activity.message) + '</span>';
5761 28 Nov 19 nicklas 262         if (activity.quoteOfTheDay && activityNo == 0)
5761 28 Nov 19 nicklas 263         {
5761 28 Nov 19 nicklas 264           html += '<span class="activity-author">' + Strings.encodeTags(activity.author) + '</span>';
5761 28 Nov 19 nicklas 265           html += '<div class="activity-link">';
5761 28 Nov 19 nicklas 266           html += '<a href="https://theysaidso.com" title="Powered by quotes from The Said So" target="_blank" rel="noopener noreferrer">theysaidso.com</a>';
5761 28 Nov 19 nicklas 267           html += '</div>';
5761 28 Nov 19 nicklas 268         }
5376 23 Apr 19 nicklas 269         html += '</div>';
5761 28 Nov 19 nicklas 270         if (activity.quoteOfTheDay && activityNo == 0)
5761 28 Nov 19 nicklas 271         {
5761 28 Nov 19 nicklas 272           Doc.element('quote-of-the-day').innerHTML = html;
5761 28 Nov 19 nicklas 273           html = '';
5761 28 Nov 19 nicklas 274         }
5376 23 Apr 19 nicklas 275       }
5404 08 May 19 nicklas 276       Doc.element('activity-log-entries').innerHTML = html;
5376 23 Apr 19 nicklas 277     }
2369 22 Apr 14 nicklas 278   }
2369 22 Apr 14 nicklas 279   
4047 04 Aug 16 nicklas 280   // Pad a numeric value with leading zeros so that a string with at least 3 digits is created
4047 04 Aug 16 nicklas 281   index.zeroPad = function(val)
4047 04 Aug 16 nicklas 282   {
4047 04 Aug 16 nicklas 283     if (val < 10) return '00'+val;
4047 04 Aug 16 nicklas 284     if (val < 100) return '0'+val;
4047 04 Aug 16 nicklas 285     return val;
4047 04 Aug 16 nicklas 286   }
4047 04 Aug 16 nicklas 287   
4691 13 Mar 18 nicklas 288   index.displayCounterAge = function()
3124 09 Feb 15 nicklas 289   {
6091 01 Dec 20 nicklas 290     if (counterInfo == null || !counterInfo.countTime) return;
4691 13 Mar 18 nicklas 291     
4691 13 Mar 18 nicklas 292     // We have count information
4691 13 Mar 18 nicklas 293     var formattedDate = Reggie.reformatDate(counterInfo.countTime);
4691 13 Mar 18 nicklas 294
4691 13 Mar 18 nicklas 295     // Generate a message
4691 13 Mar 18 nicklas 296     var counterAge = '';
3124 09 Feb 15 nicklas 297     var time = new Date().getTime();
4691 13 Mar 18 nicklas 298     counterInfo.infoAgeInSeconds = Math.floor((time - counterInfo.infoTime) / 1000);
4691 13 Mar 18 nicklas 299     counterInfo.ageInSeconds = counterInfo.countAge + counterInfo.infoAgeInSeconds;
4691 13 Mar 18 nicklas 300     counterInfo.ageInMinutes = Math.floor(counterInfo.ageInSeconds / 60);
3124 09 Feb 15 nicklas 301     
4691 13 Mar 18 nicklas 302     if (counterInfo.ageInSeconds < 60)
3124 09 Feb 15 nicklas 303     {
3124 09 Feb 15 nicklas 304       // Counters are less than 1 minute old, display age in seconds
4691 13 Mar 18 nicklas 305       counterAge += counterInfo.ageInSeconds == 1 ? '1 second ago' : counterInfo.ageInSeconds + ' seconds ago';
3124 09 Feb 15 nicklas 306     }
4691 13 Mar 18 nicklas 307     else if (counterInfo.ageInMinutes < 60)
3124 09 Feb 15 nicklas 308     {
4691 13 Mar 18 nicklas 309       // Counters are less than 1 hour old, display age in minutes
4691 13 Mar 18 nicklas 310       counterAge += counterInfo.ageInMinutes == 1 ? '1 minute ago' : counterInfo.ageInMinutes + ' minutes ago';
4691 13 Mar 18 nicklas 311     }
4691 13 Mar 18 nicklas 312     else
4691 13 Mar 18 nicklas 313     {
4691 13 Mar 18 nicklas 314       // Display age as date and time
4691 13 Mar 18 nicklas 315       counterAge += formattedDate;
4691 13 Mar 18 nicklas 316     }
4691 13 Mar 18 nicklas 317     Doc.element('counter-age').innerHTML = counterAge;
4691 13 Mar 18 nicklas 318     Doc.element('counter-age').title = formattedDate;
4691 13 Mar 18 nicklas 319     
4691 13 Mar 18 nicklas 320     // Show or hide icons
4691 13 Mar 18 nicklas 321     Doc.hide('counter-loading');
4691 13 Mar 18 nicklas 322     Doc.hide('counter-refresh');
4691 13 Mar 18 nicklas 323     if (counterInfo.isCounting) 
4691 13 Mar 18 nicklas 324     {
4691 13 Mar 18 nicklas 325       Doc.show('counter-loading', 'inline');
4691 13 Mar 18 nicklas 326     }
4691 13 Mar 18 nicklas 327     else if (counterInfo.ageInMinutes >= 5)
4691 13 Mar 18 nicklas 328     {
4691 13 Mar 18 nicklas 329       Doc.show('counter-refresh', 'inline');
4691 13 Mar 18 nicklas 330     }
4691 13 Mar 18 nicklas 331   }
4691 13 Mar 18 nicklas 332   
4691 13 Mar 18 nicklas 333   index.updateCounterAge = function()
4691 13 Mar 18 nicklas 334   {
4691 13 Mar 18 nicklas 335     var nextUpdate = 15; // 15 seconds until next update
4691 13 Mar 18 nicklas 336     var reloadCounts = false; // By default, no reload of counts
4691 13 Mar 18 nicklas 337     
4691 13 Mar 18 nicklas 338     if (counterInfo == null)
4691 13 Mar 18 nicklas 339     {
4691 13 Mar 18 nicklas 340       // We have no info yet, try again in 1 second...
4691 13 Mar 18 nicklas 341       nextUpdate = 1;
4691 13 Mar 18 nicklas 342     }
4691 13 Mar 18 nicklas 343     else
4691 13 Mar 18 nicklas 344     {
4691 13 Mar 18 nicklas 345       if (counterInfo.countTime)
3124 09 Feb 15 nicklas 346       {
4691 13 Mar 18 nicklas 347         index.displayCounterAge();
4691 13 Mar 18 nicklas 348         if (counterInfo.ageInSeconds < 60)
4691 13 Mar 18 nicklas 349         {
4691 13 Mar 18 nicklas 350           // Next update should be on even 5 second intervals
4691 13 Mar 18 nicklas 351           nextUpdate = 5 - counterInfo.ageInSeconds % 5;
4691 13 Mar 18 nicklas 352         }
4691 13 Mar 18 nicklas 353         if (counterInfo.infoAgeInSeconds > 300)
4691 13 Mar 18 nicklas 354         {
4691 13 Mar 18 nicklas 355           // If our information is more than 5 minutes old, request an update from the server
4691 13 Mar 18 nicklas 356           reloadCounts = true;
4691 13 Mar 18 nicklas 357         }
3124 09 Feb 15 nicklas 358       }
3124 09 Feb 15 nicklas 359       
4691 13 Mar 18 nicklas 360       // If a count is in progress request an update from the server
4691 13 Mar 18 nicklas 361       if (counterInfo.isCounting)
3124 09 Feb 15 nicklas 362       {
4691 13 Mar 18 nicklas 363         reloadCounts = true;
4691 13 Mar 18 nicklas 364         nextUpdate = 2;
3124 09 Feb 15 nicklas 365       }
6091 01 Dec 20 nicklas 366       
6091 01 Dec 20 nicklas 367       // If the service is not running, we need an update from the server
6091 01 Dec 20 nicklas 368       if (!counterInfo.isRunning)
6091 01 Dec 20 nicklas 369       {
6091 01 Dec 20 nicklas 370         reloadCounts = true;
6091 01 Dec 20 nicklas 371       }
3124 09 Feb 15 nicklas 372     }
4691 13 Mar 18 nicklas 373       
4691 13 Mar 18 nicklas 374     if (reloadCounts) index.loadCounts();
4691 13 Mar 18 nicklas 375     setTimeout(index.updateCounterAge, nextUpdate * 1000);
3124 09 Feb 15 nicklas 376   }
3124 09 Feb 15 nicklas 377   
2369 22 Apr 14 nicklas 378   index.caseSummary = function()
2369 22 Apr 14 nicklas 379   {
2369 22 Apr 14 nicklas 380     var frm = document.forms['reggie'];
2369 22 Apr 14 nicklas 381     
2369 22 Apr 14 nicklas 382     var caseName = frm.caseName.value;
2369 22 Apr 14 nicklas 383     if (!caseName)
2369 22 Apr 14 nicklas 384     {
2369 22 Apr 14 nicklas 385       Forms.showNotification('caseName', 'Please enter a 7-digit case id', null, null, 'left');
2369 22 Apr 14 nicklas 386       return;
2369 22 Apr 14 nicklas 387     }
2369 22 Apr 14 nicklas 388     var url = 'reports/case_summary.jsp?ID='+App.getSessionId();
2369 22 Apr 14 nicklas 389     url += '&caseName='+encodeURIComponent(caseName);
5019 10 Oct 18 nicklas 390     url += '&highlight='+encodeURIComponent(caseName);
2369 22 Apr 14 nicklas 391     location.href = url;
2369 22 Apr 14 nicklas 392   }
2801 13 Oct 14 nicklas 393   
2801 13 Oct 14 nicklas 394   index.testSnake = function(event)
2801 13 Oct 14 nicklas 395   {
2801 13 Oct 14 nicklas 396     if (event.currentTarget.value == 'Snak' && event.charCode == 101)
2801 13 Oct 14 nicklas 397     {
2801 13 Oct 14 nicklas 398       setTimeout(index.showSnake, 500);
2801 13 Oct 14 nicklas 399     }
2801 13 Oct 14 nicklas 400   }
2369 22 Apr 14 nicklas 401
2801 13 Oct 14 nicklas 402   index.showSnake = function()
2801 13 Oct 14 nicklas 403   {
2844 21 Oct 14 nicklas 404     var msg = '<img src="images/snake-icon-64.png" style="float: right;">'
2844 21 Oct 14 nicklas 405     msg += '– There\'s a big snake in the plane, Jock!<br>';
2801 13 Oct 14 nicklas 406     msg += '– Oh, that\'s just my pet snake, Reggie!<br>';
2801 13 Oct 14 nicklas 407     msg += '– I hate snakes, Jock! I hate \'em!<br>';
2801 13 Oct 14 nicklas 408     msg += '– Come on! Show a little backbone, will ya?<br>';
2801 13 Oct 14 nicklas 409     msg += '<div class="snake-quote-source">Indiana Jones - Raiders of the Lost Ark</div>';
2846 21 Oct 14 nicklas 410     Forms.showNotification('caseName', msg, 'snake-quote', 'pointer-above');
5740 20 Nov 19 nicklas 411     var url = 'Session.servlet?ID='+App.getSessionId();
5740 20 Nov 19 nicklas 412     url += '&cmd=ReggieTheSnakeWasSummoned';
5740 20 Nov 19 nicklas 413     Wizard.asyncJsonRequest(url);
2801 13 Oct 14 nicklas 414   }
2369 22 Apr 14 nicklas 415   
2369 22 Apr 14 nicklas 416   return index;
2369 22 Apr 14 nicklas 417 }();
2369 22 Apr 14 nicklas 418
2369 22 Apr 14 nicklas 419 Doc.onLoad(Index.initPage);
2369 22 Apr 14 nicklas 420