1
0

advanceStatsOprs.html 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <!-- Notes: This should be open in its original path-->
  5. <link rel="stylesheet" href="../script/semantic/semantic.min.css">
  6. <script src="../script/jquery-3.6.0.min.js"></script>
  7. <script src="../script/semantic/semantic.min.js"></script>
  8. </head>
  9. <body>
  10. <br>
  11. <div class="ui container">
  12. <div class="ui header">
  13. <div class="content">
  14. Advance Statistics Operations
  15. <div class="sub header">Selected Range: <span id="daterange"></span></div>
  16. </div>
  17. </div>
  18. <div class="ui divider"></div>
  19. <button class="ui basic button iframeOnly" style="float: right;" onclick="parent.hideSideWrapper();"><i class="remove icon"></i> Cancel</button>
  20. </div>
  21. <script>
  22. let startDate = "";
  23. let endDate = "";
  24. function loadDateRange(){
  25. if (window.location.hash.length > 1){
  26. try{
  27. var dateRange = JSON.parse(decodeURIComponent(window.location.hash.substr(1)));
  28. startDate = dateRange[0].trim();
  29. endDate = dateRange[1].trim();
  30. //Check if they are valid dates
  31. if (!isValidDateFormat(startDate)){
  32. alert("Start date is not a valid date: " + startDate);
  33. return
  34. }
  35. if (!isValidDateFormat(endDate)){
  36. alert("End date is not a valid date: " + endDate);
  37. return
  38. }
  39. //Sort the two dates if they are placed in invalid orders
  40. var [s, e] = sortDates(startDate, endDate);
  41. startDate = s;
  42. endDate = e;
  43. $("#daterange").html(startDate + ` <i class="arrow right icon" style="margin-right: 0;"></i> ` + endDate);
  44. }catch(ex){
  45. alert("Invalid usage: Invalid date range given");
  46. }
  47. }
  48. }
  49. loadDateRange();
  50. function isValidDateFormat(dateString) {
  51. // Create a regular expression pattern for the yyyy-mm-dd format
  52. const pattern = /^\d{4}-\d{2}-\d{2}$/;
  53. // Check if the input string matches the pattern
  54. if (!pattern.test(dateString)) {
  55. return false; // Invalid format
  56. }
  57. // Parse the date components
  58. const year = parseInt(dateString.substring(0, 4), 10);
  59. const month = parseInt(dateString.substring(5, 7), 10);
  60. const day = parseInt(dateString.substring(8, 10), 10);
  61. // Check if the parsed components represent a valid date
  62. const date = new Date(year, month - 1, day);
  63. if (
  64. date.getFullYear() !== year ||
  65. date.getMonth() + 1 !== month ||
  66. date.getDate() !== day
  67. ) {
  68. return false; // Invalid date
  69. }
  70. return true; // Valid date in yyyy-mm-dd format
  71. }
  72. function sortDates(date1, date2) {
  73. // Parse the date strings
  74. const parsedDate1 = new Date(date1);
  75. const parsedDate2 = new Date(date2);
  76. // Compare the parsed dates
  77. if (parsedDate1 > parsedDate2) {
  78. // Swap the dates
  79. const temp = date1;
  80. date1 = date2;
  81. date2 = temp;
  82. }
  83. // Return the swapped dates
  84. return [date1, date2];
  85. }
  86. </script>
  87. </body>
  88. </html>