Init
This commit is contained in:
commit
776d331412
0
webfiles/Reports/.placeholder.txt
Normal file
0
webfiles/Reports/.placeholder.txt
Normal file
40
webfiles/css/colours.css
Normal file
40
webfiles/css/colours.css
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/* -------------------------------------------------------------------
|
||||||
|
* Colours for the CumulusMX Alternative Interface
|
||||||
|
* Produced using w3Schools colour generator
|
||||||
|
*
|
||||||
|
* Key Colour: #4e5b31
|
||||||
|
*
|
||||||
|
* Theme modified to change font 'color's to either lightest or darkest
|
||||||
|
* theme colour. Also modified names for text, borders & hover colours.
|
||||||
|
* I have added a few extras. Not all are used.
|
||||||
|
* Neil Thomas
|
||||||
|
------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Check that your theme is named as shown below */
|
||||||
|
|
||||||
|
.w3-theme-white {color:#2e5473; background-color:#FFFFFF;}
|
||||||
|
.w3-theme-l5 {color:#2e5473; background-color:#f7fafc;}
|
||||||
|
.w3-theme-l4 {color:#2e5473; background-color:#e4edf4;}
|
||||||
|
.w3-theme-l3 {color:#2e5473 ; background-color:#c9dbe9;}
|
||||||
|
.w3-theme-l2 {color:#2e5473 ; background-color:#aec9df;}
|
||||||
|
.w3-theme-l1 {color:#2e5473 ; background-color:#93b7d4;}
|
||||||
|
.w3-theme-d1 {color:#f7fafc ; background-color:#6195c0;}
|
||||||
|
.w3-theme-d2 {color:#f7fafc ; background-color:#4a86b7;}
|
||||||
|
.w3-theme-d3 {color:#f7fafc ; background-color:#4075a1;}
|
||||||
|
.w3-theme-d4 {color:#f7fafc ; background-color:#37658a;}
|
||||||
|
.w3-theme-d5 {color:#f7fafc ; background-color:#2e5473;}
|
||||||
|
|
||||||
|
.w3-theme-light {color:#2e5473 ; background-color:#f7fafc;}
|
||||||
|
.w3-theme-dark {color:#f7fafc ; background-color:#2e5473;}
|
||||||
|
.w3-theme-action {color:#f7fafc ; background-color:#2e5473;}
|
||||||
|
|
||||||
|
.w3-theme {color:#f7fafc ; background-color:#78a5c9;}
|
||||||
|
.w3-theme-txt {color:#78a5c9;}
|
||||||
|
.w3-theme-bdr {border-color:#78a5c9;}
|
||||||
|
.w3-theme-d5-bdr {border-color:#2e5473;}
|
||||||
|
.w3-theme-l1-bdr {border-color:#f7fafc;}
|
||||||
|
|
||||||
|
.w3-theme-hvr:hover {color:#f7fafc; background-color:#78a5c9;}
|
||||||
|
.w3-theme-d5-hvr:hover {color:#f7fafc; background-color:#2e5473;}
|
||||||
|
.w3-theme-txt-hvr:hover {color:#78a5c9;}
|
||||||
|
.w3-theme-bdr-hvr:hover {border-color:#78a5c9;}
|
101
webfiles/css/gauges.css
Normal file
101
webfiles/css/gauges.css
Normal file
File diff suppressed because one or more lines are too long
215
webfiles/css/mx-templates.css
Normal file
215
webfiles/css/mx-templates.css
Normal file
|
@ -0,0 +1,215 @@
|
||||||
|
/* -----------------------------------
|
||||||
|
* Styles for CumulusMX Templates
|
||||||
|
Last modified: 2021/03/19 09:23:15
|
||||||
|
* ----------------------------------*/
|
||||||
|
|
||||||
|
html, body, p, h1, h2, h3, h4, h5, h6, li, td, th {
|
||||||
|
font-family: 'Rosario', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Header {
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 0 0 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-width {
|
||||||
|
max-width:1140px;
|
||||||
|
margin:auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.graph-width {
|
||||||
|
max-width:1250px;
|
||||||
|
margin:auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Footer {
|
||||||
|
border-width:5px 0 0 0;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
max-width:250px;
|
||||||
|
margin: 5px 0 5px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subText {
|
||||||
|
font-size: 80% !important;
|
||||||
|
font-weight:400;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-image: url('../images/picture.jpg');
|
||||||
|
background-position: bottom left;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.statusPanel h5 {
|
||||||
|
margin-bottom: -5px;
|
||||||
|
}
|
||||||
|
/* -------------------------------------
|
||||||
|
* Flex boxes
|
||||||
|
* -------------------------------------*/
|
||||||
|
.at-flex-start { display:flex;}
|
||||||
|
.at-flex-end {
|
||||||
|
display:flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
flex-wrap:wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-flex-justify {
|
||||||
|
display:flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
flex-wrap:wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-flex-between {
|
||||||
|
display:flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap:wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-flex-bottom,
|
||||||
|
.at-flex-items-bottom {
|
||||||
|
align-items: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-flex-items-center {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------
|
||||||
|
* Menu enhancements
|
||||||
|
* --------------------------------------------------*/
|
||||||
|
#Main_Menu {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
border-width:2px 0 0 0 ;
|
||||||
|
border-style: solid;
|
||||||
|
min-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-slim {
|
||||||
|
padding: 4px 14px!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-divider {
|
||||||
|
margin: 0 5px;
|
||||||
|
color:#F80;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-spacer {
|
||||||
|
min-height:2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-menu-lable {
|
||||||
|
display:block;
|
||||||
|
width:100%;
|
||||||
|
font-size: 13px;
|
||||||
|
font-style: italic;
|
||||||
|
padding-bottom: 2px!important;
|
||||||
|
padding-top:4px!important;
|
||||||
|
border-bottom: 1px dotted #c2cfa5!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-menu-bar {
|
||||||
|
display:block;
|
||||||
|
height: 2px;
|
||||||
|
padding: 0 2px!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-indent {
|
||||||
|
padding-left: 40px!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------
|
||||||
|
* Model enhancements
|
||||||
|
* ------------------------------*/
|
||||||
|
|
||||||
|
.w3-modal-content {
|
||||||
|
margin-top:10%;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w3-modal header { border-radius: 8px 8px 0 0;}
|
||||||
|
.w3-modal footer { border-radius: 0 0 8px 8px;}
|
||||||
|
.w3-modal .w3-btn { border-radius: 0 8px;}
|
||||||
|
|
||||||
|
/* ----------------------------------------
|
||||||
|
* Media enhancements
|
||||||
|
* ---------------------------------------*/
|
||||||
|
@media screen and (max-width:780px) {
|
||||||
|
#Footer { position: unset; }
|
||||||
|
#Content {
|
||||||
|
/*margin-top: 170px!important;*/
|
||||||
|
margin-bottom: 5px!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.statusPanel {
|
||||||
|
text-align:center!important;
|
||||||
|
margin:auto!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-height:768px) {
|
||||||
|
#Footer { position: unset; item: center;}
|
||||||
|
#Content {
|
||||||
|
margin-bottom: 5px!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------
|
||||||
|
* LED enhancements
|
||||||
|
* -------------------------------------*/
|
||||||
|
.at-led-round {
|
||||||
|
display:inline-block;
|
||||||
|
height: 1.2em;
|
||||||
|
width: 1.2em;
|
||||||
|
margin: 0 0.5em -3px 0.5em;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: #888;
|
||||||
|
box-shadow: inset 3px 3px 2px rgba(220, 220, 220, 0.6), inset -2px -2px 2px rgba(32, 32, 32,0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-led-block {
|
||||||
|
display:inline-block;
|
||||||
|
height: 1.2em;
|
||||||
|
width: 1.2em;
|
||||||
|
margin: 0 0.5em -3px 0.5em;
|
||||||
|
background-color: #888;
|
||||||
|
box-shadow: inset 3px 3px 2px rgba(220, 220, 220, 0.6), inset -2px -2px 2px rgba(32, 32, 32,0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-led-brick {
|
||||||
|
display:inline-block;
|
||||||
|
height:0.8em;
|
||||||
|
width:1.6em;
|
||||||
|
margin:0 0.5em -3px 0.5em;
|
||||||
|
background-color: #888;
|
||||||
|
box-shadow: inset 3px 3px 2px rgba(220, 220, 220, 0.6), inset -2px -2px 2px rgba(32, 32, 32,0.6);
|
||||||
|
}
|
||||||
|
.at-led-oval {
|
||||||
|
display:inline-block;
|
||||||
|
height:1em;
|
||||||
|
width:2em;
|
||||||
|
margin:0 0.5em -3px 0.5em;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: #888;
|
||||||
|
box-shadow: inset 3px 3px 2px rgba(220, 220, 220, 0.6), inset -2px -2px 2px rgba(32, 32, 32,0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-led-green {
|
||||||
|
background-color: #0b0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.at-led-flash-red {
|
||||||
|
animation: flashR 1s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes flashR {
|
||||||
|
0%, 60% {background-color: #f00;}
|
||||||
|
61%,100% {background-color: #800;}
|
||||||
|
}
|
151
webfiles/css/w3Pro.css
Normal file
151
webfiles/css/w3Pro.css
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
/* W3PRO.CSS 4.15 December 2020 by Jan Egil and Borge Refsnes */
|
||||||
|
html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
|
||||||
|
/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
|
||||||
|
html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
|
||||||
|
article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
|
||||||
|
audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
|
||||||
|
audio:not([controls]){display:none;height:0}[hidden],template{display:none}
|
||||||
|
a{background-color:transparent}a:active,a:hover{outline-width:0}
|
||||||
|
abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
|
||||||
|
b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
|
||||||
|
small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
|
||||||
|
sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
|
||||||
|
code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
|
||||||
|
button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
|
||||||
|
button,input{overflow:visible}button,select{text-transform:none}
|
||||||
|
button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
|
||||||
|
button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
|
||||||
|
button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
|
||||||
|
fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
|
||||||
|
legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
|
||||||
|
[type=checkbox],[type=radio]{padding:0}
|
||||||
|
[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
|
||||||
|
[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
|
||||||
|
[type=search]::-webkit-search-decoration{-webkit-appearance:none}
|
||||||
|
::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
|
||||||
|
/* End extract */
|
||||||
|
html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
|
||||||
|
h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}
|
||||||
|
.w3-serif{font-family:serif}.w3-sans-serif{font-family:sans-serif}.w3-cursive{font-family:cursive}.w3-monospace{font-family:monospace}
|
||||||
|
h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px}
|
||||||
|
hr{border:0;border-top:1px solid #eee;margin:20px 0}
|
||||||
|
.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
|
||||||
|
.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
|
||||||
|
.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
|
||||||
|
.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
|
||||||
|
.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
|
||||||
|
.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
|
||||||
|
.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
|
||||||
|
.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
|
||||||
|
.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
|
||||||
|
.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
||||||
|
.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
|
||||||
|
.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
|
||||||
|
.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
|
||||||
|
.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
|
||||||
|
.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
|
||||||
|
.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
|
||||||
|
.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%}
|
||||||
|
.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc}
|
||||||
|
.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
|
||||||
|
.w3-dropdown-hover:hover .w3-dropdown-content{display:block}
|
||||||
|
.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
|
||||||
|
.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
|
||||||
|
.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
|
||||||
|
/*.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}*/
|
||||||
|
.w3-check,.w3-radio{width:24px;position:relative;}
|
||||||
|
.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
|
||||||
|
.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
|
||||||
|
.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
|
||||||
|
.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
|
||||||
|
.w3-main,#main{transition:margin-left .4s}
|
||||||
|
.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
|
||||||
|
.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
|
||||||
|
.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
|
||||||
|
.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
|
||||||
|
.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
|
||||||
|
.w3-bar .w3-button{white-space:normal}
|
||||||
|
.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
|
||||||
|
.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
|
||||||
|
.w3-responsive{display:block;overflow-x:auto}
|
||||||
|
.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
|
||||||
|
.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
|
||||||
|
.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
|
||||||
|
.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
|
||||||
|
.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
|
||||||
|
.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
|
||||||
|
@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
|
||||||
|
.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
|
||||||
|
.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
|
||||||
|
@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
|
||||||
|
.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
|
||||||
|
.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
|
||||||
|
.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px}
|
||||||
|
.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px}
|
||||||
|
.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
|
||||||
|
.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
|
||||||
|
.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
|
||||||
|
@media (max-width:1205px){.w3-auto{max-width:95%}}
|
||||||
|
@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
|
||||||
|
.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}
|
||||||
|
.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
|
||||||
|
.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
|
||||||
|
@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
|
||||||
|
@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
|
||||||
|
@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
|
||||||
|
@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}}
|
||||||
|
.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
|
||||||
|
.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
|
||||||
|
.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
|
||||||
|
.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
|
||||||
|
.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
|
||||||
|
.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
|
||||||
|
.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
|
||||||
|
.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
|
||||||
|
.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
|
||||||
|
.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
|
||||||
|
.w3-display-position{position:absolute}
|
||||||
|
.w3-circle{border-radius:50%}
|
||||||
|
.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
|
||||||
|
.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
|
||||||
|
.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
|
||||||
|
.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
|
||||||
|
.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
|
||||||
|
.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
|
||||||
|
.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}
|
||||||
|
.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
|
||||||
|
.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
|
||||||
|
.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
|
||||||
|
.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
|
||||||
|
.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
|
||||||
|
.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
|
||||||
|
.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
|
||||||
|
.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
|
||||||
|
.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
|
||||||
|
.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
|
||||||
|
.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
|
||||||
|
.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
|
||||||
|
.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
|
||||||
|
.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
|
||||||
|
.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
|
||||||
|
.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
|
||||||
|
.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
|
||||||
|
.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
|
||||||
|
.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
|
||||||
|
.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
|
||||||
|
.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
|
||||||
|
.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
|
||||||
|
.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
|
||||||
|
.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
|
||||||
|
.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
|
||||||
|
.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
|
||||||
|
.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
|
||||||
|
.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
|
||||||
|
.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
|
||||||
|
.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
|
||||||
|
.w3-padding-top-64{padding-top:64px!important}.w3-padding-top-48{padding-top:48px!important}
|
||||||
|
.w3-padding-top-32{padding-top:32px!important}.w3-padding-top-24{padding-top:24px!important}
|
||||||
|
.w3-left{float:left!important}.w3-right{float:right!important}
|
||||||
|
.w3-button:hover{color:#000!important;background-color:#ccc!important}
|
||||||
|
.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
|
||||||
|
.w3-hover-none:hover{box-shadow:none!important}
|
257
webfiles/gauges.htm
Normal file
257
webfiles/gauges.htm
Normal file
|
@ -0,0 +1,257 @@
|
||||||
|
<!--
|
||||||
|
gauges.htm v:0.0.2 a:Neil Thomas
|
||||||
|
Last modified: 2022/07/18 15:17:24
|
||||||
|
CMX Template page: Gauges, No sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
<link href="css/gauges.css" rel="stylesheet"> <!-- Stylesheet specifically for the gauges -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Page Header -->
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between at-flex-items-center">
|
||||||
|
<img src="images/CumulusMX-Logo.png" alt="Cumulus Logo" class="w3-image logo">
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Main Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr" style="min-height:32px;">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile Mneu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide-large w3-hide">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of page content -->
|
||||||
|
<div id="Content" class="site-width w3-theme-light">
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col s12">
|
||||||
|
<div class="w3-container">
|
||||||
|
<div class="at-flex-between at-flex-items-center">
|
||||||
|
<h1>Gauges <span class="subText"></span></h1>
|
||||||
|
<div class="container" style="max-width: 450px;">
|
||||||
|
<div style="width:200px;height:25px;display:inline-block;"><canvas id="canvas_status" width="200" height="25"></canvas></div>
|
||||||
|
<div style="width:60px; display:inline-block"><canvas id="canvas_timer" width="60" height="25"></canvas></div>
|
||||||
|
<div style="display:inline-block;margin-bottom:3px;">Status: <canvas id="canvas_led" style="width:25px;height:25px;margin-bottom:-7px;" width="25" height="25"></canvas></div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-bar" style="max-width:200px;">
|
||||||
|
<button class="w3-bar-item w3-btn w3-theme-hvr w3-right at-slim" onClick="showModal('MXmodal');">Units</button>
|
||||||
|
<div class="w3-dropdown-hover w3-right">
|
||||||
|
<button class="w3-btn w3-theme-hvr at-slim">Gauge Options</button>
|
||||||
|
<div id="Options" class="w3-dropdown-content w3-bar-block w3-theme-l1">
|
||||||
|
<div class="w3-bar-item at-slim at-menu-label w3-small w3-theme-l3 w3-center">Temperature</div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_temp1" type="radio" class="w3-radio" name="rad_temp" value="out" checked onclick="gauges.doTemp(this);"><label id="lab_temp1" for="rad_temp1">Outside</label></div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_temp2" type="radio" class="w3-radio" name="rad_temp" value="in" onclick="gauges.doTemp(this);"><label id="lab_temp2" for="rad_temp2">Inside</label></div>
|
||||||
|
<div class="w3-bar-item at-slim at-menu-label w3-small w3-theme-l3 w3-center">Other Temps</div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_dew1" type="radio" name="rad_dew" class="w3-radio" value="dew" checked onclick="gauges.doDew(this);"><label id="lab_dew1" for="rad_dew1">Dew Point</label></div>
|
||||||
|
<div class="w3-bar-item at-slim w3-hide" data-cmx-apparent><input id="rad_dew2" type="radio" name="rad_dew" class="w3-radio" value="app" onclick="gauges.doDew(this);"><label id="lab_dew2" for="rad_dew2">Apparent</label></div>
|
||||||
|
<div class="w3-bar-item at-slim" data-cmx-feels><input id="rad_dew6" type="radio" name="rad_dew" class="w3-radio" value="feel" onclick="gauges.doDew(this);"><label id="lab_dew6" for="rad_dew6">Feels Like</label></div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_dew3" type="radio" name="rad_dew" class="w3-radio" value="wnd" onclick="gauges.doDew(this);"><label id="lab_dew3" for="rad_dew3">Wind Chill</label></div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_dew4" type="radio" name="rad_dew" class="w3-radio" value="hea" onclick="gauges.doDew(this);"><label id="lab_dew4" for="rad_dew4">Heat Index</label></div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_dew5" type="radio" name="rad_dew" class="w3-radio" value="hum" onclick="gauges.doDew(this);"><label id="lab_dew5" for="rad_dew5">Humidex</label></div>
|
||||||
|
<div class="w3-bar-item at-slim at-menu-label w3-small w3-theme-l3 w3-center">Humidity</div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_hum1" type="radio" name="rad_hum" class="w3-radio" value="out" checked onclick="gauges.doHum(this);"><label id="lab_hum1" for="rad_hum1">Outside</label></div>
|
||||||
|
<div class="w3-bar-item at-slim"><input id="rad_hum2" type="radio" name="rad_hum" class="w3-radio" value="in" onclick="gauges.doHum(this);"><label id="lab_hum2" for="rad_hum2">Inside</label></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Row Two - All Gauges -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col s12">
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<!-- The following html can be copied into ANY single panel page - template -->
|
||||||
|
<div style="display:flex; flex-flow: row wrap; justify-content:space-evenly">
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Temperature</h5>
|
||||||
|
<div class="gauge w3-center">
|
||||||
|
<div id="tip_0">
|
||||||
|
<canvas id="canvas_temp" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Other Temps</h5>
|
||||||
|
<div class="gauge w3-center">
|
||||||
|
<div id="tip_1">
|
||||||
|
<canvas id="canvas_dew" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Humidity</h5>
|
||||||
|
<div class="gauge w3-center">
|
||||||
|
<div id="tip_4">
|
||||||
|
<canvas id="canvas_hum" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Wind</h5>
|
||||||
|
<div id="tip_6" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_wind" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Wind Direction</h5>
|
||||||
|
<div id="tip_7" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_dir" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Wind Rose</h5>
|
||||||
|
<div id="tip_10" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_rose" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Pressure</h5>
|
||||||
|
<div id="tip_5" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_baro" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Rainfall</h5>
|
||||||
|
<div id="tip_2" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_rain" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5 class="">Rainfall Rate</h5>
|
||||||
|
<div id="tip_3" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_rrate" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-cmx-uv-gauge class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5>UV Radiation</h5>
|
||||||
|
<div id="tip_8" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_uv" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-cmx-solar-gauge class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5>Solar</h5>
|
||||||
|
<div id="tip_9" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_solar" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel w3-theme-l5 at-gaugeSmall" style="order:0;">
|
||||||
|
<!-- dial -->
|
||||||
|
<h5>Cloudbase</h5>
|
||||||
|
<div id="tip_11" class="gauge w3-center">
|
||||||
|
<canvas id="canvas_cloud" class="gaugeSmall"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- End of Gauges HTML -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of footer -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between at-flex-bottom" style="flex-wrap:nowrap;">
|
||||||
|
<p class="w3-small"><em>Cumulus MX Templates by Neil Thomas <script>document.write(new Date().getFullYear());</script></em></p>
|
||||||
|
<p class="w3-small w3-center" style="max-width:500px;">
|
||||||
|
<em>scripts by mark crossley - version <span id="scriptVer"></span> gauges drawn using gerrit grunwald's steelseries javascript library, wind rose drawn using rgraph</em>
|
||||||
|
</p>
|
||||||
|
<p class="w3-right">Powered by <span class="w3-theme-txt">CumulusMX</span> v:<span data-cmxdata="version">---</span>, b:<span data-cmxdata="build">---</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Modal -->
|
||||||
|
<div id="MXmodal" class="w3-modal w3-hide at-theme-modal">
|
||||||
|
<div class="w3-modal-content w3-round-large" style="margin-top:10%; max-width:500px;">
|
||||||
|
<header class="w3-container w3-theme-dark" style="border-radius:8px 8px 0 0;">
|
||||||
|
<span onclick="showModal('MXmodal')" class="w3-btn w3-theme-hvr w3-display-topright" style="border-radius: 0 8px 0 8px;">×</span>
|
||||||
|
<h3>Gauge Units</h3>
|
||||||
|
</header>
|
||||||
|
<div class="w3-row-padding w3-theme-white">
|
||||||
|
<div class="w3-panel">
|
||||||
|
<div class="w3-col l3 m3 s5"><span class="lang_temparature">Temperature</span>:</div>
|
||||||
|
<div class="w3-col l2 m3 s3"><input id="rad_unitsTemp1" type="radio" class="w3-radio" name="rad_unitsTemp" value="C" checked onclick="gauges.setUnits(this);"><label id="lab_unitsTemp1" for="rad_unitsTemp1">°C</label></div>
|
||||||
|
<div class="w3-rest"><input id="rad_unitsTemp2" type="radio" class="w3-radio" name="rad_unitsTemp" value="F" onclick="gauges.setUnits(this);"><label id="lab_unitsTemp2" for="rad_unitsTemp2">°F</label></div>
|
||||||
|
|
||||||
|
<div class="w3-col l3 m3 s5"><span id="lang_rainfall">Rainfall</span></div>
|
||||||
|
<div class="w3-col l2 m3 s3"><input id="rad_unitsRain1" type="radio" class="w3-radio" name="rad_unitsRain" value="mm" checked onclick="gauges.setUnits(this);"><label id="lab_unitsRain1" for="rad_unitsRain1">mm</label></div>
|
||||||
|
<div class="w3-rest"><input id="rad_unitsRain2" type="radio" class="w3-radio" name="rad_unitsRain" value="in" onclick="gauges.setUnits(this);"><label id="lab_unitsRain2" for="rad_unitsRain2">Inch</label></div>
|
||||||
|
|
||||||
|
<div class="w3-col l3 m3 s5"><span id="lang_pressure">Pressure</span></div>
|
||||||
|
<div class="w3-col l2 m2 s3"><input id="rad_unitsPress1" type="radio" class="w3-radio" name="rad_unitsPress" value="hPa" checked onclick="gauges.setUnits(this);"><label id="lab_unitsPress1" for="rad_unitsPress1">hPa</label></div>
|
||||||
|
<div class="w3-col l2 m2 s4"><input id="rad_unitsPress2" type="radio" class="w3-radio" name="rad_unitsPress" value="inHg" onclick="gauges.setUnits(this);"><label id="lab_unitsPress2" for="rad_unitsPress2">inHg</label></div>
|
||||||
|
<div class="w3-col s5 w3-hide-large w3-hide-medium"> </div>
|
||||||
|
<div class="w3-col l2 m2 s3"><input id="rad_unitsPress3" type="radio" class="w3-radio" name="rad_unitsPress" value="mb" onclick="gauges.setUnits(this);"><label id="lab_unitsPress3" for="rad_unitsPress3">mb</label></div>
|
||||||
|
<div class="w3-col l2 m3 s4"><input id="rad_unitsPress4" type="radio" class="w3-radio" name="rad_unitsPress" value="kPa" onclick="gauges.setUnits(this);"><label id="lab_unitsPress4" for="rad_unitsPress4">kPa</label></div>
|
||||||
|
|
||||||
|
<div class="w3-col l3 m3 s5"><span id="lang_windSpeed">Wind Speed</span></div>
|
||||||
|
<div class="w3-col l2 m2 s3"><input id="rad_unitsWind4" type="radio" class="w3-radio" name="rad_unitsWind" value="km/h" checked onclick="gauges.setUnits(this);"><label id="lab_unitsWind4" for="rad_unitsWind4">km/h</label></div>
|
||||||
|
<div class="w3-col l2 m2 s4"><input id="rad_unitsWind3" type="radio" class="w3-radio" name="rad_unitsWind" value="m/s" onclick="gauges.setUnits(this);"><label id="lab_unitsWind3" for="rad_unitsWind3">m/s</label></div>
|
||||||
|
<div class="w3-col s5 w3-hide-medium w3-hide-large"> </div>
|
||||||
|
<div class="w3-col l2 m2 s3"><input id="rad_unitsWind1" type="radio" class="w3-radio" name="rad_unitsWind" value="mph" onclick="gauges.setUnits(this);"><label id="lab_unitsWind1" for="rad_unitsWind1">mph</label></div>
|
||||||
|
<div class="w3-col l3 m3 s4"><input id="rad_unitsWind2" type="radio" class="w3-radio" name="rad_unitsWind" value="kts" onclick="gauges.setUnits(this);"><label id="lab_unitsWind2" for="rad_unitsWind2">knots</label></div>
|
||||||
|
|
||||||
|
<div class="w3-col l3 m3 s5"><span id="lang_cloudbase">Cloud Base</span></div>
|
||||||
|
<div class="w3-col l2 m2 s3"><input id="rad_unitsCloudBase1" type="radio" class="w3-radio" name="rad_unitsCloud" value="m" checked onclick="gauges.setUnits(this);"><label id="lab_unitsCloudBase1" for="rad_unitsCloudBase1">m</label></div>
|
||||||
|
<div class="w3-col l7 m7 s4"><input id="rad_unitsCloudBase2" type="radio" class="w3-radio" name="rad_unitsCloud" value="ft" onclick="gauges.setUnits(this);"><label id="lab_unitsCloudBase2" for="rad_unitsCloudBase2">ft</label></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer class="w3-container w3-theme-dark" style="border-radius: 0 0 8px 8px;">
|
||||||
|
<p class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span></p>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
var showModal = function(modalID) {
|
||||||
|
$('#' + modalID).toggleClass('w3-show', 'w3-hide');
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<!-- Combined steelseries.js & tween.js -->
|
||||||
|
<script src="lib/steelseries/scripts/steelseries_tween.min.js"></script>
|
||||||
|
<!-- Once you have customised this scripts to your requirements you should minimise
|
||||||
|
and concatenate them into a single file in the same order as below -->
|
||||||
|
<script src="lib/steelseries/scripts/language.min.js"></script>
|
||||||
|
<script src="lib/steelseries/scripts/gauges.js"></script>
|
||||||
|
<!--Optional Wind Rose scripts -->
|
||||||
|
<script src="lib/steelseries/scripts/RGraph.common.core.min.js"></script>
|
||||||
|
<script src="lib/steelseries/scripts/RGraph.rose.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
112
webfiles/historic.htm
Normal file
112
webfiles/historic.htm
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
<!--
|
||||||
|
historic.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2023/02/10 14:48:26
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
<style>
|
||||||
|
#chartcontainer {
|
||||||
|
min-height: 550px;
|
||||||
|
margin-top:16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.mx-button {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.graphs-width {
|
||||||
|
max-width:1250px;
|
||||||
|
margin: auto
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Charts based on summary data</h1>
|
||||||
|
<h3 class="w3-center w3-hide">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- First Row -->
|
||||||
|
<div class="w3-col s12"> <!-- Main column of first row -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<figure>
|
||||||
|
<div id="chartcontainer"></div>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of first column of first row -->
|
||||||
|
</div>
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width">
|
||||||
|
<div class="w3-col s12">
|
||||||
|
<div class="w3-container w3-panel w3-center">
|
||||||
|
<div class="w3-bar w3-center">
|
||||||
|
<button id="btnTemp" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('temp');">Temperature</button>
|
||||||
|
<button id="btnPress" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('press');">Pressure</button>
|
||||||
|
<button id="btnWind" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('wind');">Winds</button>
|
||||||
|
<button id="btnHum" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('humidity');">Humidity</button>
|
||||||
|
<button id="btnRain" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('rain');">Rainfall</button>
|
||||||
|
<button id="btnSolar" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('solar');">Solar Radiation</button>
|
||||||
|
<button id="btnDegDay" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('degday');">Degree Days</button>
|
||||||
|
<button id="btnTempSum" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeGraph('tempsum');">Temp Sum</button>
|
||||||
|
</div>
|
||||||
|
<p>Mouse over the chart to see the values at any given time.
|
||||||
|
You can add or remove data sets from the chart by clicking the entry on the chart legend.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="https://code.highcharts.com/stock/10.3.3/highstock.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/stock/10.3.3/modules/exporting.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/export-data.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/accessibility.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/boost.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/themes/grid.js"></script>
|
||||||
|
<script src="js/historiccharts.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
webfiles/images/CumulusMX-Logo.png
Normal file
BIN
webfiles/images/CumulusMX-Logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
webfiles/images/favicon.png
Normal file
BIN
webfiles/images/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 57 KiB |
BIN
webfiles/images/picture.jpg
Normal file
BIN
webfiles/images/picture.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
238
webfiles/index.htm
Normal file
238
webfiles/index.htm
Normal file
|
@ -0,0 +1,238 @@
|
||||||
|
<!--
|
||||||
|
index.html v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/11/20 16:28:39
|
||||||
|
Page: 1 main panel plus a right sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery library -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
<script>
|
||||||
|
window.onload = () => {
|
||||||
|
$('#moonImg').attr('src', 'images/moon.png?' + Date.now());
|
||||||
|
// update the moon image every 20 minutes if the page is left open
|
||||||
|
setInterval(() => {
|
||||||
|
$('#moonImg').attr('src', 'images/moon.png?' + Date.now());
|
||||||
|
}, 1200000);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1><span data-cmxdata="location"></span> Weather <span class="subText"></span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-container w3-theme-white">
|
||||||
|
<h3 class="">Almanac</h3>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table" style="min-width:100%;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="">Dawn:</td>
|
||||||
|
<td class=""><span data-cmxdata="dawn"></span></td>
|
||||||
|
<td class="">Sun Rise:</td>
|
||||||
|
<td class=""><span data-cmxdata="sunrise"></span></td>
|
||||||
|
<td class="">Moon Rise:</td>
|
||||||
|
<td class=""><span data-cmxdata="moonrise"></span></td>
|
||||||
|
<td rowspan="3" style="width:75px; height: 75px; padding:0"><img id="moonImg" src="images/moon.png" alt="Moon" width="75" height="75" class="w3-image" />Visible <span data-cmxdata="MoonPercentAbs"></span>%</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="">Dusk:</td>
|
||||||
|
<td class=""><span data-cmxdata="dusk"></span></td>
|
||||||
|
<td class="">Sun Set:</td>
|
||||||
|
<td class=""><span data-cmxdata="sunset"></span></td>
|
||||||
|
<td class="">Moon Set:</td>
|
||||||
|
<td class=""><span data-cmxdata="moonset"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="">Daylight:</td>
|
||||||
|
<td class=""><span data-cmxdata="daylightlength"></span></td>
|
||||||
|
<td class="">Day Length:</td>
|
||||||
|
<td class=""><span data-cmxdata="daylength"></span></td>
|
||||||
|
<td class="">Moon Phase:</td>
|
||||||
|
<td class=""><span id="moonPhase" data-cmxdata="moonphase"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="currCond" class="w3-hide">
|
||||||
|
<td colspan="7"><strong>Current conditions</strong>: <span data-cmxdata="currcond"></span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-row-padding"> <!-- Row 2 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h3 class="">Conditions at local time <span data-cmxdata="time"></span></h3>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="min-width:100%;">
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="w3-theme-d5">Temperature and Humidity</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Temperature</td>
|
||||||
|
<td><span data-cmxdata="temp"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>Dew Point</td>
|
||||||
|
<td><span data-cmxdata="dew"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Windchill</td>
|
||||||
|
<td><span data-cmxdata="wchill"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>Humidity</td>
|
||||||
|
<td><span data-cmxdata="hum"></span> %</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td >Heat Index</td>
|
||||||
|
<td><span data-cmxdata="heatindex"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span data-cmx-apparent class="w3-hide">Apparent Temperature</span><span data-cmx-feels>Feels Like</span></td>
|
||||||
|
<td><span data-cmx-apparent data-cmxdata="apptemp" class="w3-hide"></span><span data-cmx-feels data-cmxdata="feelslike"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Temp change last hour</td>
|
||||||
|
<td><span data-cmxdata="TempChangeLastHour"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="w3-theme-d4">Rainfall</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Today</td>
|
||||||
|
<td><span data-cmxdata="rfall"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>Rainfall Rate</td>
|
||||||
|
<td><span data-cmxdata="rrate"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall This Month</td>
|
||||||
|
<td><span data-cmxdata="rmonth"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>Rainfall This Year</td>
|
||||||
|
<td><span data-cmxdata="ryear"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Last Hour</td>
|
||||||
|
<td><span data-cmxdata="rhour"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>Last rainfall</td>
|
||||||
|
<td><span data-cmxdata="LastRainTip"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Since Midnight</td>
|
||||||
|
<td><span data-cmxdata="rmidnight"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>Rainfall Last 24 Hours</td>
|
||||||
|
<td><span data-cmxdata="r24hour"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="w3-theme-d3">Wind</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Wind Speed <span class="subText">(gust)</span></td>
|
||||||
|
<td><span data-cmxdata="wgust"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td>Wind Speed <span class="subText">(avg)</span></td>
|
||||||
|
<td><span data-cmxdata="wspeed"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Wind Bearing</td>
|
||||||
|
<td><span data-cmxdata="avgbearing"></span>° <span data-cmxdata="wdir"></span></td>
|
||||||
|
<td>Beaufort <span data-cmxdata="beaufort"></span></td>
|
||||||
|
<td><span data-cmxdata="beaudesc"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Wind Variation <span class="subText">(last 10 minutes)</span></td>
|
||||||
|
<td colspan="3">From <span data-cmxdata="BearingRangeFrom"></span>° to <span data-cmxdata="BearingRangeTo"></span>°</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="w3-theme-d2">Pressure <span class="subText">(sea level)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td>Barometer</td>
|
||||||
|
<td><span data-cmxdata="press"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td><span data-cmxdata="presstrend"></span></td>
|
||||||
|
<td><span data-cmxdata="presstrendval"></span> <span data-cmxdata="pressunit"></span>/hr</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-hide" data-cmx-solar data-cmx-uv>
|
||||||
|
<td colspan="4" class="w3-theme-d1">Solar</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-solar>
|
||||||
|
<td>Solar Radiation</td>
|
||||||
|
<td><span data-cmxdata="SolarRad"></span> W/m²</td>
|
||||||
|
<td>Evapotranspiration Today</td>
|
||||||
|
<td><span data-cmxdata="ET"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-uv>
|
||||||
|
<td>UV Index</td>
|
||||||
|
<td><span data-cmxdata="UV"></span></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<p class="w3-small credits">Page updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>The weather station in use is the <span data-cmxdata="stationtype"></span><br>
|
||||||
|
This page is updated every <span data-cmxdata="interval"></span> minutes. The meteorological day used at this station ends at <span data-cmxdata="rollovertime"></span>.
|
||||||
|
</p>
|
||||||
|
<p><strong>Forecast:</strong> <span data-cmxdata="forecast"></span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
40
webfiles/js/alltimerecdata.js
Normal file
40
webfiles/js/alltimerecdata.js
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
// Last modified: 2021/03/19 09:15:55
|
||||||
|
|
||||||
|
|
||||||
|
$.getJSON("websitedata.json", function (json) {
|
||||||
|
console.log( "success" );
|
||||||
|
var cmx_data = json;
|
||||||
|
|
||||||
|
$(document).prop('title', cmx_data['cmx-location'] + ' weather');
|
||||||
|
$('meta[name=description]').attr('content', cmx_data['cmx-location'] + ' weather data');
|
||||||
|
$('meta[name=keywords]').attr('content', $('meta[name=keywords]').attr('content') + ', ' + cmx_data['cmx-location'] + ' weather data');
|
||||||
|
|
||||||
|
$.getJSON("alltimerecdata.json", function (json) {
|
||||||
|
console.log( "success" );
|
||||||
|
Object.keys(json).forEach(key => {
|
||||||
|
cmx_data[key] = json[key];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Update all spans with id beginning "cmx-"
|
||||||
|
$('span[id^=cmx-]').each(function () {
|
||||||
|
this.innerHTML = cmx_data[this.id];
|
||||||
|
});
|
||||||
|
// Update all spans with class beginning "cmx-"
|
||||||
|
$('span[class^=cmx-]').each(function () {
|
||||||
|
this.innerHTML = cmx_data[this.className];
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.fail(function (jqxhr, textStatus, error) {
|
||||||
|
var err = textStatus + ", " + error;
|
||||||
|
console.log("Request Failed: " + err);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
.fail(function (jqxhr, textStatus, error) {
|
||||||
|
var err = textStatus + ", " + error;
|
||||||
|
console.log( "Request Failed: " + err );
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
});
|
2463
webfiles/js/cumuluscharts.js
Normal file
2463
webfiles/js/cumuluscharts.js
Normal file
File diff suppressed because it is too large
Load Diff
1129
webfiles/js/historiccharts.js
Normal file
1129
webfiles/js/historiccharts.js
Normal file
File diff suppressed because it is too large
Load Diff
36
webfiles/js/menu.js
Normal file
36
webfiles/js/menu.js
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
Menu configuration file for NEW CuMX template
|
||||||
|
Last modified: 2022/07/05 11:39:38
|
||||||
|
menu.js - typical name, you define the one used in setpagedata.js
|
||||||
|
|
||||||
|
It is STRONGLY RECOMMENDED that if you customise this file, you create a new file with a different name, e.g. mymenu.js
|
||||||
|
and change setpagedata.js to use that file. This will avoid your customisations being accidentally overwritten during upgrades
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
.menu - can be 'b' (both menus), 'w' (wide menu ONLY), 'n' (narrow menu ONLY)
|
||||||
|
.new_window:true - forces the link to open in new browser window
|
||||||
|
.forum:true - flags a forum link menu item, it will use the url provided in CuMX config, if that is blank the menu item will be hidden
|
||||||
|
.webcam:true - flags a webcam link menu item, it will use the url provided in CuMX config, if that is blank the menu item will be hidden
|
||||||
|
*/
|
||||||
|
|
||||||
|
menuSrc = [
|
||||||
|
{title: "Now", menu: "b", url: "index.htm"},
|
||||||
|
{title: "Today", menu: "b", url: "today.htm"},
|
||||||
|
{title: "Yesterday", menu: "b", url: "yesterday.htm"},
|
||||||
|
{title: "Today-Yest", menu: "b", url: "todayyest.htm"},
|
||||||
|
{title: "Gauges", menu: "b", url: "gauges.htm"},
|
||||||
|
{title: "Records", menu: "b", submenu: true, items: [
|
||||||
|
{title: "This Month", menu: "b", url: "thismonth.htm"},
|
||||||
|
{title: "This Year", menu: "b", url: "thisyear.htm"},
|
||||||
|
{title: "All Time", menu: "b", url: "record.htm"},
|
||||||
|
{title: "Monthly", menu: "b", url: "monthlyrecord.htm"}
|
||||||
|
]},
|
||||||
|
{title: "Charts", menu: "b", submenu: true, items: [
|
||||||
|
{title: "Trends", menu: "b", url: "trends.htm"},
|
||||||
|
{title: "Select-a-graph", menu: "b", url: "selectachart.htm"},
|
||||||
|
{title: "Historic", menu: "b", url: "historic.htm"}
|
||||||
|
]},
|
||||||
|
{title: "Reports", menu: "b", url: "noaareport.htm"},
|
||||||
|
{title: "Forum", menu: "b", url: "#", forum: true, new_window: true},
|
||||||
|
{title: "Webcam", menu: "b", url: "#", webcam: true}
|
||||||
|
];
|
38
webfiles/js/menuSample.js
Normal file
38
webfiles/js/menuSample.js
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
An example extended/modified Menu configuration file for NEW CuMX template
|
||||||
|
Last modified: 2021/03/19 09:17:14
|
||||||
|
menuSample.js - typical name, you define the one used in setpagedata.js
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
.menu - can be 'b' (both menus), 'w' (wide menu ONLY), 'n' (narrow menu ONLY)
|
||||||
|
.new_window:true - forces the link to open in new browser window
|
||||||
|
.forum:true - flags a forum link menu item, it will use the url provided in CuMX config, if that is blank the menu item will be hidden
|
||||||
|
.webcam:true - flags a webcam link menu item, it will use the url provided in CuMX config, if that is blank the menu item will be hidden
|
||||||
|
*/
|
||||||
|
|
||||||
|
menuSrc = [
|
||||||
|
{title: "Now", menu: "b", url: "index.htm"},
|
||||||
|
{title: "Today", menu: "b", url: "today.htm"},
|
||||||
|
{title: "Yesterday", menu: "b", url: "yesterday.htm"},
|
||||||
|
{title: "Gauges", menu: "b", url: "gauges.htm"},
|
||||||
|
{title: "Records", menu: "b", submenu: true, items: [
|
||||||
|
{title: "This Month", menu: "b", url: "thismonth.htm"},
|
||||||
|
{title: "This Year", menu: "b", url: "thisyear.htm"},
|
||||||
|
{title: "All Time", menu: "b", url: "record.htm"},
|
||||||
|
{title: "Monthly", menu: "b", url: "monthlyrecord.htm"}
|
||||||
|
]},
|
||||||
|
{title: "Charts", menu: "b", submenu: true, items: [
|
||||||
|
{title: "Trends", menu: "b", url: "trends.htm"},
|
||||||
|
{title: "Select-a-graph", menu: "b", url: "selectachart.htm"},
|
||||||
|
{title: "Historic", menu: "b", url: "historic.htm"}
|
||||||
|
]},
|
||||||
|
{title: "Reports", menu: "b", url: "noaareport.htm"},
|
||||||
|
{title: "Forum", menu: "n", url: "#", new_window: true},
|
||||||
|
{title: "Webcam", menu: "n", url: "#", new_window: true},
|
||||||
|
{title: "Other Links", menu: "w", submenu: true, items: [
|
||||||
|
{title: "Cumulus Forum", menu: "w", url: "#", forum: true, new_window: true},
|
||||||
|
{title: "Webcam", menu: "b", url: "#", webcam: true, new_window: true},
|
||||||
|
{title: "My Cat", menu: "b", url: "mycatpage.htm"},
|
||||||
|
{title: "Some Cat", menu: "b", url: "https://pixnio.com/free-images/2020/07/26/2020-07-26-08-52-19-1200x1200.jpg", new_window: true}
|
||||||
|
]}
|
||||||
|
];
|
74
webfiles/js/monthlyrecdata.js
Normal file
74
webfiles/js/monthlyrecdata.js
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
// Last modified: 2022/07/27 15:35:57
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
dataLoadedPromise.then(function() {
|
||||||
|
var yesterday = new Date()
|
||||||
|
yesterday.setDate(yesterday.getDate() - 1)
|
||||||
|
changeData(yesterday.getMonth());
|
||||||
|
$('#btnMon' + yesterday.getMonth()).attr('aria-pressed', true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var monthnames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
|
||||||
|
|
||||||
|
function changeData(month) {
|
||||||
|
document.getElementById('MonthName').innerHTML = monthnames[month];
|
||||||
|
document.getElementById('TempH').innerHTML = cmx_data.monthlyrecs.hightemp[month];
|
||||||
|
document.getElementById('TempHT').innerHTML = cmx_data.monthlyrecs.hightempT[month];
|
||||||
|
document.getElementById('TempL').innerHTML = cmx_data.monthlyrecs.lowtemp[month];
|
||||||
|
document.getElementById('TempLT').innerHTML = cmx_data.monthlyrecs.lowtempT[month];
|
||||||
|
document.getElementById('DewPointH').innerHTML = cmx_data.monthlyrecs.highDP[month];
|
||||||
|
document.getElementById('DewPointHT').innerHTML = cmx_data.monthlyrecs.highDPT[month];
|
||||||
|
document.getElementById('DewPointL').innerHTML = cmx_data.monthlyrecs.lowDP[month];
|
||||||
|
document.getElementById('DewPointLT').innerHTML = cmx_data.monthlyrecs.lowDPT[month];
|
||||||
|
document.getElementById('AppTempH').innerHTML = cmx_data.monthlyrecs.highapptemp[month];
|
||||||
|
document.getElementById('AppTempHT').innerHTML = cmx_data.monthlyrecs.highapptempT[month];
|
||||||
|
document.getElementById('AppTempL').innerHTML = cmx_data.monthlyrecs.lowapptemp[month];
|
||||||
|
document.getElementById('AppTempLT').innerHTML = cmx_data.monthlyrecs.lowapptempT[month];
|
||||||
|
document.getElementById('FeelsLikeH').innerHTML = cmx_data.monthlyrecs.highfeelslike[month];
|
||||||
|
document.getElementById('FeelsLikeHT').innerHTML = cmx_data.monthlyrecs.highfeelslikeT[month];
|
||||||
|
document.getElementById('FeelsLikeL').innerHTML = cmx_data.monthlyrecs.lowfeelslike[month];
|
||||||
|
document.getElementById('FeelsLikeLT').innerHTML = cmx_data.monthlyrecs.lowfeelslikeT[month];
|
||||||
|
document.getElementById('WChillL').innerHTML = cmx_data.monthlyrecs.lowchill[month];
|
||||||
|
document.getElementById('WChillLT').innerHTML = cmx_data.monthlyrecs.lowchillT[month];
|
||||||
|
document.getElementById('HeatIndexH').innerHTML = cmx_data.monthlyrecs.highheatindex[month];
|
||||||
|
document.getElementById('HeatIndexHT').innerHTML = cmx_data.monthlyrecs.highheatindexT[month];
|
||||||
|
document.getElementById('MinTempH').innerHTML = cmx_data.monthlyrecs.highmintemp[month];
|
||||||
|
document.getElementById('MinTempHT').innerHTML = cmx_data.monthlyrecs.highmintempT[month];
|
||||||
|
document.getElementById('MaxTempL').innerHTML = cmx_data.monthlyrecs.lowmaxtemp[month];
|
||||||
|
document.getElementById('MaxTempLT').innerHTML = cmx_data.monthlyrecs.lowmaxtempT[month];
|
||||||
|
document.getElementById('HumH').innerHTML = cmx_data.monthlyrecs.highhum[month];
|
||||||
|
document.getElementById('HumHT').innerHTML = cmx_data.monthlyrecs.highhumT[month];
|
||||||
|
document.getElementById('HumL').innerHTML = cmx_data.monthlyrecs.lowhum[month];
|
||||||
|
document.getElementById('HumLT').innerHTML = cmx_data.monthlyrecs.lowhumT[month];
|
||||||
|
document.getElementById('HighDailyTempRange').innerHTML = cmx_data.monthlyrecs.hightemprange[month];
|
||||||
|
document.getElementById('HighDailyTempRangeT').innerHTML = cmx_data.monthlyrecs.hightemprangeT[month];
|
||||||
|
document.getElementById('LowDailyTempRange').innerHTML = cmx_data.monthlyrecs.lowtemprange[month];
|
||||||
|
document.getElementById('LowDailyTempRangeT').innerHTML = cmx_data.monthlyrecs.lowtemprangeT[month];
|
||||||
|
document.getElementById('RainRateH').innerHTML = cmx_data.monthlyrecs.rainrate[month];
|
||||||
|
document.getElementById('RainRateHT').innerHTML = cmx_data.monthlyrecs.rainrateT[month];
|
||||||
|
document.getElementById('HourlyRainH').innerHTML = cmx_data.monthlyrecs.hourlyrain[month];
|
||||||
|
document.getElementById('HourlyRainHT').innerHTML = cmx_data.monthlyrecs.hourlyrainT[month];
|
||||||
|
document.getElementById('Rain24HourH').innerHTML = cmx_data.monthlyrecs.rain24h[month];
|
||||||
|
document.getElementById('Rain24HourHT').innerHTML = cmx_data.monthlyrecs.rain24hT[month];
|
||||||
|
document.getElementById('DailyRainH').innerHTML = cmx_data.monthlyrecs.dailyrain[month];
|
||||||
|
document.getElementById('DailyRainHT').innerHTML = cmx_data.monthlyrecs.dailyrainT[month];
|
||||||
|
document.getElementById('MonthlyRainH').innerHTML = cmx_data.monthlyrecs.monthlyrain[month];
|
||||||
|
document.getElementById('MonthlyRainHT').innerHTML = cmx_data.monthlyrecs.monthlyrainT[month];
|
||||||
|
document.getElementById('LongestDryPeriod').innerHTML = cmx_data.monthlyrecs.dryperiod[month];
|
||||||
|
document.getElementById('LongestDryPeriodT').innerHTML = cmx_data.monthlyrecs.dryperiodT[month];
|
||||||
|
document.getElementById('LongestWetPeriod').innerHTML = cmx_data.monthlyrecs.wetperiod[month];
|
||||||
|
document.getElementById('LongestWetPeriodT').innerHTML = cmx_data.monthlyrecs.wetperiodT[month];
|
||||||
|
document.getElementById('GustH').innerHTML = cmx_data.monthlyrecs.highgust[month];
|
||||||
|
document.getElementById('GustHT').innerHTML = cmx_data.monthlyrecs.highgustT[month];
|
||||||
|
document.getElementById('WindH').innerHTML = cmx_data.monthlyrecs.highwind[month];
|
||||||
|
document.getElementById('WindHT').innerHTML = cmx_data.monthlyrecs.highwindT[month];
|
||||||
|
document.getElementById('WindRunH').innerHTML = cmx_data.monthlyrecs.highwindrun[month];
|
||||||
|
document.getElementById('WindRunHT').innerHTML = cmx_data.monthlyrecs.highwindrunT[month];
|
||||||
|
document.getElementById('PressL').innerHTML = cmx_data.monthlyrecs.lowpress[month];
|
||||||
|
document.getElementById('PressLT').innerHTML = cmx_data.monthlyrecs.lowpressT[month];
|
||||||
|
document.getElementById('PressH').innerHTML = cmx_data.monthlyrecs.highpress[month];
|
||||||
|
document.getElementById('PressHT').innerHTML = cmx_data.monthlyrecs.highpressT[month];
|
||||||
|
$('#btnArray').children('button').attr("aria-pressed", false);
|
||||||
|
$('#btnMon' + month).attr('aria-pressed', true);
|
||||||
|
}
|
142
webfiles/js/noaarpts.js
Normal file
142
webfiles/js/noaarpts.js
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
/* ----------------------------------------------------------
|
||||||
|
* noaarpts.js
|
||||||
|
* Last modified: 2021/07/10 13:19:42
|
||||||
|
* Populates the dropdown menus using the records began date
|
||||||
|
*
|
||||||
|
* Requires jQuery
|
||||||
|
* ----------------------------------------------------------*/
|
||||||
|
|
||||||
|
let rptPath = 'Reports/'; // Your path should have a trailing "/", eg. 'Reports/'
|
||||||
|
let startYear, endYear;
|
||||||
|
let startMonth, endMonth;
|
||||||
|
let rptAvail = {};
|
||||||
|
|
||||||
|
if (rptPath.length && rptPath.slice(-1) !== '/')
|
||||||
|
rptPath += '/';
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
dataLoadedPromise.then(function() {
|
||||||
|
startYear = cmx_data.recordsbegandateISO.split('-')[0] * 1;
|
||||||
|
startMonth = cmx_data.recordsbegandateISO.split('-')[1] * 1;
|
||||||
|
endYear = cmx_data.metdateyesterdayISO.split('-')[0] * 1;
|
||||||
|
endMonth = cmx_data.metdateyesterdayISO.split('-')[1] * 1;
|
||||||
|
|
||||||
|
// This does the initial disable of out of range months this year
|
||||||
|
rptAvail[endYear] = [];
|
||||||
|
for (let m = 1; m < 13; m++) {
|
||||||
|
// greater than end month
|
||||||
|
rptAvail[endYear][m] = m <= endMonth;
|
||||||
|
// if start year is this year, then less start month
|
||||||
|
if (startYear == endYear) {
|
||||||
|
rptAvail[endYear][m] = rptAvail[endYear][m] && m >= startMonth
|
||||||
|
}
|
||||||
|
$('#opt-' + m).prop('hidden', !rptAvail[endYear][m]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the current year report and display it whilst we sort out the rest in background
|
||||||
|
getYearRpt(endYear);
|
||||||
|
|
||||||
|
// add the year select dropdown values, most recent first
|
||||||
|
for (let y = endYear; y >= startYear; y--) {
|
||||||
|
let option = $('<option />');
|
||||||
|
option.html(y);
|
||||||
|
option.val(y);
|
||||||
|
|
||||||
|
$('#year').append(option);
|
||||||
|
|
||||||
|
rptAvail[y] = [];
|
||||||
|
|
||||||
|
// The start and end years may be short, so no point in checking months that are out of range
|
||||||
|
let monSt, monEnd;
|
||||||
|
if (y == startYear || y == endYear) {
|
||||||
|
monSt = y == startYear ? startMonth : 1;
|
||||||
|
monEnd = y == endYear ? endMonth : 12;
|
||||||
|
} else {
|
||||||
|
monSt = 1;
|
||||||
|
monEnd = 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
// we need to process every month though, so we can disbale those out of range as well as MIA
|
||||||
|
for (let m = 1; m <= 12; m++) {
|
||||||
|
// assume this month isn't available
|
||||||
|
rptAvail[y][m] = false;
|
||||||
|
|
||||||
|
if (m >= monSt && m <= monEnd) {
|
||||||
|
// assume it's there, then we only have to check for failure
|
||||||
|
rptAvail[y][m] = true;
|
||||||
|
// checking...
|
||||||
|
$.ajax({
|
||||||
|
url: rptPath + 'NOAAMO' + pad2(m) + pad2(y - 2000) + '.txt',
|
||||||
|
type: 'HEAD',
|
||||||
|
error: function() {
|
||||||
|
rptAvail[y][m] = false;
|
||||||
|
// if we are in the year currently being displayed...
|
||||||
|
if (y == $('#year').val()) {
|
||||||
|
// ...disable of any months that should be available but aren't
|
||||||
|
$('#opt-' + m).prop('hidden', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// pad two digit numbers with a leading zero
|
||||||
|
let pad2 = function (num) {
|
||||||
|
return (num < 10 ? '0' : '') + num;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Script assumes that reports use the default name format
|
||||||
|
let getMonRpt = function(month) {
|
||||||
|
let yr = $('#year').val();
|
||||||
|
|
||||||
|
// Is annual selected? If so, show the yearly report
|
||||||
|
if (month === '0') {
|
||||||
|
getYearRpt(yr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
reqRpt = rptPath + 'NOAAMO' + pad2(month) + pad2(yr - 2000) + '.txt';
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: reqRpt,
|
||||||
|
dataType: 'text',
|
||||||
|
success: function(data) {
|
||||||
|
$('#noaareport').text(data);
|
||||||
|
},
|
||||||
|
error: function() {
|
||||||
|
alert('Did not find the required report\n\nPlease try another date');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Script assumes that reports use the default name format
|
||||||
|
let getYearRpt = function(yr) {
|
||||||
|
let reqRpt = rptPath + 'NOAAYR' + yr + '.txt';
|
||||||
|
|
||||||
|
// set the month buttons for the new year
|
||||||
|
for (let m = 1; m < 13; m++) {
|
||||||
|
$('#opt-' + m).prop('hidden', !rptAvail[yr][m]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do we have a month selected? If so show the month report for the new year
|
||||||
|
let mon = $('#month').val();
|
||||||
|
if (mon != '0') {
|
||||||
|
getMonRpt(mon);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the report text
|
||||||
|
$.ajax({
|
||||||
|
url: reqRpt,
|
||||||
|
dataType: 'text',
|
||||||
|
success: function(data) {
|
||||||
|
$('#noaareport').text(data);
|
||||||
|
},
|
||||||
|
error: function() {
|
||||||
|
alert('Did not find the required report\n\nPlease try another date');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
1465
webfiles/js/selectachart.js
Normal file
1465
webfiles/js/selectachart.js
Normal file
File diff suppressed because it is too large
Load Diff
237
webfiles/js/setpagedata.js
Normal file
237
webfiles/js/setpagedata.js
Normal file
|
@ -0,0 +1,237 @@
|
||||||
|
/* ----------------------------------------------------------
|
||||||
|
* setpagedata.js v:0.1.0 d:Mar 2021 a:Neil Thomas
|
||||||
|
* Last modified: 2022/07/02 17:55:10
|
||||||
|
* Basic scripts for all new at-xxxx.html template pages.
|
||||||
|
* Incorporating changes suggested by beteljuice
|
||||||
|
* Requires jQuery
|
||||||
|
* ----------------------------------------------------------*/
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
// Changing these affects every page in the ai-interface
|
||||||
|
// All numbers are pixels.
|
||||||
|
|
||||||
|
let fixedHeader = false; // Use only true or false
|
||||||
|
let fixedFooter = true; // Use only true or false
|
||||||
|
let headerMargin = 20; // Gap between the header and the main body
|
||||||
|
let footerMargin = 10; // Gap between the body and the footer
|
||||||
|
let load_menu = "js/menu.js"; // menu file to load - path is relative to the page
|
||||||
|
|
||||||
|
|
||||||
|
// Thats the only changes you should make unless you know better!
|
||||||
|
|
||||||
|
let cmx_data;
|
||||||
|
let menu = mobileMenu = "";
|
||||||
|
let initialLoad = true;
|
||||||
|
|
||||||
|
window.onresize = function() {
|
||||||
|
borderpatrol();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
let borderpatrol = function() {
|
||||||
|
var contentMargin = $("#Header").outerHeight( true );
|
||||||
|
if ($('#Header').hasClass('w3-top')) {
|
||||||
|
$('#Content').css('margin-top', headerMargin + contentMargin + 'px');
|
||||||
|
} else {
|
||||||
|
$('#Content').css('margin-top', headerMargin + 'px');
|
||||||
|
}
|
||||||
|
contentMargin = $('#Footer').outerHeight( true );
|
||||||
|
if ($('#Footer').hasClass('w3-bottom')){
|
||||||
|
$('#Content').css('margin-bottom', footerMargin + contentMargin + 'px');
|
||||||
|
} else {
|
||||||
|
$('#Content').css('margin-bottom', footerMargin + 'px');
|
||||||
|
}
|
||||||
|
}; // end function
|
||||||
|
|
||||||
|
let createMainMenu = function(src, submenu) {
|
||||||
|
let classMain = 'w3-bar-item w3-btn w3-theme-hvr at-slim w3-hide-small w3-hide-medium';
|
||||||
|
let classMainSub = 'w3-bar-item w3-btn w3-theme-d5-hvr at-slim';
|
||||||
|
|
||||||
|
src.forEach(function(itm) {
|
||||||
|
if (itm.menu !== 'n') { // wanted in main menu
|
||||||
|
if (itm.submenu) { // drop down
|
||||||
|
menu += '<div class="w3-dropdown-hover">\n';
|
||||||
|
menu += '\t<button id="' + itm.title.replace(/ /g,"_") + '" type="button" class="w3-btn w3-theme-hvr at-slim w3-hide-medium w3-hide-small" onclick="dropDown(this)" aria-expanded="false">' + itm.title + '…</button>\n';
|
||||||
|
menu += '\t<div id="sub_' + itm.title.replace(/ /g,"_") + '" class="w3-dropdown-content w3-bar-block w3-theme">\n';
|
||||||
|
// add the sub-menu items
|
||||||
|
createMainMenu(itm.items, true);
|
||||||
|
menu += '\t\n</div></div>\n';
|
||||||
|
} else {
|
||||||
|
infill = (itm.new_window ? ' target="_blank"' : '');
|
||||||
|
|
||||||
|
if (itm.forum) {
|
||||||
|
if (cmx_data.forumurl != '') {
|
||||||
|
menu += '<a href="' + cmx_data.forumurl + '"' + infill + ' class="' + (submenu ? classMainSub : classMain) + '">' + itm.title + '</a>\n';
|
||||||
|
}
|
||||||
|
} else if (itm.webcam) {
|
||||||
|
if (cmx_data.webcamurl != '') {
|
||||||
|
menu += '<a href="' + cmx_data.webcamurl + '"' + infill + ' class="' + (submenu ? classMainSub : classMain) + '">' + itm.title + '</a>\n';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
menu += '<a href="' + itm.url + '"' + infill + ' class="' + (submenu ? classMainSub : classMain) + '">' + itm.title + '</a>\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// if we are processing a sub menu, return to the main loop
|
||||||
|
if (submenu)
|
||||||
|
return;
|
||||||
|
|
||||||
|
menu += '<button class="w3-bar-item w3-btn w3-theme-hvr at-slim w3-hide-large w3-right" onClick="toggleMenu(\'Main_Menu_Mobile\')">Menu ☰</button>';
|
||||||
|
|
||||||
|
// stick the menus into the page
|
||||||
|
$('#Main_Menu').html(menu);
|
||||||
|
};
|
||||||
|
|
||||||
|
let createMobileMenu = function(src, submenu) {
|
||||||
|
let classMobile = 'w3-bar-item w3-btn w3-theme-hvr at-slim';
|
||||||
|
let styleMobile = submenu ? 'padding-left: 30px !important;' : '';
|
||||||
|
|
||||||
|
src.forEach(function(itm) {
|
||||||
|
if (itm.menu !== 'w') { // wanted in narrow menu
|
||||||
|
// mobile menu
|
||||||
|
if (itm.submenu) {
|
||||||
|
mobileMenu += '\t<button class="w3-btn at-slim" style="cursor: default;">' + itm.title + '…</button>\n';
|
||||||
|
createMobileMenu(itm.items, true);
|
||||||
|
} else {
|
||||||
|
infill = (itm.new_window ? " target='_blank'" : "");
|
||||||
|
if (itm.forum && cmx_data.forumurl != '') {
|
||||||
|
mobileMenu += '<a href="' + cmx_data.forumurl + '"' + infill + ' class="' + classMobile + '" style= "' + styleMobile + '">' + itm.title + '</a>\n';
|
||||||
|
} else if (itm.webcam && cmx_data.webcamurl != '') {
|
||||||
|
mobileMenu += '<a href="' + cmx_data.webcamurl + '"' + infill + ' class="' + classMobile + '" style= "' + styleMobile + '">' + itm.title + '</a>\n';
|
||||||
|
} else {
|
||||||
|
mobileMenu += '<a href="' + itm.url + '"' + infill + ' class="' + classMobile + '" style= "' + styleMobile + '">' + itm.title + '</a>\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// if we are processing a sub menu, return to the main loop
|
||||||
|
if (submenu)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// stick the menus into the page
|
||||||
|
$('#Main_Menu_Mobile').html(mobileMenu);
|
||||||
|
};
|
||||||
|
|
||||||
|
let setupPage = function() {
|
||||||
|
|
||||||
|
// static header & footer
|
||||||
|
if (fixedHeader) {
|
||||||
|
$('#Header').addClass('w3-top');
|
||||||
|
} else {
|
||||||
|
$('#Header').removeClass('w3-top');
|
||||||
|
}
|
||||||
|
if (fixedFooter) {
|
||||||
|
$('#Footer').addClass('w3-bottom');
|
||||||
|
} else {
|
||||||
|
$('#Footer').removeClass('w3-bottom');
|
||||||
|
}
|
||||||
|
// Page content top and bottom margins
|
||||||
|
borderpatrol();
|
||||||
|
};
|
||||||
|
|
||||||
|
let toggleMenu = function(menuid) {
|
||||||
|
$('#'+menuid).toggleClass('w3-show');
|
||||||
|
};
|
||||||
|
|
||||||
|
let dropDown = function(panel) {
|
||||||
|
var btn = $('#' + panel.id);
|
||||||
|
var sub = $('#sub_' + panel.id);
|
||||||
|
if (sub.hasClass('w3-show')) {
|
||||||
|
sub.removeClass('w3-show');
|
||||||
|
btn.attr('aria-expanded', false);
|
||||||
|
} else {
|
||||||
|
// Close other dropdowns first
|
||||||
|
$('.w3-dropdown-content').removeClass('w3-show');
|
||||||
|
sub.addClass('w3-show');
|
||||||
|
btn.attr('aria-expanded', true);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
let getPageData = function (resolve, reject) {
|
||||||
|
$.getJSON('websitedata.json?_=' + Date.now(), function (json) {
|
||||||
|
console.log('Data success');
|
||||||
|
// auto update every 60 seconds, only the index and today pages
|
||||||
|
// Some sites may have index.htm as the default page, and thus not have a page name
|
||||||
|
let pageName = window.location.href.split('/').pop().split('.')[0];
|
||||||
|
if (pageName == 'index' || pageName == 'today' || pageName == 'todayYest' || pageName == '') {
|
||||||
|
setTimeout(function () {
|
||||||
|
getPageData(null, null);
|
||||||
|
}, 60 * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
cmx_data = json;
|
||||||
|
|
||||||
|
// Set some header stuff
|
||||||
|
$(document).prop('title', cmx_data.location + ' weather');
|
||||||
|
$('meta[name=description]').attr('content', cmx_data.location + ' weather data');
|
||||||
|
$('meta[name=keywords]').attr('content', $('meta[name=keywords]').attr('content') + ', ' + cmx_data.location);
|
||||||
|
|
||||||
|
// do the menus
|
||||||
|
if (initialLoad) {
|
||||||
|
$.getScript(load_menu, function() { // path is relative to the page - allows for multiple vars to be available and ignores comments ;-)
|
||||||
|
createMainMenu(menuSrc, false);
|
||||||
|
createMobileMenu(menuSrc, false);
|
||||||
|
borderpatrol(); // duplicated here to ensure things OK if initial menu wrapped
|
||||||
|
});
|
||||||
|
initialLoad = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show/hide Apparent/Feels Like
|
||||||
|
if (cmx_data.options.useApparent === "1") {
|
||||||
|
$('[data-cmx-apparent]').removeClass('w3-hide');
|
||||||
|
$('[data-cmx-feels]').addClass('w3-hide');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmx_data.options.showSolar === "1") {
|
||||||
|
$('[data-cmx-solar]').removeClass('w3-hide');
|
||||||
|
} else {
|
||||||
|
$('[data-cmx-solar-gauge]').addClass('w3-hide'); // Gauges do not draw correctly if hidden from the start
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmx_data.options.showUV === "1") {
|
||||||
|
$('[data-cmx-uv]').removeClass('w3-hide');
|
||||||
|
} else {
|
||||||
|
$('[data-cmx-uv-gauge]').addClass('w3-hide'); // Gauges do not draw correctly if hidden from the start
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update all spans having data-cmxdata with data values
|
||||||
|
$('[data-cmxdata]').each(function () {
|
||||||
|
this.innerHTML = cmx_data[this.dataset.cmxdata];
|
||||||
|
});
|
||||||
|
|
||||||
|
if (cmx_data.currcond != '') {
|
||||||
|
$('#currCond').removeClass('w3-hide');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use this to trigger other scripts on the page
|
||||||
|
if (null !== resolve) {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.fail(function (jqxhr, textStatus, error) {
|
||||||
|
let err = textStatus + ', ' + error;
|
||||||
|
console.log('Data Request Failed: ' + err );
|
||||||
|
|
||||||
|
if (null !== reject) {
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
|
||||||
|
// lets try that again
|
||||||
|
setTimeout(function () {
|
||||||
|
getPageData(resolve, reject);
|
||||||
|
}, 5000);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Get the main page data
|
||||||
|
let dataLoadedPromise = new Promise((myResolve, myReject) => {
|
||||||
|
$(document).ready(function() {
|
||||||
|
setupPage();
|
||||||
|
getPageData(myResolve, myReject);
|
||||||
|
});
|
||||||
|
});
|
2
webfiles/lib/jquery/jquery-latest.min.js
vendored
Normal file
2
webfiles/lib/jquery/jquery-latest.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
484
webfiles/lib/jquery/jquery.tmpl.js
Normal file
484
webfiles/lib/jquery/jquery.tmpl.js
Normal file
|
@ -0,0 +1,484 @@
|
||||||
|
/*!
|
||||||
|
* jQuery Templates Plugin 1.0.0pre
|
||||||
|
* http://github.com/jquery/jquery-tmpl
|
||||||
|
* Requires jQuery 1.4.2
|
||||||
|
*
|
||||||
|
* Copyright 2011, Software Freedom Conservancy, Inc.
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*/
|
||||||
|
(function( jQuery, undefined ){
|
||||||
|
var oldManip = jQuery.fn.domManip, tmplItmAtt = "_tmplitem", htmlExpr = /^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,
|
||||||
|
newTmplItems = {}, wrappedItems = {}, appendToTmplItems, topTmplItem = { key: 0, data: {} }, itemKey = 0, cloneIndex = 0, stack = [];
|
||||||
|
|
||||||
|
function newTmplItem( options, parentItem, fn, data ) {
|
||||||
|
// Returns a template item data structure for a new rendered instance of a template (a 'template item').
|
||||||
|
// The content field is a hierarchical array of strings and nested items (to be
|
||||||
|
// removed and replaced by nodes field of dom elements, once inserted in DOM).
|
||||||
|
var newItem = {
|
||||||
|
data: data || (data === 0 || data === false) ? data : (parentItem ? parentItem.data : {}),
|
||||||
|
_wrap: parentItem ? parentItem._wrap : null,
|
||||||
|
tmpl: null,
|
||||||
|
parent: parentItem || null,
|
||||||
|
nodes: [],
|
||||||
|
calls: tiCalls,
|
||||||
|
nest: tiNest,
|
||||||
|
wrap: tiWrap,
|
||||||
|
html: tiHtml,
|
||||||
|
update: tiUpdate
|
||||||
|
};
|
||||||
|
if ( options ) {
|
||||||
|
jQuery.extend( newItem, options, { nodes: [], parent: parentItem });
|
||||||
|
}
|
||||||
|
if ( fn ) {
|
||||||
|
// Build the hierarchical content to be used during insertion into DOM
|
||||||
|
newItem.tmpl = fn;
|
||||||
|
newItem._ctnt = newItem._ctnt || newItem.tmpl( jQuery, newItem );
|
||||||
|
newItem.key = ++itemKey;
|
||||||
|
// Keep track of new template item, until it is stored as jQuery Data on DOM element
|
||||||
|
(stack.length ? wrappedItems : newTmplItems)[itemKey] = newItem;
|
||||||
|
}
|
||||||
|
return newItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Override appendTo etc., in order to provide support for targeting multiple elements. (This code would disappear if integrated in jquery core).
|
||||||
|
jQuery.each({
|
||||||
|
appendTo: "append",
|
||||||
|
prependTo: "prepend",
|
||||||
|
insertBefore: "before",
|
||||||
|
insertAfter: "after",
|
||||||
|
replaceAll: "replaceWith"
|
||||||
|
}, function( name, original ) {
|
||||||
|
jQuery.fn[ name ] = function( selector ) {
|
||||||
|
var ret = [], insert = jQuery( selector ), elems, i, l, tmplItems,
|
||||||
|
parent = this.length === 1 && this[0].parentNode;
|
||||||
|
|
||||||
|
appendToTmplItems = newTmplItems || {};
|
||||||
|
if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
|
||||||
|
insert[ original ]( this[0] );
|
||||||
|
ret = this;
|
||||||
|
} else {
|
||||||
|
for ( i = 0, l = insert.length; i < l; i++ ) {
|
||||||
|
cloneIndex = i;
|
||||||
|
elems = (i > 0 ? this.clone(true) : this).get();
|
||||||
|
jQuery( insert[i] )[ original ]( elems );
|
||||||
|
ret = ret.concat( elems );
|
||||||
|
}
|
||||||
|
cloneIndex = 0;
|
||||||
|
ret = this.pushStack( ret, name, insert.selector );
|
||||||
|
}
|
||||||
|
tmplItems = appendToTmplItems;
|
||||||
|
appendToTmplItems = null;
|
||||||
|
jQuery.tmpl.complete( tmplItems );
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery.fn.extend({
|
||||||
|
// Use first wrapped element as template markup.
|
||||||
|
// Return wrapped set of template items, obtained by rendering template against data.
|
||||||
|
tmpl: function( data, options, parentItem ) {
|
||||||
|
return jQuery.tmpl( this[0], data, options, parentItem );
|
||||||
|
},
|
||||||
|
|
||||||
|
// Find which rendered template item the first wrapped DOM element belongs to
|
||||||
|
tmplItem: function() {
|
||||||
|
return jQuery.tmplItem( this[0] );
|
||||||
|
},
|
||||||
|
|
||||||
|
// Consider the first wrapped element as a template declaration, and get the compiled template or store it as a named template.
|
||||||
|
template: function( name ) {
|
||||||
|
return jQuery.template( name, this[0] );
|
||||||
|
},
|
||||||
|
|
||||||
|
domManip: function( args, table, callback, options ) {
|
||||||
|
if ( args[0] && jQuery.isArray( args[0] )) {
|
||||||
|
var dmArgs = jQuery.makeArray( arguments ), elems = args[0], elemsLength = elems.length, i = 0, tmplItem;
|
||||||
|
while ( i < elemsLength && !(tmplItem = jQuery.data( elems[i++], "tmplItem" ))) {}
|
||||||
|
if ( tmplItem && cloneIndex ) {
|
||||||
|
dmArgs[2] = function( fragClone ) {
|
||||||
|
// Handler called by oldManip when rendered template has been inserted into DOM.
|
||||||
|
jQuery.tmpl.afterManip( this, fragClone, callback );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
oldManip.apply( this, dmArgs );
|
||||||
|
} else {
|
||||||
|
oldManip.apply( this, arguments );
|
||||||
|
}
|
||||||
|
cloneIndex = 0;
|
||||||
|
if ( !appendToTmplItems ) {
|
||||||
|
jQuery.tmpl.complete( newTmplItems );
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery.extend({
|
||||||
|
// Return wrapped set of template items, obtained by rendering template against data.
|
||||||
|
tmpl: function( tmpl, data, options, parentItem ) {
|
||||||
|
var ret, topLevel = !parentItem;
|
||||||
|
if ( topLevel ) {
|
||||||
|
// This is a top-level tmpl call (not from a nested template using {{tmpl}})
|
||||||
|
parentItem = topTmplItem;
|
||||||
|
tmpl = jQuery.template[tmpl] || jQuery.template( null, tmpl );
|
||||||
|
wrappedItems = {}; // Any wrapped items will be rebuilt, since this is top level
|
||||||
|
} else if ( !tmpl ) {
|
||||||
|
// The template item is already associated with DOM - this is a refresh.
|
||||||
|
// Re-evaluate rendered template for the parentItem
|
||||||
|
tmpl = parentItem.tmpl;
|
||||||
|
newTmplItems[parentItem.key] = parentItem;
|
||||||
|
parentItem.nodes = [];
|
||||||
|
if ( parentItem.wrapped ) {
|
||||||
|
updateWrapped( parentItem, parentItem.wrapped );
|
||||||
|
}
|
||||||
|
// Rebuild, without creating a new template item
|
||||||
|
return jQuery( build( parentItem, null, parentItem.tmpl( jQuery, parentItem ) ));
|
||||||
|
}
|
||||||
|
if ( !tmpl ) {
|
||||||
|
return []; // Could throw...
|
||||||
|
}
|
||||||
|
if ( typeof data === "function" ) {
|
||||||
|
data = data.call( parentItem || {} );
|
||||||
|
}
|
||||||
|
if ( options && options.wrapped ) {
|
||||||
|
updateWrapped( options, options.wrapped );
|
||||||
|
}
|
||||||
|
ret = jQuery.isArray( data ) ?
|
||||||
|
jQuery.map( data, function( dataItem ) {
|
||||||
|
return dataItem ? newTmplItem( options, parentItem, tmpl, dataItem ) : null;
|
||||||
|
}) :
|
||||||
|
[ newTmplItem( options, parentItem, tmpl, data ) ];
|
||||||
|
return topLevel ? jQuery( build( parentItem, null, ret ) ) : ret;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Return rendered template item for an element.
|
||||||
|
tmplItem: function( elem ) {
|
||||||
|
var tmplItem;
|
||||||
|
if ( elem instanceof jQuery ) {
|
||||||
|
elem = elem[0];
|
||||||
|
}
|
||||||
|
while ( elem && elem.nodeType === 1 && !(tmplItem = jQuery.data( elem, "tmplItem" )) && (elem = elem.parentNode) ) {}
|
||||||
|
return tmplItem || topTmplItem;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Set:
|
||||||
|
// Use $.template( name, tmpl ) to cache a named template,
|
||||||
|
// where tmpl is a template string, a script element or a jQuery instance wrapping a script element, etc.
|
||||||
|
// Use $( "selector" ).template( name ) to provide access by name to a script block template declaration.
|
||||||
|
|
||||||
|
// Get:
|
||||||
|
// Use $.template( name ) to access a cached template.
|
||||||
|
// Also $( selectorToScriptBlock ).template(), or $.template( null, templateString )
|
||||||
|
// will return the compiled template, without adding a name reference.
|
||||||
|
// If templateString includes at least one HTML tag, $.template( templateString ) is equivalent
|
||||||
|
// to $.template( null, templateString )
|
||||||
|
template: function( name, tmpl ) {
|
||||||
|
if (tmpl) {
|
||||||
|
// Compile template and associate with name
|
||||||
|
if ( typeof tmpl === "string" ) {
|
||||||
|
// This is an HTML string being passed directly in.
|
||||||
|
tmpl = buildTmplFn( tmpl );
|
||||||
|
} else if ( tmpl instanceof jQuery ) {
|
||||||
|
tmpl = tmpl[0] || {};
|
||||||
|
}
|
||||||
|
if ( tmpl.nodeType ) {
|
||||||
|
// If this is a template block, use cached copy, or generate tmpl function and cache.
|
||||||
|
tmpl = jQuery.data( tmpl, "tmpl" ) || jQuery.data( tmpl, "tmpl", buildTmplFn( tmpl.innerHTML ));
|
||||||
|
// Issue: In IE, if the container element is not a script block, the innerHTML will remove quotes from attribute values whenever the value does not include white space.
|
||||||
|
// This means that foo="${x}" will not work if the value of x includes white space: foo="${x}" -> foo=value of x.
|
||||||
|
// To correct this, include space in tag: foo="${ x }" -> foo="value of x"
|
||||||
|
}
|
||||||
|
return typeof name === "string" ? (jQuery.template[name] = tmpl) : tmpl;
|
||||||
|
}
|
||||||
|
// Return named compiled template
|
||||||
|
return name ? (typeof name !== "string" ? jQuery.template( null, name ):
|
||||||
|
(jQuery.template[name] ||
|
||||||
|
// If not in map, and not containing at least on HTML tag, treat as a selector.
|
||||||
|
// (If integrated with core, use quickExpr.exec)
|
||||||
|
jQuery.template( null, htmlExpr.test( name ) ? name : jQuery( name )))) : null;
|
||||||
|
},
|
||||||
|
|
||||||
|
encode: function( text ) {
|
||||||
|
// Do HTML encoding replacing < > & and ' and " by corresponding entities.
|
||||||
|
return ("" + text).split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery.extend( jQuery.tmpl, {
|
||||||
|
tag: {
|
||||||
|
"tmpl": {
|
||||||
|
_default: { $2: "null" },
|
||||||
|
open: "if($notnull_1){__=__.concat($item.nest($1,$2));}"
|
||||||
|
// tmpl target parameter can be of type function, so use $1, not $1a (so not auto detection of functions)
|
||||||
|
// This means that {{tmpl foo}} treats foo as a template (which IS a function).
|
||||||
|
// Explicit parens can be used if foo is a function that returns a template: {{tmpl foo()}}.
|
||||||
|
},
|
||||||
|
"wrap": {
|
||||||
|
_default: { $2: "null" },
|
||||||
|
open: "$item.calls(__,$1,$2);__=[];",
|
||||||
|
close: "call=$item.calls();__=call._.concat($item.wrap(call,__));"
|
||||||
|
},
|
||||||
|
"each": {
|
||||||
|
_default: { $2: "$index, $value" },
|
||||||
|
open: "if($notnull_1){$.each($1a,function($2){with(this){",
|
||||||
|
close: "}});}"
|
||||||
|
},
|
||||||
|
"if": {
|
||||||
|
open: "if(($notnull_1) && $1a){",
|
||||||
|
close: "}"
|
||||||
|
},
|
||||||
|
"else": {
|
||||||
|
_default: { $1: "true" },
|
||||||
|
open: "}else if(($notnull_1) && $1a){"
|
||||||
|
},
|
||||||
|
"html": {
|
||||||
|
// Unecoded expression evaluation.
|
||||||
|
open: "if($notnull_1){__.push($1a);}"
|
||||||
|
},
|
||||||
|
"=": {
|
||||||
|
// Encoded expression evaluation. Abbreviated form is ${}.
|
||||||
|
_default: { $1: "$data" },
|
||||||
|
open: "if($notnull_1){__.push($.encode($1a));}"
|
||||||
|
},
|
||||||
|
"!": {
|
||||||
|
// Comment tag. Skipped by parser
|
||||||
|
open: ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// This stub can be overridden, e.g. in jquery.tmplPlus for providing rendered events
|
||||||
|
complete: function( items ) {
|
||||||
|
newTmplItems = {};
|
||||||
|
},
|
||||||
|
|
||||||
|
// Call this from code which overrides domManip, or equivalent
|
||||||
|
// Manage cloning/storing template items etc.
|
||||||
|
afterManip: function afterManip( elem, fragClone, callback ) {
|
||||||
|
// Provides cloned fragment ready for fixup prior to and after insertion into DOM
|
||||||
|
var content = fragClone.nodeType === 11 ?
|
||||||
|
jQuery.makeArray(fragClone.childNodes) :
|
||||||
|
fragClone.nodeType === 1 ? [fragClone] : [];
|
||||||
|
|
||||||
|
// Return fragment to original caller (e.g. append) for DOM insertion
|
||||||
|
callback.call( elem, fragClone );
|
||||||
|
|
||||||
|
// Fragment has been inserted:- Add inserted nodes to tmplItem data structure. Replace inserted element annotations by jQuery.data.
|
||||||
|
storeTmplItems( content );
|
||||||
|
cloneIndex++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//========================== Private helper functions, used by code above ==========================
|
||||||
|
|
||||||
|
function build( tmplItem, nested, content ) {
|
||||||
|
// Convert hierarchical content into flat string array
|
||||||
|
// and finally return array of fragments ready for DOM insertion
|
||||||
|
var frag, ret = content ? jQuery.map( content, function( item ) {
|
||||||
|
return (typeof item === "string") ?
|
||||||
|
// Insert template item annotations, to be converted to jQuery.data( "tmplItem" ) when elems are inserted into DOM.
|
||||||
|
(tmplItem.key ? item.replace( /(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g, "$1 " + tmplItmAtt + "=\"" + tmplItem.key + "\" $2" ) : item) :
|
||||||
|
// This is a child template item. Build nested template.
|
||||||
|
build( item, tmplItem, item._ctnt );
|
||||||
|
}) :
|
||||||
|
// If content is not defined, insert tmplItem directly. Not a template item. May be a string, or a string array, e.g. from {{html $item.html()}}.
|
||||||
|
tmplItem;
|
||||||
|
if ( nested ) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// top-level template
|
||||||
|
ret = ret.join("");
|
||||||
|
|
||||||
|
// Support templates which have initial or final text nodes, or consist only of text
|
||||||
|
// Also support HTML entities within the HTML markup.
|
||||||
|
ret.replace( /^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/, function( all, before, middle, after) {
|
||||||
|
frag = jQuery( middle ).get();
|
||||||
|
|
||||||
|
storeTmplItems( frag );
|
||||||
|
if ( before ) {
|
||||||
|
frag = unencode( before ).concat(frag);
|
||||||
|
}
|
||||||
|
if ( after ) {
|
||||||
|
frag = frag.concat(unencode( after ));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return frag ? frag : unencode( ret );
|
||||||
|
}
|
||||||
|
|
||||||
|
function unencode( text ) {
|
||||||
|
// Use createElement, since createTextNode will not render HTML entities correctly
|
||||||
|
var el = document.createElement( "div" );
|
||||||
|
el.innerHTML = text;
|
||||||
|
return jQuery.makeArray(el.childNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate a reusable function that will serve to render a template against data
|
||||||
|
function buildTmplFn( markup ) {
|
||||||
|
return new Function("jQuery","$item",
|
||||||
|
// Use the variable __ to hold a string array while building the compiled template. (See https://github.com/jquery/jquery-tmpl/issues#issue/10).
|
||||||
|
"var $=jQuery,call,__=[],$data=$item.data;" +
|
||||||
|
|
||||||
|
// Introduce the data as local variables using with(){}
|
||||||
|
"with($data){__.push('" +
|
||||||
|
|
||||||
|
// Convert the template into pure JavaScript
|
||||||
|
jQuery.trim(markup)
|
||||||
|
.replace( /([\\'])/g, "\\$1" )
|
||||||
|
.replace( /[\r\t\n]/g, " " )
|
||||||
|
.replace( /\$\{([^\}]*)\}/g, "{{= $1}}" )
|
||||||
|
.replace( /\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
|
||||||
|
function( all, slash, type, fnargs, target, parens, args ) {
|
||||||
|
var tag = jQuery.tmpl.tag[ type ], def, expr, exprAutoFnDetect;
|
||||||
|
if ( !tag ) {
|
||||||
|
throw "Unknown template tag: " + type;
|
||||||
|
}
|
||||||
|
def = tag._default || [];
|
||||||
|
if ( parens && !/\w$/.test(target)) {
|
||||||
|
target += parens;
|
||||||
|
parens = "";
|
||||||
|
}
|
||||||
|
if ( target ) {
|
||||||
|
target = unescape( target );
|
||||||
|
args = args ? ("," + unescape( args ) + ")") : (parens ? ")" : "");
|
||||||
|
// Support for target being things like a.toLowerCase();
|
||||||
|
// In that case don't call with template item as 'this' pointer. Just evaluate...
|
||||||
|
expr = parens ? (target.indexOf(".") > -1 ? target + unescape( parens ) : ("(" + target + ").call($item" + args)) : target;
|
||||||
|
exprAutoFnDetect = parens ? expr : "(typeof(" + target + ")==='function'?(" + target + ").call($item):(" + target + "))";
|
||||||
|
} else {
|
||||||
|
exprAutoFnDetect = expr = def.$1 || "null";
|
||||||
|
}
|
||||||
|
fnargs = unescape( fnargs );
|
||||||
|
return "');" +
|
||||||
|
tag[ slash ? "close" : "open" ]
|
||||||
|
.split( "$notnull_1" ).join( target ? "typeof(" + target + ")!=='undefined' && (" + target + ")!=null" : "true" )
|
||||||
|
.split( "$1a" ).join( exprAutoFnDetect )
|
||||||
|
.split( "$1" ).join( expr )
|
||||||
|
.split( "$2" ).join( fnargs || def.$2 || "" ) +
|
||||||
|
"__.push('";
|
||||||
|
}) +
|
||||||
|
"');}return __;"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function updateWrapped( options, wrapped ) {
|
||||||
|
// Build the wrapped content.
|
||||||
|
options._wrap = build( options, true,
|
||||||
|
// Suport imperative scenario in which options.wrapped can be set to a selector or an HTML string.
|
||||||
|
jQuery.isArray( wrapped ) ? wrapped : [htmlExpr.test( wrapped ) ? wrapped : jQuery( wrapped ).html()]
|
||||||
|
).join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
function unescape( args ) {
|
||||||
|
return args ? args.replace( /\\'/g, "'").replace(/\\\\/g, "\\" ) : null;
|
||||||
|
}
|
||||||
|
function outerHtml( elem ) {
|
||||||
|
var div = document.createElement("div");
|
||||||
|
div.appendChild( elem.cloneNode(true) );
|
||||||
|
return div.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store template items in jQuery.data(), ensuring a unique tmplItem data data structure for each rendered template instance.
|
||||||
|
function storeTmplItems( content ) {
|
||||||
|
var keySuffix = "_" + cloneIndex, elem, elems, newClonedItems = {}, i, l, m;
|
||||||
|
for ( i = 0, l = content.length; i < l; i++ ) {
|
||||||
|
if ( (elem = content[i]).nodeType !== 1 ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
elems = elem.getElementsByTagName("*");
|
||||||
|
for ( m = elems.length - 1; m >= 0; m-- ) {
|
||||||
|
processItemKey( elems[m] );
|
||||||
|
}
|
||||||
|
processItemKey( elem );
|
||||||
|
}
|
||||||
|
function processItemKey( el ) {
|
||||||
|
var pntKey, pntNode = el, pntItem, tmplItem, key;
|
||||||
|
// Ensure that each rendered template inserted into the DOM has its own template item,
|
||||||
|
if ( (key = el.getAttribute( tmplItmAtt ))) {
|
||||||
|
while ( pntNode.parentNode && (pntNode = pntNode.parentNode).nodeType === 1 && !(pntKey = pntNode.getAttribute( tmplItmAtt ))) { }
|
||||||
|
if ( pntKey !== key ) {
|
||||||
|
// The next ancestor with a _tmplitem expando is on a different key than this one.
|
||||||
|
// So this is a top-level element within this template item
|
||||||
|
// Set pntNode to the key of the parentNode, or to 0 if pntNode.parentNode is null, or pntNode is a fragment.
|
||||||
|
pntNode = pntNode.parentNode ? (pntNode.nodeType === 11 ? 0 : (pntNode.getAttribute( tmplItmAtt ) || 0)) : 0;
|
||||||
|
if ( !(tmplItem = newTmplItems[key]) ) {
|
||||||
|
// The item is for wrapped content, and was copied from the temporary parent wrappedItem.
|
||||||
|
tmplItem = wrappedItems[key];
|
||||||
|
tmplItem = newTmplItem( tmplItem, newTmplItems[pntNode]||wrappedItems[pntNode] );
|
||||||
|
tmplItem.key = ++itemKey;
|
||||||
|
newTmplItems[itemKey] = tmplItem;
|
||||||
|
}
|
||||||
|
if ( cloneIndex ) {
|
||||||
|
cloneTmplItem( key );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
el.removeAttribute( tmplItmAtt );
|
||||||
|
} else if ( cloneIndex && (tmplItem = jQuery.data( el, "tmplItem" )) ) {
|
||||||
|
// This was a rendered element, cloned during append or appendTo etc.
|
||||||
|
// TmplItem stored in jQuery data has already been cloned in cloneCopyEvent. We must replace it with a fresh cloned tmplItem.
|
||||||
|
cloneTmplItem( tmplItem.key );
|
||||||
|
newTmplItems[tmplItem.key] = tmplItem;
|
||||||
|
pntNode = jQuery.data( el.parentNode, "tmplItem" );
|
||||||
|
pntNode = pntNode ? pntNode.key : 0;
|
||||||
|
}
|
||||||
|
if ( tmplItem ) {
|
||||||
|
pntItem = tmplItem;
|
||||||
|
// Find the template item of the parent element.
|
||||||
|
// (Using !=, not !==, since pntItem.key is number, and pntNode may be a string)
|
||||||
|
while ( pntItem && pntItem.key != pntNode ) {
|
||||||
|
// Add this element as a top-level node for this rendered template item, as well as for any
|
||||||
|
// ancestor items between this item and the item of its parent element
|
||||||
|
pntItem.nodes.push( el );
|
||||||
|
pntItem = pntItem.parent;
|
||||||
|
}
|
||||||
|
// Delete content built during rendering - reduce API surface area and memory use, and avoid exposing of stale data after rendering...
|
||||||
|
delete tmplItem._ctnt;
|
||||||
|
delete tmplItem._wrap;
|
||||||
|
// Store template item as jQuery data on the element
|
||||||
|
jQuery.data( el, "tmplItem", tmplItem );
|
||||||
|
}
|
||||||
|
function cloneTmplItem( key ) {
|
||||||
|
key = key + keySuffix;
|
||||||
|
tmplItem = newClonedItems[key] =
|
||||||
|
(newClonedItems[key] || newTmplItem( tmplItem, newTmplItems[tmplItem.parent.key + keySuffix] || tmplItem.parent ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- Helper functions for template item ----
|
||||||
|
|
||||||
|
function tiCalls( content, tmpl, data, options ) {
|
||||||
|
if ( !content ) {
|
||||||
|
return stack.pop();
|
||||||
|
}
|
||||||
|
stack.push({ _: content, tmpl: tmpl, item:this, data: data, options: options });
|
||||||
|
}
|
||||||
|
|
||||||
|
function tiNest( tmpl, data, options ) {
|
||||||
|
// nested template, using {{tmpl}} tag
|
||||||
|
return jQuery.tmpl( jQuery.template( tmpl ), data, options, this );
|
||||||
|
}
|
||||||
|
|
||||||
|
function tiWrap( call, wrapped ) {
|
||||||
|
// nested template, using {{wrap}} tag
|
||||||
|
var options = call.options || {};
|
||||||
|
options.wrapped = wrapped;
|
||||||
|
// Apply the template, which may incorporate wrapped content,
|
||||||
|
return jQuery.tmpl( jQuery.template( call.tmpl ), call.data, options, call.item );
|
||||||
|
}
|
||||||
|
|
||||||
|
function tiHtml( filter, textOnly ) {
|
||||||
|
var wrapped = this._wrap;
|
||||||
|
return jQuery.map(
|
||||||
|
jQuery( jQuery.isArray( wrapped ) ? wrapped.join("") : wrapped ).filter( filter || "*" ),
|
||||||
|
function(e) {
|
||||||
|
return textOnly ?
|
||||||
|
e.innerText || e.textContent :
|
||||||
|
e.outerHTML || outerHtml(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function tiUpdate() {
|
||||||
|
var coll = this.nodes;
|
||||||
|
jQuery.tmpl( null, null, null, this).insertBefore( coll[0] );
|
||||||
|
jQuery( coll ).remove();
|
||||||
|
}
|
||||||
|
})( jQuery );
|
1
webfiles/lib/steelseries/scripts/RGraph.common.core.min.js
vendored
Normal file
1
webfiles/lib/steelseries/scripts/RGraph.common.core.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
webfiles/lib/steelseries/scripts/RGraph.rose.min.js
vendored
Normal file
1
webfiles/lib/steelseries/scripts/RGraph.rose.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4390
webfiles/lib/steelseries/scripts/gauges.js
Normal file
4390
webfiles/lib/steelseries/scripts/gauges.js
Normal file
File diff suppressed because it is too large
Load Diff
4
webfiles/lib/steelseries/scripts/language.min.js
vendored
Normal file
4
webfiles/lib/steelseries/scripts/language.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2959
webfiles/lib/steelseries/scripts/src/RGraph.common.core.js
Normal file
2959
webfiles/lib/steelseries/scripts/src/RGraph.common.core.js
Normal file
File diff suppressed because it is too large
Load Diff
1204
webfiles/lib/steelseries/scripts/src/RGraph.rose.js
Normal file
1204
webfiles/lib/steelseries/scripts/src/RGraph.rose.js
Normal file
File diff suppressed because it is too large
Load Diff
2987
webfiles/lib/steelseries/scripts/src/language.js
Normal file
2987
webfiles/lib/steelseries/scripts/src/language.js
Normal file
File diff suppressed because it is too large
Load Diff
6974
webfiles/lib/steelseries/scripts/src/steelseries.js
Normal file
6974
webfiles/lib/steelseries/scripts/src/steelseries.js
Normal file
File diff suppressed because it is too large
Load Diff
25
webfiles/lib/steelseries/scripts/src/steelseries.min.js
vendored
Normal file
25
webfiles/lib/steelseries/scripts/src/steelseries.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
380
webfiles/lib/steelseries/scripts/src/tween.js
Normal file
380
webfiles/lib/steelseries/scripts/src/tween.js
Normal file
|
@ -0,0 +1,380 @@
|
||||||
|
/*!*********************************************************************
|
||||||
|
TERMS OF USE - EASING EQUATIONS
|
||||||
|
Open source under the BSD License.
|
||||||
|
Copyright (c) 2001 Robert Penner
|
||||||
|
JavaScript version copyright (C) 2006 by Philippe Maegerman
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following disclaimer
|
||||||
|
in the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
* Neither the name of the author nor the names of contributors may
|
||||||
|
be used to endorse or promote products derived from this software
|
||||||
|
without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*****************************************/
|
||||||
|
function Delegate() {}
|
||||||
|
Delegate.create = function (o, f) {
|
||||||
|
var a = [], i, l = arguments.length;
|
||||||
|
for (i = 2; i < l; i++) {
|
||||||
|
a[i - 2] = arguments[i];
|
||||||
|
}
|
||||||
|
return function () {
|
||||||
|
var aP = [].concat(arguments, a);
|
||||||
|
f.apply(o, aP);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
object:
|
||||||
|
type:Object
|
||||||
|
The object you want to modify. It can be any object, a visual object that you want to animate ( document.body.style ) or an anymous object ( new Object() ).
|
||||||
|
property:
|
||||||
|
type:String
|
||||||
|
The property that is updated on the target object, it can be empty ('')
|
||||||
|
easing:
|
||||||
|
type:Function
|
||||||
|
The easing that will be applied to motion.
|
||||||
|
start:
|
||||||
|
type:Number
|
||||||
|
Start value
|
||||||
|
end:
|
||||||
|
type:Number
|
||||||
|
End value
|
||||||
|
duration:
|
||||||
|
type:Number
|
||||||
|
Animation duration in seconds
|
||||||
|
suffixe:
|
||||||
|
type:String
|
||||||
|
A string to append to the updated property ('%','pt','em' ...).
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Tween = function (obj, prop, func, begin, finish, duration, suffixe) {
|
||||||
|
this.init(obj, prop, func, begin, finish, duration, suffixe);
|
||||||
|
};
|
||||||
|
var t = Tween.prototype;
|
||||||
|
|
||||||
|
t.obj = {};
|
||||||
|
t.prop = '';
|
||||||
|
t.func = function (t, b, c, d) { return c * t / d + b; };
|
||||||
|
t.begin = 0;
|
||||||
|
t.change = 0;
|
||||||
|
t.prevTime = 0;
|
||||||
|
t.prevPos = 0;
|
||||||
|
t.looping = false;
|
||||||
|
t._duration = 0;
|
||||||
|
t._time = 0;
|
||||||
|
t._pos = 0;
|
||||||
|
t._position = 0;
|
||||||
|
t._startTime = 0;
|
||||||
|
t._finish = 0;
|
||||||
|
t.name = '';
|
||||||
|
t.suffixe = '';
|
||||||
|
t._listeners = [];
|
||||||
|
t.setTime = function (t) {
|
||||||
|
this.prevTime = this._time;
|
||||||
|
if (t > this.getDuration()) {
|
||||||
|
if (this.looping) {
|
||||||
|
this.rewind(t - this._duration);
|
||||||
|
this.update();
|
||||||
|
this.broadcastMessage('onMotionLooped', {target: this, type: 'onMotionLooped'});
|
||||||
|
} else {
|
||||||
|
this._time = this._duration;
|
||||||
|
this.update();
|
||||||
|
this.stop();
|
||||||
|
this.broadcastMessage('onMotionFinished', {target: this, type: 'onMotionFinished'});
|
||||||
|
}
|
||||||
|
} else if (t < 0) {
|
||||||
|
this.rewind();
|
||||||
|
this.update();
|
||||||
|
} else {
|
||||||
|
this._time = t;
|
||||||
|
this.update();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
t.getTime = function () {
|
||||||
|
return this._time;
|
||||||
|
};
|
||||||
|
t.setDuration = function (d) {
|
||||||
|
this._duration = (d === null || d <= 0) ? 100000 : d;
|
||||||
|
};
|
||||||
|
t.getDuration = function () {
|
||||||
|
return this._duration;
|
||||||
|
};
|
||||||
|
t.setPosition = function (p) {
|
||||||
|
this.prevPos = this._pos;
|
||||||
|
var a = this.suffixe !== '' ? this.suffixe : '';
|
||||||
|
this.obj[this.prop] = Math.round(p) + a;
|
||||||
|
this._pos = p;
|
||||||
|
this.broadcastMessage('onMotionChanged', {target: this, type: 'onMotionChanged'});
|
||||||
|
};
|
||||||
|
t.getPosition = function (t) {
|
||||||
|
if (t === undefined) {
|
||||||
|
t = this._time;
|
||||||
|
}
|
||||||
|
return this.func(t, this.begin, this.change, this._duration);
|
||||||
|
};
|
||||||
|
t.setFinish = function (f) {
|
||||||
|
this.change = f - this.begin;
|
||||||
|
};
|
||||||
|
t.getFinish = function () {
|
||||||
|
return this.begin + this.change;
|
||||||
|
};
|
||||||
|
t.init = function (obj, prop, func, begin, finish, duration, suffixe) {
|
||||||
|
if (!arguments.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._listeners = [];
|
||||||
|
this.addListener(this);
|
||||||
|
if (suffixe) {
|
||||||
|
this.suffixe = suffixe;
|
||||||
|
}
|
||||||
|
this.obj = obj;
|
||||||
|
this.prop = prop;
|
||||||
|
this.begin = begin;
|
||||||
|
this._pos = begin;
|
||||||
|
this.setDuration(duration);
|
||||||
|
if (func !== null && func !== '') {
|
||||||
|
this.func = func;
|
||||||
|
}
|
||||||
|
this.setFinish(finish);
|
||||||
|
};
|
||||||
|
t.start = function () {
|
||||||
|
this.rewind();
|
||||||
|
this.startEnterFrame();
|
||||||
|
this.broadcastMessage('onMotionStarted', {target: this, type: 'onMotionStarted'});
|
||||||
|
//alert('in');
|
||||||
|
};
|
||||||
|
t.rewind = function (t) {
|
||||||
|
this.stop();
|
||||||
|
this._time = (t === undefined) ? 0 : t;
|
||||||
|
this.fixTime();
|
||||||
|
this.update();
|
||||||
|
};
|
||||||
|
t.fforward = function () {
|
||||||
|
this._time = this._duration;
|
||||||
|
this.fixTime();
|
||||||
|
this.update();
|
||||||
|
};
|
||||||
|
t.update = function () {
|
||||||
|
this.setPosition(this.getPosition(this._time));
|
||||||
|
};
|
||||||
|
t.startEnterFrame = function () {
|
||||||
|
this.stopEnterFrame();
|
||||||
|
this.isPlaying = true;
|
||||||
|
this.onEnterFrame();
|
||||||
|
};
|
||||||
|
t.onEnterFrame = function () {
|
||||||
|
if (this.isPlaying) {
|
||||||
|
this.nextFrame();
|
||||||
|
// To get real smooth movement you have to set the timeout to 0 instead of 25
|
||||||
|
setTimeout(Delegate.create(this, this.onEnterFrame), 25);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
t.nextFrame = function () {
|
||||||
|
this.setTime((this.getTimer() - this._startTime) / 1000);
|
||||||
|
};
|
||||||
|
t.stop = function () {
|
||||||
|
this.stopEnterFrame();
|
||||||
|
this.broadcastMessage('onMotionStopped', {target: this, type: 'onMotionStopped'});
|
||||||
|
};
|
||||||
|
t.stopEnterFrame = function () {
|
||||||
|
this.isPlaying = false;
|
||||||
|
};
|
||||||
|
t.playing = function () {
|
||||||
|
return this.isPlaying;
|
||||||
|
};
|
||||||
|
t.continueTo = function (finish, duration) {
|
||||||
|
this.begin = this._pos;
|
||||||
|
this.setFinish(finish);
|
||||||
|
if (this._duration !== undefined) {
|
||||||
|
this.setDuration(duration);
|
||||||
|
}
|
||||||
|
this.start();
|
||||||
|
};
|
||||||
|
t.resume = function () {
|
||||||
|
this.fixTime();
|
||||||
|
this.startEnterFrame();
|
||||||
|
this.broadcastMessage('onMotionResumed', {target: this, type: 'onMotionResumed'});
|
||||||
|
};
|
||||||
|
t.yoyo = function () {
|
||||||
|
this.continueTo(this.begin, this._time);
|
||||||
|
};
|
||||||
|
t.addListener = function (o) {
|
||||||
|
this.removeListener(o);
|
||||||
|
return this._listeners.push(o);
|
||||||
|
};
|
||||||
|
t.removeListener = function (o) {
|
||||||
|
var a = this._listeners,
|
||||||
|
i = a.length;
|
||||||
|
while (i--) {
|
||||||
|
if (a[i] === o) {
|
||||||
|
a.splice(i, 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
t.broadcastMessage = function () {
|
||||||
|
var arr = [], i, e, a = this._listeners,
|
||||||
|
l = a.length;
|
||||||
|
for (i = 0; i < arguments.length; i++) {
|
||||||
|
arr.push(arguments[i]);
|
||||||
|
}
|
||||||
|
e = arr.shift();
|
||||||
|
|
||||||
|
for (i = 0; i < l; i++) {
|
||||||
|
if (a[i][e]) {
|
||||||
|
a[i][e].apply(a[i], arr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
t.fixTime = function () {
|
||||||
|
this._startTime = this.getTimer() - this._time * 1000;
|
||||||
|
};
|
||||||
|
t.getTimer = function () {
|
||||||
|
return new Date().getTime() - this._time;
|
||||||
|
};
|
||||||
|
Tween.backEaseIn = function (t, b, c, d, a, p) {
|
||||||
|
var s = 1.70158;
|
||||||
|
return c * (t /= d) * t * ((s + 1) * t - s) + b;
|
||||||
|
};
|
||||||
|
Tween.backEaseOut = function (t, b, c, d, a, p) {
|
||||||
|
var s = 1.70158;
|
||||||
|
return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
|
||||||
|
};
|
||||||
|
Tween.backEaseInOut = function (t, b, c, d, a, p) {
|
||||||
|
var s = 1.70158;
|
||||||
|
if ((t /= d / 2) < 1) {
|
||||||
|
return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
|
||||||
|
}
|
||||||
|
return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
|
||||||
|
};
|
||||||
|
Tween.elasticEaseIn = function (t, b, c, d, a, p) {
|
||||||
|
var s;
|
||||||
|
if (t === 0) {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
if ((t /= d) === 1) {
|
||||||
|
return b + c;
|
||||||
|
}
|
||||||
|
if (!p) {
|
||||||
|
p = d * 0.3;
|
||||||
|
}
|
||||||
|
if (!a || a < Math.abs(c)) {
|
||||||
|
a = c;
|
||||||
|
s = p / 4;
|
||||||
|
} else {
|
||||||
|
s = p / (2 * Math.PI) * Math.asin(c / a);
|
||||||
|
}
|
||||||
|
|
||||||
|
return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
|
||||||
|
|
||||||
|
};
|
||||||
|
Tween.elasticEaseOut = function (t, b, c, d, a, p) {
|
||||||
|
var s;
|
||||||
|
if (t === 0) {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
if ((t /= d) === 1) {
|
||||||
|
return b + c;
|
||||||
|
}
|
||||||
|
if (!p) {
|
||||||
|
p = d * 0.3;
|
||||||
|
}
|
||||||
|
if (!a || a < Math.abs(c)) {
|
||||||
|
a = c;
|
||||||
|
s = p / 4;
|
||||||
|
} else {
|
||||||
|
s = p / (2 * Math.PI) * Math.asin(c / a);
|
||||||
|
}
|
||||||
|
return (a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b);
|
||||||
|
};
|
||||||
|
Tween.elasticEaseInOut = function (t, b, c, d, a, p) {
|
||||||
|
var s;
|
||||||
|
if (t === 0) {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
if ((t /= d / 2) === 2) {
|
||||||
|
return b + c;
|
||||||
|
}
|
||||||
|
if (!p) {
|
||||||
|
p = d * (0.3 * 1.5);
|
||||||
|
}
|
||||||
|
if (!a || a < Math.abs(c)) {
|
||||||
|
a = c;
|
||||||
|
s = p / 4;
|
||||||
|
} else {
|
||||||
|
s = p / (2 * Math.PI) * Math.asin(c / a);
|
||||||
|
}
|
||||||
|
if (t < 1) {
|
||||||
|
return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
|
||||||
|
}
|
||||||
|
return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;
|
||||||
|
};
|
||||||
|
Tween.bounceEaseOut = function (t, b, c, d) {
|
||||||
|
if ((t /= d) < (1 / 2.75)) {
|
||||||
|
return c * (7.5625 * t * t) + b;
|
||||||
|
} else if (t < (2 / 2.75)) {
|
||||||
|
return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;
|
||||||
|
} else if (t < (2.5 / 2.75)) {
|
||||||
|
return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;
|
||||||
|
} else {
|
||||||
|
return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Tween.bounceEaseIn = function (t, b, c, d) {
|
||||||
|
return c - Tween.bounceEaseOut(d - t, 0, c, d) + b;
|
||||||
|
};
|
||||||
|
Tween.bounceEaseInOut = function (t, b, c, d) {
|
||||||
|
if (t < d / 2) {
|
||||||
|
return Tween.bounceEaseIn(t * 2, 0, c, d) * 0.5 + b;
|
||||||
|
} else {
|
||||||
|
return Tween.bounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Tween.strongEaseInOut = function (t, b, c, d) {
|
||||||
|
return c * (t /= d) * t * t * t * t + b;
|
||||||
|
};
|
||||||
|
Tween.regularEaseIn = function (t, b, c, d) {
|
||||||
|
return c * (t /= d) * t + b;
|
||||||
|
};
|
||||||
|
Tween.regularEaseOut = function (t, b, c, d) {
|
||||||
|
return -c * (t /= d) * (t - 2) + b;
|
||||||
|
};
|
||||||
|
Tween.regularEaseInOut = function (t, b, c, d) {
|
||||||
|
if ((t /= d / 2) < 1) {
|
||||||
|
return c / 2 * t * t + b;
|
||||||
|
}
|
||||||
|
return -c / 2 * ((--t) * (t - 2) - 1) + b;
|
||||||
|
};
|
||||||
|
Tween.strongEaseIn = function (t, b, c, d) {
|
||||||
|
return c * (t /= d) * t * t * t * t + b;
|
||||||
|
};
|
||||||
|
Tween.strongEaseOut = function (t, b, c, d) {
|
||||||
|
return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
|
||||||
|
};
|
||||||
|
Tween.strongEaseInOut = function (t, b, c, d) {
|
||||||
|
if ((t /= d / 2) < 1) {
|
||||||
|
return c / 2 * t * t * t * t * t + b;
|
||||||
|
}
|
||||||
|
return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
|
||||||
|
};
|
31
webfiles/lib/steelseries/scripts/src/tween.min.js
vendored
Normal file
31
webfiles/lib/steelseries/scripts/src/tween.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
55
webfiles/lib/steelseries/scripts/steelseries_tween.min.js
vendored
Normal file
55
webfiles/lib/steelseries/scripts/steelseries_tween.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
265
webfiles/monthlyrecord.htm
Normal file
265
webfiles/monthlyrecord.htm
Normal file
|
@ -0,0 +1,265 @@
|
||||||
|
<!--
|
||||||
|
monthlyrecord.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/07/27 09:23:33
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
<script src="js/monthlyrecdata.js"></script>
|
||||||
|
<style>
|
||||||
|
.mx-button {margin-bottom: 5px; border-radius: 4px;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Monthly records<span class="subText"></span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2 class="">Records for <span id="MonthName">January</span></h2>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="width:100%;" >
|
||||||
|
<tr class="w3-theme-d5">
|
||||||
|
<td colspan="3">Temperature and Humidity </td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Temperature</td>
|
||||||
|
<td class="w3-right-align"><span id="TempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="TempHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Temperature</td>
|
||||||
|
<td class="w3-right-align"><span id="TempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="TempLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span id="DewPointH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="DewPointHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span id="DewPointL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="DewPointLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">High Apparent</td>
|
||||||
|
<td class="w3-right-align"><span id="AppTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="AppTempHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">Low Apparent</td>
|
||||||
|
<td class="w3-right-align"><span id="AppTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="AppTempLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">High Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span id="FeelsLikeH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="FeelsLikeHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">Low Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span id="FeelsLikeL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="FeelsLikeLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Wind Chill</td>
|
||||||
|
<td class="w3-right-align"><span id="WChillL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="WChillLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Heat Index</td>
|
||||||
|
<td class="w3-right-align"><span id="HeatIndexH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="HeatIndexHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Minimum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span id="MinTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="MinTempHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Maximum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span id="MaxTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="MaxTempLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Humidity</td>
|
||||||
|
<td class="w3-right-align"><span id="HumH"></span> %</td>
|
||||||
|
<td class=""><span id="HumHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Humidity</td>
|
||||||
|
<td class="w3-right-align"><span id="HumL"></span> %</td>
|
||||||
|
<td class=""><span id="HumLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span id="HighDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="HighDailyTempRangeT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span id="LowDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span id="LowDailyTempRangeT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d4">
|
||||||
|
<td colspan="3">Rainfall</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Rain Rate</td>
|
||||||
|
<td class="w3-right-align"><span id="RainRateH"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td class=""><span id="RainRateHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Hourly Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span id="HourlyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span id="HourlyRainHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High 24 Hour Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span id="Rain24HourH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span id="Rain24HourHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Daily Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span id="DailyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span id="DailyRainHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Monthly Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span id="MonthlyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span id="MonthlyRainHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Dry Period</td>
|
||||||
|
<td class="w3-right-align"><span id="LongestDryPeriod"></span> days</td>
|
||||||
|
<td class=""><span id="LongestDryPeriodT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Wet Period</td>
|
||||||
|
<td class="w3-right-align"><span id="LongestWetPeriod"></span> days</td>
|
||||||
|
<td class=""><span id="LongestWetPeriodT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d3">
|
||||||
|
<td colspan="3">Wind</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Gust</td>
|
||||||
|
<td class="w3-right-align"><span id="GustH"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span id="GustHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Speed <span class="subText">(10 minute average)</span></td>
|
||||||
|
<td class="w3-right-align"><span id="WindH"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span id="WindHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Daily Wind Run</td>
|
||||||
|
<td class="w3-right-align"><span id="WindRunH"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td class=""><span id="WindRunHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d2">
|
||||||
|
<td colspan="3">Pressure <span class="subText">(sea level)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">High Pressure</td>
|
||||||
|
<td class="w3-right-align"><span id="PressH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span id="PressHT"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">Low Pressure</td>
|
||||||
|
<td class="w3-right-align"><span id="PressL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span id="PressLT"></span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="w3-small credits">Page updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-row-padding w3-hide"> <!-- Row 2 of 3/4 width panel (hidden) -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2 class="">Main panel</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>Select the required month below.</p>
|
||||||
|
<div id="btnArray" class="w3-bar-block w3-center">
|
||||||
|
<button id="btnMon0" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeData(0)" aria-pressed="false">January</button>
|
||||||
|
<button id="btnMon1" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onClick="changeData(1)" aria-pressed="false">February</button>
|
||||||
|
<button id="btnMon2" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(2)" aria-pressed="false">March</button>
|
||||||
|
<button id="btnMon3" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(3)" aria-pressed="false">April</button>
|
||||||
|
<button id="btnMon4" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(4)" aria-pressed="false">May</button>
|
||||||
|
<button id="btnMon5" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(5)" aria-pressed="false">June</button>
|
||||||
|
<button id="btnMon6" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(6)" aria-pressed="false">July</button>
|
||||||
|
<button id="btnMon7" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(7)" aria-pressed="false">August</button>
|
||||||
|
<button id="btnMon8" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(8)" aria-pressed="false">September</button>
|
||||||
|
<button id="btnMon9" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(9)" aria-pressed="false">October</button>
|
||||||
|
<button id="btnMon10" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(10)" aria-pressed="false">November</button>
|
||||||
|
<button id="btnMon11" class="w3-bar-item w3-btn w3-theme-l2 w3-theme-hvr at-slim mx-button" onclick="changeData(11)" aria-pressed="false">December</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
130
webfiles/noaareport.htm
Normal file
130
webfiles/noaareport.htm
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
<!--
|
||||||
|
noaareport.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2021/06/10 15:48:11
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3schools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility JavaScript's for all pages. -->
|
||||||
|
<script src="js/noaarpts.js"></script>
|
||||||
|
<style>
|
||||||
|
#year, #month {
|
||||||
|
padding-bottom: 4px;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- START OF PAGE CONTENT Don't change anything above -->
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width">
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<!-- Page Title goes HERE -->
|
||||||
|
<div class="at-flex-between at-flex-items-center">
|
||||||
|
<h1>NOAA Reports<span class="subText"></span></h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<!-- Start of main content panels -->
|
||||||
|
<div class="w3-row site-width w3-theme-light">
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col s12">
|
||||||
|
<div id="NOAAMenu" class="w3-bar">
|
||||||
|
<div class="w3-bar-item at-slim">
|
||||||
|
<select id="year" class="w3-select w3-theme-l4" onchange="getYearRpt(this.value);"></select>
|
||||||
|
</div>
|
||||||
|
<div class="w3-bar-item at-slim">
|
||||||
|
<select id="month" class="w3-select w3-theme-l4" onchange="getMonRpt(this.value);">
|
||||||
|
<option id="opt-year" value="0" style="text-transform: uppercase;">Annual</option>
|
||||||
|
<option id="opt-1" value="1">January</option>
|
||||||
|
<option id="opt-2" value="2">February</option>
|
||||||
|
<option id="opt-3" value="3">March</option>
|
||||||
|
<option id="opt-4" value="4">April</option>
|
||||||
|
<option id="opt-5" value="5">May</option>
|
||||||
|
<option id="opt-6" value="6">June</option>
|
||||||
|
<option id="opt-7" value="7">July</option>
|
||||||
|
<option id="opt-8" value="8">August</option>
|
||||||
|
<option id="opt-9" value="9">September</option>
|
||||||
|
<option id="opt-10" value="10">October</option>
|
||||||
|
<option id="opt-11" value="11">November</option>
|
||||||
|
<option id="opt-12" value="12">December</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width panel on all screens -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<!-- Panel title here -->
|
||||||
|
<!-- <h3><span id="RptTitle"></span></h3> -->
|
||||||
|
<!-- Panel content goes here -->
|
||||||
|
<pre class="w3-responsive" style="min-height:500px;"><span id="noaareport">Loading report...</span></pre>
|
||||||
|
<p class="w3-small">Page data updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Sidebar -->
|
||||||
|
<div class="w3-col l3 m12">
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<!-- First panel of sidebar -->
|
||||||
|
<div class="w3-col l12"> <!-- Full width of sidebar -->
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<!-- Sidebar content here -->
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<!-- You can remove the above line if you wish -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<!-- CHANGE NOTHING BELOW HERE -->
|
||||||
|
<!-- Footer -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
240
webfiles/record.htm
Normal file
240
webfiles/record.htm
Normal file
|
@ -0,0 +1,240 @@
|
||||||
|
<!--
|
||||||
|
record.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/07/27 10:25:28
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Records Since <span data-cmxdata="recordsbegandate"></span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2 class="">Records</h2>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="width:100%;" >
|
||||||
|
<tr class="w3-theme-d5">
|
||||||
|
<td colspan="3">Temperature and Humidity </td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="tempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TtempH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="tempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TtempL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="dewpointH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TdewpointH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="dewpointL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TdewpointL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">High Apparent</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="apptempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TapptempH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">Low Apparent</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="apptempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TapptempL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">High Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="feelslikeH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TfeelslikeH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">Low Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="feelslikeL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TfeelslikeL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Wind Chill</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="wchillH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TwchillH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Heat Index</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="heatindexH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TheatindexH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Minimum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="mintempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TmintempH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Maximum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="maxtempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TmaxtempL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Humidity</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="humH"></span> %</td>
|
||||||
|
<td class=""><span data-cmxdata="ThumH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Humidity </td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="humL"></span> %</td>
|
||||||
|
<td class=""><span data-cmxdata="ThumL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="HighDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="THighDailyTempRange"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="LowDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TLowDailyTempRange"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d4">
|
||||||
|
<td colspan="3">Rainfall</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Rain Rate</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="rrateM"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td class=""><span data-cmxdata="TrrateM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Hourly Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="rfallhH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TrfallhH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High 24 Hour Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="r24hourH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="Tr24hourH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Daily Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="rfallH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TrfallH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Monthly Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="rfallmH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TrfallmH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Dry Period</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="LongestDryPeriod"></span> days</td>
|
||||||
|
<td class=""><span data-cmxdata="TLongestDryPeriod"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Wet Period</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="LongestWetPeriod"></span> days</td>
|
||||||
|
<td class=""><span data-cmxdata="TLongestWetPeriod"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d3">
|
||||||
|
<td colspan="3">Wind</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Gust</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="gustM"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TgustM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Speed <span class="subText">(10 minute average)</span></td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="wspeedH"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TwspeedH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Daily Wind Run</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="windrunH"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TwindrunH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d2">
|
||||||
|
<td colspan="3">Pressure <span class="subText">(sea level)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">High Pressure</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="pressH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TpressH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">Low Pressure</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="pressL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="TpressL"></span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="w3-small credits">Page updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>Records began on <span data-cmxdata="recordsbegandate"></span>. Here are the extremes recorded since then.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
137
webfiles/selectachart.htm
Normal file
137
webfiles/selectachart.htm
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
<!--
|
||||||
|
selectachart.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2023/02/10 14:48:11
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
<style>
|
||||||
|
#chartcontainer {
|
||||||
|
min-height: 550px;
|
||||||
|
margin-top:16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.graphs-width {
|
||||||
|
max-width:1250px;
|
||||||
|
margin: auto
|
||||||
|
}
|
||||||
|
.narrow-width {
|
||||||
|
max-width: 500px;
|
||||||
|
}
|
||||||
|
.select-value {
|
||||||
|
width:75%;
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
.select-color {
|
||||||
|
width:20%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of main content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Charts based on data you select<span class="subText"></span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- First Row -->
|
||||||
|
<div class="w3-col s12"> <!-- Column of first row -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<figure>
|
||||||
|
<div id="chartcontainer"></div>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of first column of first row -->
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- Start of second row -->
|
||||||
|
<div class="w3-col s12">
|
||||||
|
<div class="w3-center">
|
||||||
|
<!-- Selector buttons -->
|
||||||
|
<div class="at-flex-between" style="flex-wrap:wrap"> <!-- Main flex container: between forces content left & right -->
|
||||||
|
<div class="at-flex-justify" style="max-width:550px;flex-wrap:wrap;flex:2"> <!-- Left bar for selectors -->
|
||||||
|
<div class="" style="max-width:170px;min-height:2.5em;">
|
||||||
|
<select class="w3-select select-value" name="data0" id="data0" onchange="procDataSelect(this)"></select>
|
||||||
|
<select class="w3-select select-color" name="colour0" id="colour0" onchange="updateColour(this)"></select>
|
||||||
|
</div>
|
||||||
|
<div class="" style="max-width:170px;min-height:2.5em;">
|
||||||
|
<select class="w3-select select-value" name="data1" id="data1" onchange="procDataSelect(this)"></select>
|
||||||
|
<select class="w3-select select-color" name="colour1" id="colour1" onchange="updateColour(this)"></select>
|
||||||
|
</div>
|
||||||
|
<div class="" style="max-width:170px;min-height:2.5em;">
|
||||||
|
<select class="w3-select select-value" name="data2" id="data2" onchange="procDataSelect(this)"></select>
|
||||||
|
<select class="w3-select select-color" name="colour2" id="colour2" onchange="updateColour(this)"></select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="at-flex-justify" style="max-width:550px;flex-wrap:wrap;flex:2"> <!-- Right bar for selectors -->
|
||||||
|
<div class="" style="max-width:170px;min-height:2.5em;">
|
||||||
|
<select class="w3-select select-value" name="data3" id="data3" onchange="procDataSelect(this)"></select>
|
||||||
|
<select class="w3-select select-color" name="colour3" id="colour3" onchange="updateColour(this)"></select>
|
||||||
|
</div>
|
||||||
|
<div class="" style="max-width:170px;min-height:2.5em;">
|
||||||
|
<select class="w3-select select-value" name="data4" id="data4" onchange="procDataSelect(this)"></select>
|
||||||
|
<select class="w3-select select-color" name="colour4" id="colour4" onchange="updateColour(this)"></select>
|
||||||
|
</div>
|
||||||
|
<div class="" style="max-width:170px;min-height:2.5em;">
|
||||||
|
<select class="w3-select select-value" name="data5" id="data5" onchange="procDataSelect(this)"></select>
|
||||||
|
<select class="w3-select select-color" name="colour5" id="colour5" onchange="updateColour(this)"></select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-panel">Click on a button to display the corresponding chart. Mouse over the chart to see the values at any given time.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of first column of second row -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="https://code.highcharts.com/stock/10.3.3/highstock.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/stock/10.3.3/modules/exporting.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/export-data.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/accessibility.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/boost.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/themes/grid.js"></script>
|
||||||
|
<script src="js/selectachart.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
235
webfiles/thismonth.htm
Normal file
235
webfiles/thismonth.htm
Normal file
|
@ -0,0 +1,235 @@
|
||||||
|
<!--
|
||||||
|
thismonth.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/07/27 09:16:14
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1><span data-cmxdata="monthname"></span> highs & lows</h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2 class=""><span data-cmxdata="monthname"></span> <span data-cmxdata="year"></span> records</h2>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="width:100%;">
|
||||||
|
<tr class="w3-theme-d5">
|
||||||
|
<td colspan="3">Temperature and Humidity </td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthTempHT"></span> on <span data-cmxdata="MonthTempHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthTempLT"></span> on <span data-cmxdata="MonthTempLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthDewPointH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthDewPointHT"></span> on <span data-cmxdata="MonthDewPointHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthDewPointL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthDewPointLT"></span> on <span data-cmxdata="MonthDewPointLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">High Apparent</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthAppTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthAppTempHT"></span> on <span data-cmxdata="MonthAppTempHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">Low Apparent</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthAppTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthAppTempLT"></span> on <span data-cmxdata="MonthAppTempLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">High Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthFeelsLikeH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthFeelsLikeHT"></span> on <span data-cmxdata="MonthFeelsLikeHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">Low Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthFeelsLikeL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthFeelsLikeLT"></span> on <span data-cmxdata="MonthFeelsLikeLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Wind Chill</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthWChillL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthWChillLT"></span> on <span data-cmxdata="MonthWChillLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Heat Index</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthHeatIndexH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthHeatIndexHT"></span> on <span data-cmxdata="MonthHeatIndexHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Minimum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthMinTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthMinTempHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Maximum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthMaxTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthMaxTempLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Humidity</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthHumH"></span> %</td>
|
||||||
|
<td class=""><span data-cmxdata="MonthHumHT"></span> on <span data-cmxdata="MonthHumHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Humidity </td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthHumL"></span> %</td>
|
||||||
|
<td class=""><span data-cmxdata="MonthHumLT"></span> on <span data-cmxdata="MonthHumLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthHighDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthHighDailyTempRangeD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthLowDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthLowDailyTempRangeD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d4">
|
||||||
|
<td colspan="3">Rainfall</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Rain Rate</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthRainRateH"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td class=""><span data-cmxdata="MonthRainRateHT"></span> on <span data-cmxdata="MonthRainRateHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Hourly Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthHourlyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthHourlyRainHT"></span> on <span data-cmxdata="MonthHourlyRainHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High 24 Hour Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthRain24HourH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthRain24HourHT"></span> on <span data-cmxdata="MonthRain24HourHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Daily Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthDailyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthDailyRainHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Dry Period</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthLongestDryPeriod"></span> days</td>
|
||||||
|
<td class="">to <span data-cmxdata="MonthLongestDryPeriodD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Wet Period</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthLongestWetPeriod"></span> days</td>
|
||||||
|
<td class="">to <span data-cmxdata="MonthLongestWetPeriodD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d3">
|
||||||
|
<td colspan="3">Wind</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Gust</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthGustH"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthGustHT"></span> on <span data-cmxdata="MonthGustHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Speed <span class="subText">(10 minute average)</span></td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthWindH"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthWindHT"></span> on <span data-cmxdata="MonthWindHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Daily Wind Run</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthWindRunH"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthWindRunHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d2">
|
||||||
|
<td colspan="3">Pressure <span class="subText">(sea level)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">High Pressure</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthPressH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthPressHT"></span> on <span data-cmxdata="MonthPressHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">Low Pressure</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="MonthPressL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="MonthPressLT"></span> on <span data-cmxdata="MonthPressLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="w3-small">Page data updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>The high and low records for the month of <span data-cmxdata="monthname"></span> <span data-cmxdata="year"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
240
webfiles/thisyear.htm
Normal file
240
webfiles/thisyear.htm
Normal file
|
@ -0,0 +1,240 @@
|
||||||
|
<!--
|
||||||
|
thisyear.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/07/27 09:19:30
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Records for this year <span class="subText"><span data-cmxdata="year"></span></span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2 class="">Records for <span data-cmxdata="year"></span></h2>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="width:100%;">
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" class="w3-theme-d5">Temperature and Humidity </td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearTempHT"></span> on <span data-cmxdata="YearTempHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearTempLT"></span> on <span data-cmxdata="YearTempLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearDewPointH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearDewPointHT"></span> on <span data-cmxdata="YearDewPointHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Dew Point</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearDewPointL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearDewPointLT"></span> on <span data-cmxdata="YearDewPointLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">High Apparent</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearAppTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearAppTempHT"></span> on <span data-cmxdata="YearAppTempHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td class="">Low Apparent</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearAppTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearAppTempLT"></span> on <span data-cmxdata="YearAppTempLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">High Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearFeelsLikeH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearFeelsLikeHT"></span> on <span data-cmxdata="YearFeelsLikeHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td class="">Low Feels Like</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearFeelsLikeL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearFeelsLikeLT"></span> on <span data-cmxdata="YearFeelsLikeLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Wind Chill</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearWChillL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearWChillLT"></span> on <span data-cmxdata="YearWChillLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Heat Index</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearHeatIndexH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearHeatIndexHT"></span> on <span data-cmxdata="YearHeatIndexHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Minimum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearMinTempH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearMinTempHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Maximum Temperature</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearMaxTempL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearMaxTempLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Humidity</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearHumH"></span> %</td>
|
||||||
|
<td class=""><span data-cmxdata="YearHumHT"></span> on <span data-cmxdata="YearHumHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Humidity </td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearHumL"></span> %</td>
|
||||||
|
<td class=""><span data-cmxdata="YearHumLT"></span> on <span data-cmxdata="YearHumLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">High Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearHighDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearHighDailyTempRangeD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td class="">Low Daily Range</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearLowDailyTempRange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearLowDailyTempRangeD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d4">
|
||||||
|
<td colspan="3">Rainfall</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Rain Rate</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearRainRateH"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td class=""><span data-cmxdata="YearRainRateHT"></span> on <span data-cmxdata="YearRainRateHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Hourly Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearHourlyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearHourlyRainHT"></span> on <span data-cmxdata="YearHourlyRainHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High 24 Hour Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearRain24HourH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearRain24HourHT"></span> on <span data-cmxdata="YearRain24HourHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Daily Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearDailyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearDailyRainHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">High Monthly Rainfall</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearMonthlyRainH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearMonthlyRainHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Dry Period</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearLongestDryPeriod"></span> days</td>
|
||||||
|
<td class="">to <span data-cmxdata="YearLongestDryPeriodD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td class="">Longest Wet Period</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearLongestWetPeriod"></span> days</td>
|
||||||
|
<td class="">to <span data-cmxdata="YearLongestWetPeriodD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d3">
|
||||||
|
<td colspan="3">Wind</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Gust</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearGustH"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearGustHT"></span> on <span data-cmxdata="YearGustHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Wind Speed <span class="subText">(10-minute Average)</span></td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearWindH"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearWindHT"></span> on <span data-cmxdata="YearWindHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td class="">High Daily Wind Run</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearWindRunH"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearWindRunHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d2">
|
||||||
|
<td colspan="3">Pressure <span class="subText">(sea level)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">High Pressure</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearPressH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearPressHT"></span> on <span data-cmxdata="YearPressHD"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td class="">Low Pressure</td>
|
||||||
|
<td class="w3-right-align"><span data-cmxdata="YearPressL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td class=""><span data-cmxdata="YearPressLT"></span> on <span data-cmxdata="YearPressLD"></span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="w3-small">Page data updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>The high and low records for <span data-cmxdata="year"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
239
webfiles/today.htm
Normal file
239
webfiles/today.htm
Normal file
|
@ -0,0 +1,239 @@
|
||||||
|
<!--
|
||||||
|
today.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/07/27 10:11:12
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Today <span class="subText"><span data-cmxdata="date"></span></span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2>Today's data</h2>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="width:100%">
|
||||||
|
<tbody>
|
||||||
|
<tr class="w3-theme-d5">
|
||||||
|
<td colspan="3">Temperature and Humidity</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Temperature</td>
|
||||||
|
<td><span data-cmxdata="tempTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TtempTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Temperature</td>
|
||||||
|
<td><span data-cmxdata="tempTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TtempTL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Temperature Range</td>
|
||||||
|
<td><span data-cmxdata="temprange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td>High Apparent Temperature</td>
|
||||||
|
<td><span data-cmxdata="apptempTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TapptempTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td>Low Apparent Temperature</td>
|
||||||
|
<td><span data-cmxdata="apptempTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TapptempTL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td>High Feels Like</td>
|
||||||
|
<td><span data-cmxdata="feelslikeTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TfeelslikeTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td>Low Feels Like</td>
|
||||||
|
<td><span data-cmxdata="feelslikeTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TfeelslikeTL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Wind Chill</td>
|
||||||
|
<td><span data-cmxdata="wchillTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TwchillTL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Heat Index</td>
|
||||||
|
<td><span data-cmxdata="heatindexTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TheatindexTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Humidity</td>
|
||||||
|
<td><span data-cmxdata="humTH"></span> %</td>
|
||||||
|
<td>at <span data-cmxdata="ThumTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Humidity</td>
|
||||||
|
<td><span data-cmxdata="humTL"></span> %</td>
|
||||||
|
<td>at <span data-cmxdata="ThumTL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d4">
|
||||||
|
<td colspan="3">Rainfall</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Today</td>
|
||||||
|
<td><span data-cmxdata="rfall"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Rate Max</td>
|
||||||
|
<td><span data-cmxdata="rrateTM"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td>at <span data-cmxdata="TrrateTM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>High Hourly Rainfall</td>
|
||||||
|
<td><span data-cmxdata="hourlyrainTH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="ThourlyrainTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>High 24 Hour Rainfall</td>
|
||||||
|
<td><span data-cmxdata="rain24hourTH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="Train24hourTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Days Since Last Dry Day</td>
|
||||||
|
<td><span data-cmxdata="ConsecutiveRainDays"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Days Since It Last Rained</td>
|
||||||
|
<td><span data-cmxdata="ConsecutiveDryDays"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d3">
|
||||||
|
<td colspan="3">Wind</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>High Gust</td>
|
||||||
|
<td><span data-cmxdata="wgustTM"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TwgustTM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>High Speed <span class="subText">(10 minute average)</span></td>
|
||||||
|
<td><span data-cmxdata="windTM"></span> <span data-cmxdata="windunit"></span> (<span data-cmxdata="Tbeaufort"></span>)</td>
|
||||||
|
<td>at <span data-cmxdata="TwindTM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Wind Run</td>
|
||||||
|
<td><span data-cmxdata="windrun"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Dominant Direction</td>
|
||||||
|
<td><span data-cmxdata="domwindbearing"></span>° <span data-cmxdata="domwinddir"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d2">
|
||||||
|
<td colspan="3">Pressure <span class="subText">(sea level)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td>High Pressure</td>
|
||||||
|
<td><span data-cmxdata="pressTH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TpressTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td>Low Pressure</td>
|
||||||
|
<td><span data-cmxdata="pressTL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TpressTL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d1 w3-hide" data-cmx-solar data-cmx-uv>
|
||||||
|
<td colspan="3" class="w3-theme-d1">Solar</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-solar>
|
||||||
|
<td>High Solar Radiation</td>
|
||||||
|
<td><span data-cmxdata="solarTH"></span> W/m<sup>2</sup></td>
|
||||||
|
<td>at <span data-cmxdata="TsolarTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-solar>
|
||||||
|
<td>Hours of Sunshine</td>
|
||||||
|
<td><span data-cmxdata="SunshineHours"></span> hrs</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-uv>
|
||||||
|
<td>High UV Index</td>
|
||||||
|
<td><span data-cmxdata="UVTH"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TUVTH"></span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p class="w3-small">Page data updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 screen width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12"> <!-- Full width of sidebar -->
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>This page shows the highs, lows and current values for today.<br>
|
||||||
|
This page is updated every <span data-cmxdata="interval"></span> minutes. The meteorological day used at this station ends at
|
||||||
|
<span data-cmxdata="rollovertime"></span>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<!-- Footer -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
283
webfiles/todayyest.htm
Normal file
283
webfiles/todayyest.htm
Normal file
|
@ -0,0 +1,283 @@
|
||||||
|
<!--
|
||||||
|
todayT.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/10/15 11:15:18
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX - Today vs Yesterday</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between at-flex-items-center">
|
||||||
|
<img src="images/CumulusMX-Logo.png" alt="CumulusmX Logo" class="w3-image logo"/>
|
||||||
|
<div class="w3-right-align statusPanel">
|
||||||
|
<h5 class="location w3-hide-small">Latitude: <span data-cmxdata="latitude"></span><span class="at-divider">|</span>Longitude: <span data-cmxdata="longitude"></span><span class="at-divider">|</span>Altitude: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
<h6 class="location w3-hide-medium w3-hide-large">Lat:<span data-cmxdata="latitude"></span><span class="at-divider">|</span>Lon:<span data-cmxdata="longitude"></span><span class="at-divider">|</span>Alt:<span data-cmxdata="altitude"></span></h6>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Today vs Yesterday <span class="subText"> (<span data-cmxdata="yesterday"></span>)</span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2>Today and Yesterday's data</h2>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="width:100%">
|
||||||
|
<tbody>
|
||||||
|
<tr class="w3-theme-d5">
|
||||||
|
<th style="width:50%">Temperature and Humidity</th>
|
||||||
|
<th style="width:10%">Today</th>
|
||||||
|
<th style="width:15%"></th>
|
||||||
|
<th style="width:10%">Yesterday</th>
|
||||||
|
<th style="width:15%"></th>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Temperature</td>
|
||||||
|
<td><span data-cmxdata="tempTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TtempTH"></span></td>
|
||||||
|
<td><span data-cmxdata="tempYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TtempYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Temperature</td>
|
||||||
|
<td><span data-cmxdata="tempTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TtempTL"></span></td>
|
||||||
|
<td><span data-cmxdata="tempYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TtempYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Temperature Range</td>
|
||||||
|
<td><span data-cmxdata="temprange"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
<td><span data-cmxdata="temprangeY"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td>High Apparent<span class="w3-hide-medium w3-hide-small"> Temperature</span></td>
|
||||||
|
<td><span data-cmxdata="apptempTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TapptempTH"></span></td>
|
||||||
|
<td><span data-cmxdata="apptempYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TapptempYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td>Low Apparent<span class="w3-hide-medium w3-hide-small"> Temperature</span></td>
|
||||||
|
<td><span data-cmxdata="apptempTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TapptempTL"></span></td>
|
||||||
|
<td><span data-cmxdata="apptempYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TapptempYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td>High Feels Like</td>
|
||||||
|
<td><span data-cmxdata="feelslikeTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TfeelslikeTH"></span></td>
|
||||||
|
<td><span data-cmxdata="feelslikeYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TfeelslikeYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td>Low Feels Like</td>
|
||||||
|
<td><span data-cmxdata="feelslikeTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TfeelslikeTL"></span></td>
|
||||||
|
<td><span data-cmxdata="feelslikeYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TfeelslikeYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Wind Chill</td>
|
||||||
|
<td><span data-cmxdata="wchillTL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TwchillTL"></span></td>
|
||||||
|
<td><span data-cmxdata="wchillYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TwchillYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Heat Index</td>
|
||||||
|
<td><span data-cmxdata="heatindexTH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TheatindexTH"></span></td>
|
||||||
|
<td><span data-cmxdata="heatindexYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TheatindexYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Humidity</td>
|
||||||
|
<td><span data-cmxdata="humTH"></span> %</td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </spaw3-hide-medium w3-hide-smalln><span data-cmxdata="ThumTH"></span></td>
|
||||||
|
<td><span data-cmxdata="humYH"></span> %</td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="ThumYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Humidity</td>
|
||||||
|
<td><span data-cmxdata="humTL"></span> %</td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="ThumTL"></span></td>
|
||||||
|
<td><span data-cmxdata="humYL"></span> %</td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="ThumYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d4">
|
||||||
|
<td>Rainfall</td>
|
||||||
|
<td colspan="2">Today</td>
|
||||||
|
<td colspan="2">Yesterday</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall</td>
|
||||||
|
<td><span data-cmxdata="rfall"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
<td><span data-cmxdata="rfallY"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Rate<span class="w3-hide-medium w3-hide-small"> Max</span></td>
|
||||||
|
<td><span data-cmxdata="rrateTM"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TrrateTM"></span></td>
|
||||||
|
<td><span data-cmxdata="rrateYM"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TrrateYM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">High </span>Hourly Rainfall</td>
|
||||||
|
<td><span data-cmxdata="hourlyrainTH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="ThourlyrainTH"></span></td>
|
||||||
|
<td><span data-cmxdata="hourlyrainYH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="ThourlyrainYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">High </span>24 Hour Rainfall</td>
|
||||||
|
<td><span data-cmxdata="rain24hourTH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="Train24hourTH"></span></td>
|
||||||
|
<td><span data-cmxdata="rain24hourYH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="Train24hourYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d3">
|
||||||
|
<td>Wind</td>
|
||||||
|
<td colspan="2">Today</td>
|
||||||
|
<td colspan="2">Yesterday</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Highest Gust</td>
|
||||||
|
<td><span data-cmxdata="wgustTM"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TwgustTM"></span></td>
|
||||||
|
<td><span data-cmxdata="wgustYM"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TwgustYM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Highest Avg Speed</td>
|
||||||
|
<td><span data-cmxdata="windTM"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TwindTM"></span></td>
|
||||||
|
<td><span data-cmxdata="windYM"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TwindYM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Wind Run</td>
|
||||||
|
<td><span data-cmxdata="windrun"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
<td><span data-cmxdata="windrunY"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Dominant Direction</td>
|
||||||
|
<td><span data-cmxdata="domwindbearing"></span>° <span data-cmxdata="domwinddir"></span></td>
|
||||||
|
<td></td>
|
||||||
|
<td><span data-cmxdata="domwindbearingY"></span>° <span data-cmxdata="domwinddirY"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d2">
|
||||||
|
<td>Pressure (sea level)</td>
|
||||||
|
<td colspan="2">Today</td>
|
||||||
|
<td colspan="2">Yesterday</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td>High Pressure</td>
|
||||||
|
<td><span data-cmxdata="pressTH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TpressTH"></span></td>
|
||||||
|
<td><span data-cmxdata="pressYH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TpressYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td>Low Pressure</td>
|
||||||
|
<td><span data-cmxdata="pressTL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TpressTL"></span></td>
|
||||||
|
<td><span data-cmxdata="pressYL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TpressYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d1 w3-hide" data-cmx-solar>
|
||||||
|
<td>Solar</td>
|
||||||
|
<td colspan="2">Today</td>
|
||||||
|
<td colspan="2">Yesterday</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-solar>
|
||||||
|
<td>High Solar Radiation</td>
|
||||||
|
<td><span data-cmxdata="solarTH"></span> W/m<sup>2</sup></td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TsolarTH"></span></td>
|
||||||
|
<td><span data-cmxdata="solarYH"></span> W/m²</td>
|
||||||
|
<td><span class="w3-hide-medium w3-hide-small">at </span><span data-cmxdata="TsolarYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-solar>
|
||||||
|
<td>Hours of Sunshine</td>
|
||||||
|
<td><span data-cmxdata="SunshineHours"></span> hrs</td>
|
||||||
|
<td></td>
|
||||||
|
<td><span data-cmxdata="YSunshineHours"></span> hrs</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p class="w3-small">Page data updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 screen width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12"> <!-- Full width of sidebar -->
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>This page shows the highs, lows and current values for today and yesterday.<br>
|
||||||
|
This page is updated every <span data-cmxdata="interval"></span> minutes. The meteorological day used <span class="w3-hide-medium w3-hide-small">at </span>this station ends at
|
||||||
|
<span data-cmxdata="rollovertime"></span>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<!-- Footer -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
125
webfiles/trends.htm
Normal file
125
webfiles/trends.htm
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
<!--
|
||||||
|
trends.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2023/03/16 09:46:57
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
NOTE: Once uploaded this page does not need to be uploaded again unless edited.
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3schools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#chartcontainer {
|
||||||
|
min-height: 550px;
|
||||||
|
margin-top:16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.mx-button {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.graphs-width {
|
||||||
|
max-width:1250px;
|
||||||
|
margin: auto
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of main content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Trends</h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- First Row -->
|
||||||
|
<div class="w3-col s12"> <!-- First column of first row -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<figure>
|
||||||
|
<div id="chartcontainer"></div>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of first column of first row -->
|
||||||
|
</div>
|
||||||
|
<div class="w3-row-padding w3-theme-light graphs-width"> <!-- Second row -->
|
||||||
|
<div class="w3-col s12">
|
||||||
|
<div class="w3-cardX w3-panelX w3-center">
|
||||||
|
<div class="w3-bar w3-center">
|
||||||
|
<select id="mySelect" aria-label="select data type for graph" class="w3-bar-item w3-select w3-theme-l2 at-slim">
|
||||||
|
<option value="temp" selected>Temperature</option>
|
||||||
|
<option value="dailytemp">Daily Temperature</option>
|
||||||
|
<option value="press">Pressure</option>
|
||||||
|
<option value="wind">Wind Speed</option>
|
||||||
|
<option value="windDir">Wind Direction</option>
|
||||||
|
<option value="humidity">Humidity</option>
|
||||||
|
<option value="rain">Rainfall</option>
|
||||||
|
<option value="dailyrain">Daily Rain</option>
|
||||||
|
<option value="solar">Solar</option>
|
||||||
|
<option value="sunhours">Sunshine Hours</option>
|
||||||
|
<option value="airquality">Air Quality</option>
|
||||||
|
<option value="extratemp">Extra Temperature</option>
|
||||||
|
<option value="extrahum">Extra Humidity</option>
|
||||||
|
<option value="extradew">Extra Dew Point</option>
|
||||||
|
<option value="soiltemp">Soil Temperature</option>
|
||||||
|
<option value="soilmoist">Soil Moisture</option>
|
||||||
|
<option value="leafwet">Leaf Wetness</option>
|
||||||
|
<option value="usertemp">User Temperature</option>
|
||||||
|
<option value="co2">CO₂ Sensor</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of row -->
|
||||||
|
</div> <!-- End of Content -->
|
||||||
|
<div class="w3-row-padding"></div>
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="https://code.highcharts.com/stock/10.3.3/highstock.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/stock/10.3.3/modules/exporting.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/export-data.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/accessibility.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/modules/boost.js"></script>
|
||||||
|
<script src="https://code.highcharts.com/10.3.3/themes/grid.js"></script>
|
||||||
|
<script src="js/cumuluscharts.js"></script> <!-- Script needed to run charts -->
|
||||||
|
</body>
|
||||||
|
</html>
|
364
webfiles/upload.php
Normal file
364
webfiles/upload.php
Normal file
|
@ -0,0 +1,364 @@
|
||||||
|
<?php
|
||||||
|
// Last modified: 2023/03/23 11:10:44
|
||||||
|
|
||||||
|
/*
|
||||||
|
******** PHP Upload script for Cumulus MX ********
|
||||||
|
|
||||||
|
Use as an alternative to FTP/SFTP upload of data
|
||||||
|
|
||||||
|
Mark Crossley - 2023
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// *** YOU NEED TO CHANGE THIS VALUE ***
|
||||||
|
// Our signature secret
|
||||||
|
$secret = 'change_this_to_the_value_in_CMX';
|
||||||
|
|
||||||
|
// limitPath: restricts the upload script to placing files in the same folder structure as the script resides
|
||||||
|
// That is you cannot specify something like /etc/init.d/sudo as a filename
|
||||||
|
// Setting this to false allows the script to attempt to write anywhere in your filesystem that it has permission
|
||||||
|
$limitPath = true;
|
||||||
|
|
||||||
|
// logs additional information to the reponses sent back to CMX, do not enable unless asked
|
||||||
|
$debug = false;
|
||||||
|
|
||||||
|
|
||||||
|
// *****************************************
|
||||||
|
// *** DO NOT CHANGE ANYTHING BELOW HERE ***
|
||||||
|
// *****************************************
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
if ($secret === 'change_this_to_the_value_in_CMX') {
|
||||||
|
exitCode(500, 'You must change the default secret');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($debug) {
|
||||||
|
$headers = getallheaders();
|
||||||
|
foreach($headers as $key=>$val){
|
||||||
|
echo "$key: $val\n";
|
||||||
|
}
|
||||||
|
echo 'CWD = '.getcwd()."\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// first check for GET/POST
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||||
|
// used for testing the compression response
|
||||||
|
?>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
Welcome to upload.php<br>
|
||||||
|
<?php
|
||||||
|
echo str_repeat("xx xx", 1000), "<br>"
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<?php
|
||||||
|
exit;
|
||||||
|
} elseif ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
||||||
|
exitCode(500, 'Error: Must use POST method');
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
// Get all the mandatory data we need from the POST message
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
|
||||||
|
// We need a timestamp to check the signature and validity
|
||||||
|
$receivedTime = $_SERVER['REQUEST_TIME'];
|
||||||
|
if (isset($_SERVER['HTTP_TS'])) {
|
||||||
|
$requestTime = $_SERVER['HTTP_TS'];
|
||||||
|
} else {
|
||||||
|
exitCode(422, 'Error: No timestamp');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (abs($receivedTime - $requestTime) > 10) {
|
||||||
|
$msg = "Error: TimeStamp is out of date\n" .
|
||||||
|
"Data TS = $requestTime\n" .
|
||||||
|
"Server TS = $receivedTime\n";
|
||||||
|
exitCode(422, $msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The signature to test
|
||||||
|
if (isset($_SERVER['HTTP_SIGNATURE'])) {
|
||||||
|
$signatureSent = $_SERVER['HTTP_SIGNATURE'];
|
||||||
|
} else {
|
||||||
|
exitCode(422, 'Error: No signature');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_SERVER['HTTP_FILE'])) {
|
||||||
|
$name = $_SERVER['HTTP_FILE'];
|
||||||
|
|
||||||
|
// first check if the file is escaping our local folder structure
|
||||||
|
if ($limitPath) {
|
||||||
|
$name_dir = pathinfo($name)['dirname'];
|
||||||
|
$name_fullpath = resolvePath($name_dir);
|
||||||
|
$cwd = getcwd();
|
||||||
|
|
||||||
|
if (substr($name_fullpath, 0, strlen($cwd)) !== $cwd) {
|
||||||
|
exitCode(500, 'Error: Attempting to escape local folder structure');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the file exists, check the file is writable
|
||||||
|
if (file_exists($name)) {
|
||||||
|
if (!is_writable($name)) {
|
||||||
|
exitCode(500, "Error: Target file $name is not writable by this user " . `whoami`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!touch($name)) {
|
||||||
|
exitCode(500, "Error: Cannot create the target file $name with this user " . `whoami`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
exitCode(422, 'Error: No filename');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now what are we doing with the file?
|
||||||
|
if (isset($_SERVER["HTTP_ACTION"])) {
|
||||||
|
$action = $_SERVER['HTTP_ACTION'];
|
||||||
|
} else {
|
||||||
|
exitCode(422, 'Error: No action');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action !== 'replace' && $action !== 'append') {
|
||||||
|
exitCode(422, "Error: Invalid header ACTION = $action");
|
||||||
|
}
|
||||||
|
|
||||||
|
// If appending - get the earlist timestamp - JS timestamps overflow PHP int!
|
||||||
|
if ($action === 'append') {
|
||||||
|
if (isset($_SERVER['HTTP_OLDEST'])) {
|
||||||
|
$oldestTs = (float)$_SERVER['HTTP_OLDEST'];
|
||||||
|
} else {
|
||||||
|
exitCode(422, 'Error: No oldest timestamp');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$utf8 = $_SERVER['HTTP_UTF8'];
|
||||||
|
if ($utf8 != '0' && $utf8 != '1') {
|
||||||
|
// default to UTF-8 as before if not supplied
|
||||||
|
$utf8 = '1';
|
||||||
|
}
|
||||||
|
|
||||||
|
$binary = $_SERVER['HTTP_BINARY'];
|
||||||
|
if ($binary != '0' && $binary != '1') {
|
||||||
|
exitCode(422, "Error: Invalid header BINARY = $binary");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_SERVER['HTTP_RAW_POST_DATA'])) {
|
||||||
|
$data = $_SERVER['HTTP_RAW_POST_DATA'];
|
||||||
|
} else {
|
||||||
|
$data = file_get_contents('php://input');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen($data) == 0) {
|
||||||
|
exitCode(422, 'Error: No data sent');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_SERVER['HTTP_CONTENT_ENCODING'])) {
|
||||||
|
if ($_SERVER['HTTP_CONTENT_ENCODING'] == 'gzip') {
|
||||||
|
echo "Unzipping data\n";
|
||||||
|
$data = gzdecode($data);
|
||||||
|
} elseif ($_SERVER['HTTP_CONTENT_ENCODING'] == 'deflate') {
|
||||||
|
echo "Inflating data\n";
|
||||||
|
$data = gzinflate($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($debug) {
|
||||||
|
//echo "Data = $data\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
// Check the signature sent matches what we calculate
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
$ourSignature = CalculateSignature($secret, $requestTime . $name . $data);
|
||||||
|
if ($signatureSent != $ourSignature) {
|
||||||
|
$msg = "Error: Invalid signature\n" .
|
||||||
|
"Data Sig = $signatureSent\n" .
|
||||||
|
"Server Sig = $ourSignature\n" .
|
||||||
|
"Server sig data = " . $requestTime . $name . substr($data, 0, 50);
|
||||||
|
exitCode(422, $msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// change encoding if required
|
||||||
|
if ($utf8 == '0') {
|
||||||
|
$data = mb_convert_encoding($data, "ISO-8859-1", "UTF-8");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
// Finally, do the processing
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
|
||||||
|
if ($action === 'replace') {
|
||||||
|
// do we need to decode a base64 string back to binary data
|
||||||
|
echo 'Opening ' . ($binary == '1' ? 'binary' : 'text') . " file $name for replacement\n";
|
||||||
|
if ($binary == '1') {
|
||||||
|
$data = base64_decode($data);
|
||||||
|
}
|
||||||
|
WriteFile($name, $data, $binary == '1');
|
||||||
|
exitCode(200);
|
||||||
|
} else if ($action === 'append') {
|
||||||
|
// first check we have some data to append!
|
||||||
|
$dataObj = json_decode($data, false);
|
||||||
|
if (is_null($dataObj)) {
|
||||||
|
exitCode(500, 'No valid JSON data in the received data');
|
||||||
|
}
|
||||||
|
|
||||||
|
// next check we have an existing file to append
|
||||||
|
// if not then just write the new data to a dest file
|
||||||
|
echo "Opening text file $name for appending\n";
|
||||||
|
if (!file_exists($name) || filesize($name) === 0) {
|
||||||
|
echo "No existing file to append data - $name\n";
|
||||||
|
WriteFile($name, $data);
|
||||||
|
exitCode(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
// open the target file for reading
|
||||||
|
if (!$outFile = fopen($name, 'r')) {
|
||||||
|
exitCode(500, "Failed to open file $name");
|
||||||
|
}
|
||||||
|
|
||||||
|
$fileObj = json_decode(fgets($outFile), false);
|
||||||
|
fclose($outFile);
|
||||||
|
|
||||||
|
// no valid data in the dest file
|
||||||
|
if (is_null($fileObj)) {
|
||||||
|
echo "No valid JSON data in - $name\n";
|
||||||
|
echo "Writing data as a new file\n";
|
||||||
|
WriteFile($name, $data);
|
||||||
|
exitCode(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($debug) {
|
||||||
|
echo "New data:\n";
|
||||||
|
var_dump($dataObj);
|
||||||
|
echo "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove the old data
|
||||||
|
foreach ($fileObj as $key => $val) {
|
||||||
|
if (is_null($val)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// $val format is [[ts,val],[ts,val]...]
|
||||||
|
if ($debug) {
|
||||||
|
echo "Processing entry $key\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$arr = $val;
|
||||||
|
do {
|
||||||
|
if (sizeof($arr) > 0 && $arr[0][0] < $oldestTs) {
|
||||||
|
if ($debug) {
|
||||||
|
echo "Removing entry $key - ".$arr[0][0]."\n";
|
||||||
|
}
|
||||||
|
array_shift($arr);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while(true);
|
||||||
|
$fileObj->$key = $arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// append the new data
|
||||||
|
foreach ($dataObj as $key => $val) {
|
||||||
|
if (is_null($val)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($debug) {
|
||||||
|
echo "Appending new data: $key - ".sizeof($val)."\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sizeof($val) > 0) {
|
||||||
|
$fileObj->$key = array_merge($fileObj->$key, $val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the file back again
|
||||||
|
echo "Appending text file $name\n";
|
||||||
|
WriteFile($name, json_encode($fileObj));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
exitCode(422, 'Error: Invalid action'. $action);
|
||||||
|
}
|
||||||
|
|
||||||
|
exitCode(200);
|
||||||
|
|
||||||
|
///////// end of script //////////
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
// Helpers
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
|
||||||
|
function CalculateSignature($secret, $data) {
|
||||||
|
return hash_hmac('sha256', $data, $secret, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function WriteFile($filename, $content, $binary=false) {
|
||||||
|
// open the target file for writing
|
||||||
|
$mode = 'w' . ($binary ? 'b': '');
|
||||||
|
|
||||||
|
$outFile = fopen($filename, $mode) or die("Cannot create file $filename with mode $mode");
|
||||||
|
if (!$outFile) {
|
||||||
|
echo "Failed to open file $filename - mode $mode";
|
||||||
|
http_response_code(500);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo 'Writing ' . ($binary ? 'binary': 'text') . " file $filename\n";
|
||||||
|
|
||||||
|
if (fwrite($outFile, $content) == FALSE) {
|
||||||
|
echo "Write failed";
|
||||||
|
http_response_code(500);
|
||||||
|
} else {
|
||||||
|
echo 'Write complete';
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($outFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_exception_handler(function($ex) {
|
||||||
|
echo "\nException occurred!\n\n";
|
||||||
|
echo print_r($ex);
|
||||||
|
exitCode(500);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function resolvePath($path) {
|
||||||
|
if(DIRECTORY_SEPARATOR !== '/') {
|
||||||
|
$path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
|
||||||
|
}
|
||||||
|
$search = explode('/', $path);
|
||||||
|
$search = array_filter($search, function($part) {
|
||||||
|
return $part !== '.';
|
||||||
|
});
|
||||||
|
$append = array();
|
||||||
|
$match = false;
|
||||||
|
while(count($search) > 0) {
|
||||||
|
$match = realpath(implode('/', $search));
|
||||||
|
if($match !== false) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
array_unshift($append, array_pop($search));
|
||||||
|
};
|
||||||
|
if($match === false) {
|
||||||
|
$match = getcwd();
|
||||||
|
}
|
||||||
|
if(count($append) > 0) {
|
||||||
|
$match .= DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $append);
|
||||||
|
}
|
||||||
|
return $match;
|
||||||
|
}
|
||||||
|
|
||||||
|
function exitCode($code, $msg=null) {
|
||||||
|
if (null !== $msg)
|
||||||
|
echo $msg;
|
||||||
|
http_response_code($code);
|
||||||
|
//header('Connection: close');
|
||||||
|
header('Content-Length: '.ob_get_length());
|
||||||
|
ob_end_flush(); // Strange behaviour, will not work
|
||||||
|
flush(); // Unless both are called !
|
||||||
|
exit;
|
||||||
|
}
|
225
webfiles/yesterday.htm
Normal file
225
webfiles/yesterday.htm
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
<!--
|
||||||
|
yesterday.htm v:0.0.1 d:Feb 2021 Neil Thomas
|
||||||
|
Last modified: 2022/07/27 10:10:28
|
||||||
|
Page: 1 main panel plus a sidebar
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="weather data">
|
||||||
|
<meta name="keywords" content="Cumulus, weather, data, weather station">
|
||||||
|
<title>Cumulus MX</title>
|
||||||
|
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||||
|
|
||||||
|
<!-- jQuery Local -->
|
||||||
|
<script src="lib/jquery/jquery-latest.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Fonts System will default to a sans-serif font if no Internet connection -->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Rosario:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- All Styles -->
|
||||||
|
<link href="css/w3Pro.css" rel="stylesheet"> <!-- Basic w3shools responsive styles -->
|
||||||
|
<link href="css/colours.css" rel="stylesheet"> <!-- Slightly enhanced w3schools colours -->
|
||||||
|
<link href="css/mx-templates.css" rel="stylesheet"> <!-- Specific styles for these templates. -->
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="js/setpagedata.js"></script> <!-- Utility javascripts for all pages. -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="Header" class="w3-row w3-top w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<div class="at-flex-between" style="align-items:center; flex-wrap:wrap;">
|
||||||
|
<img src="images/CumulusMX-Logo.png" class="w3-image logo" alt="Header logo"/>
|
||||||
|
<div class="w3-right-align" style="max-width:600px;">
|
||||||
|
<h5>Lat<span class="w3-hide-small">itude</span>: <span data-cmxdata="latitude"></span><span class="at-divider">|<wbr></span>Long<span class="w3-hide-small">itude</span>: <span data-cmxdata="longitude"></span><span class="at-divider">|<wbr></span>Alt<span class="w3-hide-small">itude</span>: <span data-cmxdata="altitude"></span></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start of Menu -->
|
||||||
|
<div id="Main_Menu" class="w3-bar w3-theme-d4 w3-theme-bdr">
|
||||||
|
</div>
|
||||||
|
<!-- Mobile menu -->
|
||||||
|
<div id="Main_Menu_Mobile" class="w3-bar-block w3-hide w3-hide-large">
|
||||||
|
</div> <!-- End of Mobile menu -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="Content"> <!-- Start of panel content -->
|
||||||
|
<div class="w3-row-padding w3-theme-light site-width"> <!-- Page Title -->
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<h1>Yesterday <span class="subText"><span data-cmxdata="yesterday"></span></span></h1>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of title row -->
|
||||||
|
<div class="w3-row site-width w3-theme-light"> <!-- Start of Main panel -->
|
||||||
|
<div class="w3-col l9 m12"> <!-- 3/4 width panel -->
|
||||||
|
<div class="w3-row-padding"> <!-- Row 1 of 3/4 width panel -->
|
||||||
|
<div class="w3-col s12"> <!-- Full width of above panel -->
|
||||||
|
<div class="w3-panel w3-card w3-theme-white">
|
||||||
|
<h2 class="">Yesterday's data</h2>
|
||||||
|
<div class="w3-responsive">
|
||||||
|
<table class="w3-table w3-hoverable" style="width:100%">
|
||||||
|
<tbody>
|
||||||
|
<tr class="w3-theme-d5">
|
||||||
|
<td colspan="3">Temperature and Humidity</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Temperature</td>
|
||||||
|
<td><span data-cmxdata="tempYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TtempYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Temperature</td>
|
||||||
|
<td><span data-cmxdata="tempYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TtempYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Temperature Range</td>
|
||||||
|
<td><span data-cmxdata="temprangeY"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td>High Apparent Temperature</td>
|
||||||
|
<td><span data-cmxdata="apptempYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TapptempYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-apparent class="w3-theme-l2 w3-hide">
|
||||||
|
<td>Low Apparent Temperature</td>
|
||||||
|
<td><span data-cmxdata="apptempYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TapptempYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td>High Feels Like</td>
|
||||||
|
<td><span data-cmxdata="feelslikeYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TfeelslikeYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-cmx-feels class="w3-theme-l2">
|
||||||
|
<td>Low Feels Like</td>
|
||||||
|
<td><span data-cmxdata="feelslikeYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TfeelslikeYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Wind Chill</td>
|
||||||
|
<td><span data-cmxdata="wchillYL"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TwchillYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Heat Index</td>
|
||||||
|
<td><span data-cmxdata="heatindexYH"></span> <span data-cmxdata="tempunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TheatindexYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>High Humidity</td>
|
||||||
|
<td><span data-cmxdata="humYH"></span> %</td>
|
||||||
|
<td>at <span data-cmxdata="ThumYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l2">
|
||||||
|
<td>Low Humidity</td>
|
||||||
|
<td><span data-cmxdata="humYL"></span> %</td>
|
||||||
|
<td>at <span data-cmxdata="ThumYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d4">
|
||||||
|
<td colspan="3">Rainfall</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Yesterday</td>
|
||||||
|
<td><span data-cmxdata="rfallY"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>Rainfall Rate Max</td>
|
||||||
|
<td><span data-cmxdata="rrateYM"></span> <span data-cmxdata="rainunit"></span>/hr</td>
|
||||||
|
<td>at <span data-cmxdata="TrrateYM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>High Hourly Rainfall</td>
|
||||||
|
<td><span data-cmxdata="hourlyrainYH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="ThourlyrainYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l3">
|
||||||
|
<td>High 24 Hour Rainfall</td>
|
||||||
|
<td><span data-cmxdata="rain24hourYH"></span> <span data-cmxdata="rainunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="Train24hourYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d3">
|
||||||
|
<td colspan="3">Wind</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>High Gust</td>
|
||||||
|
<td><span data-cmxdata="wgustYM"></span> <span data-cmxdata="windunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TwgustYM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>High Speed <span class="subText">(10 minute average)</span></td>
|
||||||
|
<td><span data-cmxdata="windYM"></span> <span data-cmxdata="windunit"></span> (<span data-cmxdata="Ybeaufort"></span>)</td>
|
||||||
|
<td>at <span data-cmxdata="TwindYM"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Wind Run</td>
|
||||||
|
<td><span data-cmxdata="windrunY"></span> <span data-cmxdata="windrununit"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l4">
|
||||||
|
<td>Dominant Direction</td>
|
||||||
|
<td><span data-cmxdata="domwindbearingY"></span>° <span data-cmxdata="domwinddirY"></span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d2">
|
||||||
|
<td colspan="3">Pressure <span class="subText">(sea level)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td>High Pressure</td>
|
||||||
|
<td><span data-cmxdata="pressYH"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TpressYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l5">
|
||||||
|
<td>Low Pressure</td>
|
||||||
|
<td><span data-cmxdata="pressYL"></span> <span data-cmxdata="pressunit"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TpressYL"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-d1 w3-hide" data-cmx-solar data-cmx-uv>
|
||||||
|
<td colspan="3">Solar</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-solar>
|
||||||
|
<td>High Solar Radiation</td>
|
||||||
|
<td><span data-cmxdata="solarYH"></span> W/m²</td>
|
||||||
|
<td>at <span data-cmxdata="TsolarYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-solar>
|
||||||
|
<td>Hours of Sunshine</td>
|
||||||
|
<td><span data-cmxdata="YSunshineHours"></span> hrs</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="w3-theme-l6 w3-hide" data-cmx-uv>
|
||||||
|
<td>High UV Index</td>
|
||||||
|
<td><span data-cmxdata="UVYH"></span></td>
|
||||||
|
<td>at <span data-cmxdata="TUVYH"></span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p class="w3-small credits">Page updated <span data-cmxdata="update"></span>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w3-col l3 m12"> <!-- Start of Sidebar 1/4 width -->
|
||||||
|
<div class="w3-row-padding">
|
||||||
|
<div class="w3-col l12">
|
||||||
|
<div class="w3-panel w3-container w3-theme-light">
|
||||||
|
<h3 class="w3-center">Welcome to <br/><span class="subText"><span data-cmxdata="longlocation"></span></span></h3>
|
||||||
|
<p>This page shows a summary of the data for the 24 hrs up to <span data-cmxdata="rollovertime"></span> local time. </p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- End of panel content -->
|
||||||
|
</div> <!-- End of content -->
|
||||||
|
<div id="Footer" class="w3-row w3-bottom w3-theme-dark w3-theme-bdr">
|
||||||
|
<div class="w3-row-padding site-width">
|
||||||
|
<p><em>Cumulus MX Template by Neil Thomas <script>document.write(new Date().getFullYear());</script>
|
||||||
|
<span class="w3-right">Powered by <span class="w3-theme-txt">Cumulus MX</span> v:<span data-cmxdata="version"></span>, b:<span data-cmxdata="build"></span></span></em></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user