diff --git a/public/class-water-the-theme-public.php b/public/class-water-the-theme-public.php
index 5ed93ff..a481e70 100644
--- a/public/class-water-the-theme-public.php
+++ b/public/class-water-the-theme-public.php
@@ -102,8 +102,207 @@ class Water_The_Theme_Public {
public function water_the_theme($thePage) {
- return "boo!";
+ $doc = new DOMDocument();
+ $doc->loadHTML($thePage);
+ $xml_tree = simplexml_import_dom($doc);
+
+ $short_code_name = (string)$xml_tree->body->div->attributes()->class;
+
+ $thePage ="
";
+
+ // front page
+ // [usgs_custom name="Timely Information" location='03071590,03071600,03071605' parameters='00010,00065,62614']
+ if ($short_code_name === 'Timely Information') {
+ foreach ($xml_tree->body->div->div as $div) {
+
+ $value = (string)$div;
+ $class = (string)$div->attributes()->class;
+
+ $datetime = (string)$div->attributes()->datetime;
+
+ list($sitename, $parameter) = explode(' ', $class);
+ $sitename = ucwords(preg_replace('/_/', ' ', $sitename));
+ $parameter = ucwords(preg_replace('/_/', ' ', $parameter));
+
+ if ($parameter === 'Lake Or Reservoir Water Surface Elevation Above Ngvd 1929') {
+ $parameter = '(AMSL)';
+ }
+ if ($sitename === 'Cheat Lake Near Stewartstown Wv') {
+ if ($parameter === '(AMSL)') {
+ $sitename = 'Lake Level';
+ } else {
+ $sitename = 'Lake';
+ }
+ }
+ if ($sitename === 'Cheat River At Lake Lynn Pa') {
+ if ($parameter === 'Gage Height') {
+ $sitename = 'Below Dam';
+ } else {
+ $sitename = 'At Dam';
+ }
+ }
+ if ($sitename === 'Cheat River At Davidson Pa') {
+ $sitename = 'Below Dam';
+ }
+
+ $thePage .= '';
+ $thePage .= "$sitename $parameter | $value | | ";
+ $thePage .= '
';
+
+ }
+
+ //[nws_custom location='lldp1']
+ $att = [
+ 'name' => 'Timely Information',
+ 'location' => 'lldp1',
+ 'parameters' => null,
+ 'date_range' => 'current',
+ 'order' => 'asc'
+ ];
+
+ $nws_custom = Water_The_Theme_Public::nws_custom($att);
+
+ $thePage .= $nws_custom;
+
+ } // end Timely Information
+
+ // Statics Page - last 5 lake data
+ // [usgs_custom name="Statistics" location='03071590,03071600' parameters='00010,00065,62614' date_range='previous,5,16:00' order='desc']
+ if ($short_code_name === 'Statistics') {
+
+ $statistics = [];
+
+ foreach ($xml_tree->body->div->div as $div) {
+
+ $value = (string)$div;
+ $class = (string)$div->attributes()->class;
+
+ $datetime = (string)$div->attributes()->datetime;
+
+ list($sitename, $parameter) = explode(' ', $class);
+ $sitename = ucwords(preg_replace('/_/', ' ', $sitename));
+ $parameter = ucwords(preg_replace('/_/', ' ', $parameter));
+
+ if ($parameter === 'Lake Or Reservoir Water Surface Elevation Above Ngvd 1929') {
+ $parameter = '(AMSL)';
+ }
+ if ($sitename === 'Cheat Lake Near Stewartstown Wv') {
+ if ($parameter === '(AMSL)') {
+ $sitename = 'Lake Level';
+ } else {
+ $sitename = 'Lake';
+ }
+ }
+ if ($sitename === 'Cheat River At Lake Lynn Pa') {
+ $sitename = 'Tail Race Level';
+ $parameter = ' (AMSL)';
+ }
+ if ($sitename === 'Cheat River At Davidson Pa') {
+ $sitename = 'Below Dam';
+ }
- }
+ if ($sitename === 'Tail Race Level') {
+ $value = (float)$value + 776.63;
+ }
+ $statistics[] = "$sitename $parameter | $value | |
";
+
+ //PC::debug($value . " " . $sitename . " " . $parameter);
+ } // end foreach
+
+ list($array1, $array2, $array3) = array_chunk($statistics, ceil(count($statistics) / 3));
+ foreach($array1 as $key => $value ) {
+ $thePage .= $array2[$key];
+ $thePage .= $array3[$key];
+ $thePage .= $value;
+ }
+
+ //PC::debug($count);
+
+ } // end Statistics
+
+ $thePage .= '
';
+ return $thePage;
+
+ } // function water the theme
+
+ public function nws_custom( $att ) {
+
+
+ list($name, $location, $parameters, $date_range, $order) = [
+ $att['name'],
+ $att['location'],
+ $att['parameters'],
+ $att['date_range'],
+ $att['order']
+ ];
+ $locations = explode(',', $location);
+
+ // Tail Race Level = Gage Datum + Gage Height
+ foreach ($locations as $location) {
+
+ $thePage = get_transient('nws_custom-' . $name . $location . $date_range . $parameters . $order );
+
+ if ( !$thePage ) {
+
+ $url = "http://water.weather.gov/ahps2/hydrograph_to_xml.php?gage=$location&output=xml";
+
+ $response = wp_remote_get( $url );
+ $data = wp_remote_retrieve_body( $response );
+
+ if ( ! $data ) {
+ return 'Nation Weather Service is not Responding.';
+ }
+
+
+ $xml_tree = simplexml_load_string( $data );
+ if ( False === $xml_tree ) {
+ return 'Unable to parse NWS XML';
+ }
+
+ // space to underscore; all lower case; only special character allowed is underscored
+ $SiteName = (string)$xml_tree->attributes()->name;
+ $SiteName = preg_replace('/[^A-Za-z0-9_]/', '', strtolower(preg_replace('/\s+/', '_', $SiteName)));
+
+ $waterlevel = (string)$xml_tree->zerodatum;
+
+ $c = 0;
+ foreach ( $xml_tree->observed->datum as $datum ) {
+
+ // in javascript this works out of the box (* 1000)
+ $datetime = strtotime($datum->valid) * 1000;
+ $gageheight = $datum->primary;
+ $waterflow = (string)$datum->secondary;
+
+ if ($waterflow === '-999' || $waterflow === 0) {
+ $waterflow = '0 cfs';
+ } else {
+ $waterflow = $waterflow * 1000;
+ $waterflow = $waterflow . " cfs";
+ }
+
+ $tail_race_level = (float)$waterlevel + (float)$gageheight;
+
+ if($c === 0 && $date_range === 'current') {
+ $thePage .= "Tail Race Level (AMSL) | $tail_race_level ft | |
";
+ //$thePage .= "Gage Datum (AMSL) | $waterlevel ft | |
";
+ $thePage .= "Tail Water Flow | $waterflow | |
";
+ break;
+ } else {
+ $thePage .= "Tail Race Level (AMSL) | $tail_race_evel | |
";
+ //$thePage .= "Gage Datum (AMSL) | $waterlevel ft | |
";
+ $thePage .= "Tail Water Flow | $waterflow | |
";
+ }
+ $c++;
+
+ } // foreach xml_tree as site data
+
+ } // foreach NWS location
+
+
+ set_transient( 'nws_custom-' . $name . $location . $date_range . $parameters . $order, $thePage, 60 * 15 );
+ }
+
+ return $thePage;
+ } // function nws_custom
}
diff --git a/public/js/water-the-theme-public.js b/public/js/water-the-theme-public.js
index 071048d..5d07b91 100644
--- a/public/js/water-the-theme-public.js
+++ b/public/js/water-the-theme-public.js
@@ -29,4 +29,33 @@
* practising this, we should strive to set a better example in our own work.
*/
+ $( window ).load(function() {
+
+ // #BED8D3' '#D8E4E6'
+ $('#Statistics tr:nth-child(6n), #Statistics tr:nth-child(6n-1), #Statistics tr:nth-child(6n-2)').css({backgroundColor:'#D8E4E6'});
+ $('#Statistics tr:nth-child(6n-3), #Statistics tr:nth-child(6n-4), #Statistics tr:nth-child(6n-5)').css({backgroundColor:'#BED8D3'});
+
+ $("td[datetime]").each(function(key,value){
+ var dt = $(value).attr('datetime');
+ var d = new Date(Number(dt));
+ d = d.toLocaleString();
+ $(this).html(d);
+ });
+
+ /*
+ div:nth-child(6n), div:nth-child(6n-1), div:nth-child(6n-2) {
+ background: red;
+ }
+ div:nth-child(6n-3), div:nth-child(6n-4), div:nth-child(6n-5) {
+ background: blue;
+ }
+ */
+
+
+ });
+
+ //$('#Statistics tr:nth-child(6n), #Statistics tr:nth-child(6n-1), #Statistics tr:nth-child(6n-2)').css({backgroundColor:'#d4cdcd'});
+ //$('#Statistics tr:nth-child(6n-3), #Statistics tr:nth-child(6n-4), #Statistics tr:nth-child(6n-5)').css({backgroundColor:'#bac3c5'});
+ //$('#Statistics tr:nth-child(6n-3), #Statistics tr:nth-child(6n-4), #Statistics tr:nth-child(6n-5)').css({backgroundColor:'#bac3c5'});
+
})( jQuery );