2018-09-08 19:22:46 +00:00
/ *
headings :
RADAR < MAIN CITY < CITY 1 < CITY 2
* /
// load slide data
2021-08-24 23:48:01 +00:00
function Slides ( dataMan ) {
2021-08-24 23:10:16 +00:00
severemode = false ;
2018-09-08 19:22:46 +00:00
var radarSlideDuration = 60000 ,
slideDelay = 10000 ;
2021-08-24 23:10:16 +00:00
// for later
2021-04-02 01:44:38 +00:00
var selectval = 0 ;
2021-08-24 23:10:16 +00:00
var ret = [ ] ;
//severe weather mode / marquee management
var foreDataAlert = dataMan . locations [ 0 ] . forecasts ( 'alert' ) ;
if ( foreDataAlert !== undefined ) {
ret = [ ]
sret = [ ]
var ai = 0 ;
//info
//get only weather alers
for ( ai = 0 ; ai <= foreDataAlert . alerts . length - 1 ; ai ++ ) {
warning = foreDataAlert . alerts [ ai ] . categories [ 0 ] . category ;
if ( warning == "Met" ) {
ret . push ( ai )
if ( foreDataAlert . alerts [ ai ] . eventDescription == "Severe Thunderstorm Warning" || foreDataAlert . alerts [ ai ] . eventDescription == "Flash Flood Warning" || foreDataAlert . alerts [ ai ] . eventDescription == "Tornado Warning" ) {
sret . push ( ai )
}
}
} ;
if ( ret . length != 0 ) {
ret . sort ( function ( a , b ) {
if ( foreDataAlert . alerts [ a ] . eventDescription < foreDataAlert . alerts [ b ] . eventDescription ) {
return 1 ;
}
if ( foreDataAlert . alerts [ a ] . eventDescription > foreDataAlert . alerts [ b ] . eventDescription ) {
return - 1 ;
}
return 0
} ) ;
if ( sret . length != 0 ) {
severemode = true ;
$ ( '#marqueeSevere' ) . css ( "background" , "linear-gradient(to right, #510d08 0, #b41a08 100%)" )
$ ( '.marqueeheadersevere' ) . css ( "background" , "linear-gradient(to right, #d51e08 0, #b41a08 100%)" )
$ ( '.marqueeheadersevere' ) . css ( "color" , "#fff" )
$ ( '.marqueeheadersevere' ) . css ( "text-shadow" , "2px 2px 4px #000" )
var severeidx = 0 ;
function switchSevereMarquee ( ) {
2021-08-25 01:02:59 +00:00
$ . getJSON ( 'https://api.weather.com/v3/alerts/detail?alertId=' + foreDataAlert . alerts [ sret [ severeidx ] ] . detailKey + '&format=json&language=en-US&apiKey=' + api _key , function ( data ) {
2021-08-24 23:10:16 +00:00
$ ( '.marqueeheadersevere' ) . text ( ( foreDataAlert . alerts [ sret [ severeidx ] ] . eventDescription + ( ( foreDataAlert . alerts [ sret [ severeidx ] ] . messageType == " Update" ) ? 'UPDATE' : ( foreDataAlert . alerts [ sret [ severeidx ] ] . messageType == "Cancel" ) ? " CANCELLATION" : "" ) ) . toUpperCase ( ) ) ;
$ ( '#arrow-img' ) . fadeOut ( 0 )
$ ( '#marqueeSevere' ) . fadeIn ( 0 )
$ ( '.marqueeheadersevere' ) . fadeIn ( 0 ) //#868686
$ ( '#marqueeSevere' ) . text ( data . alertDetail . texts [ 0 ] . description )
$ ( '#marqueeSevere' )
. marquee ( 'destroy' )
. marquee ( { speed : 170 , delayBeforeStart : 1000 , pauseOnHover : true , pauseOnCycle : true } )
. on ( 'finished' , function ( ) {
switchSevereMarquee ( )
} ) ;
weatherAudio . playwarningbeep ( )
} ) ;
}
switchSevereMarquee ( )
} else {
var warningdata ;
2021-08-25 01:02:59 +00:00
$ . getJSON ( 'https://api.weather.com/v3/alerts/detail?alertId=' + foreDataAlert . alerts [ ret [ 0 ] ] . detailKey + '&format=json&language=en-US&apiKey=' + api _key , function ( data ) {
2021-08-24 23:10:16 +00:00
$ ( '.marqueeheadersevere' ) . text ( ( foreDataAlert . alerts [ ret [ 0 ] ] . eventDescription + ( ( foreDataAlert . alerts [ ret [ 0 ] ] . messageType == " Update" ) ? 'UPDATE' : ( foreDataAlert . alerts [ ret [ 0 ] ] . messageType == "Cancel" ) ? " CANCELLATION" : "" ) ) . toUpperCase ( ) ) ;
if ( foreDataAlert . alerts [ ret [ 0 ] ] . significance == "Y" || foreDataAlert . alerts [ ret [ 0 ] ] . significance == "S" ) {
$ ( '#marqueeSevere' ) . css ( 'background' , 'linear-gradient(to right, #853302 0, #a84503 100%)' )
$ ( '.marqueeheadersevere' ) . css ( "background" , "linear-gradient(to right, #e86d08 0, #a84403 100%)" )
$ ( '.marqueeheadersevere' ) . css ( "color" , "#000" )
$ ( '.marqueeheadersevere' ) . css ( "text-shadow" , "0px 0px 0px #000" )
} else if ( foreDataAlert . alerts [ ret [ 0 ] ] . significance == "A" ) {
$ ( '#marqueeSevere' ) . css ( "background" , "linear-gradient(to right, #846811 0, #9b7d0e 100%)" ) ;
$ ( '.marqueeheadersevere' ) . css ( 'background' , 'linear-gradient(to right, #e5dd20 0, #9b7d0e 100%)' ) ;
$ ( '.marqueeheadersevere' ) . css ( "color" , "#000" ) ;
$ ( '.marqueeheadersevere' ) . css ( "text-shadow" , "0px 0px 0px #000" ) ;
} else if ( foreDataAlert . alerts [ ret [ 0 ] ] . significance == "W" ) {
$ ( '#marqueeSevere' ) . css ( "background" , "linear-gradient(to right, #510d08 0, #b41a08 100%)" )
$ ( '.marqueeheadersevere' ) . css ( "background" , "linear-gradient(to right, #d51e08 0, #b41a08 100%)" )
$ ( '.marqueeheadersevere' ) . css ( "color" , "#fff" )
$ ( '.marqueeheadersevere' ) . css ( "text-shadow" , "2px 2px 4px #000" )
}
$ ( '#arrow-img' ) . fadeOut ( 0 )
$ ( '#marqueeSevere' ) . fadeIn ( 0 )
$ ( '.marqueeheadersevere' ) . fadeIn ( 0 ) //#868686
$ ( '#marqueeSevere' ) . text ( data . alertDetail . texts [ 0 ] . description )
$ ( '#marqueeSevere' )
. marquee ( { speed : 170 , delayBeforeStart : 1000 , pauseOnHover : true , pauseOnCycle : true } )
} ) ;
}
}
}
2021-03-23 18:02:42 +00:00
buildHeader ( ) ;
2021-08-24 23:10:16 +00:00
//if (dataMan.location[0].observations[0].alerts != undefined) {
//}
setTimeout ( function ( ) {
$ ( '.radar-content' ) . fadeOut ( 500 ) ;
$ ( '.radar-color-legend' ) . fadeOut ( 500 , function ( ) {
$ ( '.radar-slide' ) . fadeOut ( 0 ) ;
nextCity ( )
} ) ;
} , 5500 ) ;
2018-09-08 19:22:46 +00:00
// loop cities
function nextCity ( ) {
2021-08-24 23:10:16 +00:00
//severe weather mode
if ( severemode == true ) {
$ ( '#minimap-cover' ) . fadeIn ( 0 )
$ ( '.city-slide-intro .segment' ) . text ( location . city ) ;
$ ( '#info-slides-header .hscroller' ) . empty ( ) ;
$ ( '#info-slides-header .hscroller' ) . append ( "<span class='severe'>SEVERE WEATHER UPDATE</span>" ) ;
$ ( '.radar-slide .info-subheader' ) . css ( 'background' , 'linear-gradient(to top, #868686 0, #868686 100%)' )
showBulletin ( ) ;
function showRadarS ( lat , long , zoom , time ) {
weatherMan . mainMap . setView ( lat , long , zoom ) ;
// fade out info, fade in radar
weatherAudio . playLocalRadar ( ) ;
$ ( '.radar-slide' ) . fadeIn ( 0 ) ;
$ ( '.radar-content' ) . fadeIn ( 500 ) ;
$ ( '.radar-color-legend' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.radar-content' ) . fadeOut ( 500 ) ;
$ ( '.radar-color-legend' ) . fadeOut ( 500 , function ( ) {
$ ( '.radar-slide' ) . fadeOut ( 0 ) ;
if ( severemode == true ) {
showBulletin ( )
} else {
$ ( '#info-slides-header .hscroller' ) . empty ( ) ;
$ ( '#marqueeSevere' ) . fadeOut ( 0 )
$ ( '.marqueeheadersevere' ) . fadeOut ( 0 )
$ ( '#arrow-img' ) . fadeIn ( 0 )
$ ( '.radar-slide .infosubheader' ) . css ( 'background' , 'linear-gradient(to top, #fffe21 0, #db5a14 100%);' )
buildHeader ( ) ;
nextCity ( ) ;
}
} ) ;
} , 60500 ) ;
}
function showBulletin ( ) {
var foreDataAlert = dataMan . locations [ 0 ] . forecasts ( 'alert' ) ;
var page2 = [ ] ;
if ( foreDataAlert !== undefined ) {
$ ( '.bulletin .frost-pane .warnings' ) . empty ( )
var displayday ;
//info
//get only weather alers
if ( ret . length != 0 ) {
for ( i of ret ) {
getexpiredate = function ( expiretime ) {
dateFns . format ( new Date ( expiretime ) , "h:mm" ) ;
if ( dateFns . isToday ( expiretime ) != true ) {
var numday = dateFns . getDay ( expiretime ) ;
displayday = { "0" : "SUN" , "1" : "MON" , "2" : "TUE" , "3" : "WED" , "4" : "THU" , "5" : "FRI" , "6" : "SAT" } [ numday ] + "." ;
} else {
displayday = "Today."
}
return dateFns . format ( new Date ( expiretime ) , "h:mm A " ) + displayday
}
if ( i < 3 ) {
$ ( '.bulletin .frost-pane .warnings' ) . append ( foreDataAlert . alerts [ i ] . eventDescription + " in effect until " + getexpiredate ( foreDataAlert . alerts [ ret [ i ] ] . expireTimeLocal ) + "</br></br>" )
} else {
page2 . push ( foreDataAlert . alerts [ i ] . eventDescription + " in effect until " + getexpiredate ( foreDataAlert . alerts [ ret [ i ] ] . expireTimeLocal ) + "</br></br>" )
}
}
$ ( '.bulletin' ) . fadeIn ( 0 ) ;
$ ( '.bulletin .frost-pane' ) . fadeIn ( 500 ) ;
$ ( '#subhead-noaa' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
if ( page2 . length !== 0 ) {
$ ( '.bulletin .frost-pane' ) . fadeOut ( 500 , function ( ) {
$ ( '.bulletin .frost-pane .warnings' ) . empty ( )
for ( i = 0 ; i <= foreDataAlert . alerts . length ; i ++ ) {
$ ( '.bulletin .frost-pane .warnings' ) . append ( page2 [ i ] )
}
} ) ;
$ ( '.bulletin .frost-pane' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.bulletin' ) . fadeIn ( 0 ) ;
$ ( '.bulletin .frost-pane' ) . fadeOut ( 500 ) ;
$ ( '#subhead-noaa' ) . fadeOut ( 500 , function ( ) {
$ ( '.bulletin' ) . fadeOut ( 0 ) ;
if ( severemode == true ) {
showRadarS ( dataMan . locations [ 0 ] . lat , dataMan . locations [ 0 ] . long , 8 , 60000 )
} else {
$ ( '#minimap-cover' ) . fadeOut ( 0 )
$ ( '#info-slides-header .hscroller' ) . empty ( ) ;
$ ( '#marqueeSevere' ) . fadeOut ( 0 )
$ ( '.marqueeheadersevere' ) . fadeOut ( 0 )
$ ( '#arrow-img' ) . fadeIn ( 0 )
$ ( '.radar-slide .infosubheader' ) . css ( 'background' , 'linear-gradient(to top, #fffe21 0, #db5a14 100%);' )
buildHeader ( ) ;
nextCity ( ) ;
}
} ) ;
} , slideDelay ) ;
} else {
$ ( '.bulletin' ) . fadeIn ( 0 ) ;
$ ( '.bulletin .frost-pane' ) . fadeOut ( 500 ) ;
$ ( '#subhead-noaa' ) . fadeOut ( 500 , function ( ) {
$ ( '.bulletin' ) . fadeOut ( 0 ) ;
if ( severemode == true ) {
showRadarS ( dataMan . locations [ 0 ] . lat , dataMan . locations [ 0 ] . long , 8 , 60000 )
} else {
$ ( '#minimap-cover' ) . fadeOut ( 0 )
$ ( '#info-slides-header .hscroller' ) . empty ( ) ;
$ ( '#marqueeSevere' ) . fadeOut ( 0 )
$ ( '.marqueeheadersevere' ) . fadeOut ( 0 )
$ ( '#arrow-img' ) . fadeIn ( 0 )
$ ( '.radar-slide .infosubheader' ) . css ( 'background' , 'linear-gradient(to top, #fffe21 0, #db5a14 100%);' )
buildHeader ( ) ;
nextCity ( ) ;
}
} ) ;
}
} , slideDelay ) ;
} else {
if ( severemode == true ) {
showRadarS ( dataMan . locations [ 0 ] . lat , dataMan . locations [ 0 ] . long , 8 , 60000 )
} else {
$ ( '#info-slides-header .hscroller' ) . empty ( ) ;
$ ( '#marqueeSevere' ) . fadeOut ( 0 )
$ ( '.marqueeheadersevere' ) . fadeOut ( 0 )
$ ( '#arrow-img' ) . fadeIn ( 0 )
$ ( '.radar-slide .infosubheader' ) . css ( 'background' , 'linear-gradient(to top, #fffe21 0, #db5a14 100%);' )
buildHeader ( ) ;
nextCity ( ) ;
}
}
} else {
if ( severemode == true ) {
showRadarS ( dataMan . locations [ 0 ] . lat , dataMan . locations [ 0 ] . long , 8 , 60000 )
} else {
$ ( '#info-slides-header .hscroller' ) . empty ( ) ;
$ ( '#marqueeSevere' ) . fadeOut ( 0 )
$ ( '.marqueeheadersevere' ) . fadeOut ( 0 )
$ ( '#arrow-img' ) . fadeIn ( 0 )
$ ( '.radar-slide .infosubheader' ) . css ( 'background' , 'linear-gradient(to top, #fffe21 0, #db5a14 100%);' )
buildHeader ( ) ;
nextCity ( ) ;
}
}
}
2021-03-23 18:02:42 +00:00
2021-08-24 23:10:16 +00:00
} else {
//non severe
2018-09-08 19:22:46 +00:00
advanceHeader ( ) ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
var city = $ ( '#info-slides-header .city.current' ) ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
// is radar or city?
if ( city [ 0 ] . dataset . woeid ) {
2021-03-23 18:02:42 +00:00
// show slide deck for the current city
2018-09-08 19:22:46 +00:00
showCitySlides ( dataMan . location ( city [ 0 ] . dataset . woeid ) , 0 ) ;
} else {
2021-08-24 23:10:16 +00:00
if ( city [ 0 ] . classList . contains ( "radar" ) ) {
showRadar ( dataMan . locations [ 0 ] . lat , dataMan . locations [ 0 ] . long , 8 , 60000 ) ;
setTimeout ( nextCity , 60500 ) ;
} else if ( city [ 0 ] . classList . contains ( "airport" ) ) {
showAirport ( 0 ) ;
} else if ( city [ 0 ] . classList . contains ( "healthh" ) ) {
showHealth ( 0 ) ;
}
2018-09-08 19:22:46 +00:00
// radar
2021-08-24 23:10:16 +00:00
//showRadar(dataMan.locations[0].lat, dataMan.locations[0].long, 8);
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
//setTimeout(function() { weatherAudio.playLocalRadar() }, 2000 );
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
// show for how long?
2021-08-24 23:10:16 +00:00
//setTimeout(nextCity, 60000);
2018-09-08 19:22:46 +00:00
}
2021-08-24 23:10:16 +00:00
}
2018-09-08 19:22:46 +00:00
}
2021-03-23 18:02:42 +00:00
2021-08-24 23:10:16 +00:00
function showRadar ( lat , long , zoom , time ) {
2021-03-23 18:02:42 +00:00
weatherMan . mainMap . setView ( lat , long , zoom ) ;
2018-09-08 19:22:46 +00:00
// fade out info, fade in radar
2021-08-24 23:10:16 +00:00
weatherAudio . playLocalRadar ( ) ;
$ ( '.radar-slide' ) . fadeIn ( 0 ) ;
$ ( '.radar-content' ) . fadeIn ( 500 ) ;
$ ( '.radar-color-legend' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.radar-content' ) . fadeOut ( 500 ) ;
$ ( '.radar-color-legend' ) . fadeOut ( 500 , function ( ) {
$ ( '.radar-slide' ) . fadeOut ( 0 ) ;
2021-03-23 18:02:42 +00:00
} ) ;
2021-08-24 23:10:16 +00:00
} , time ) ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
}
2021-08-24 23:10:16 +00:00
function showAirport ( idx ) {
var currentDisplay ,
displays = {
intro ( ) {
$ ( '.airport-slide-intro' ) . fadeIn ( 0 ) ;
$ ( '.airport-slide-intro .accent' ) . fadeIn ( 500 ) ;
$ ( '.airport-slide-intro .weatherscanmarquee' ) . fadeIn ( 500 ) ;
$ ( '.airport-slide-intro .weatherscanmarquee' ) . css ( 'animation' , 'marqueeweatherscan 5.5s linear normal forwards' )
setTimeout ( function ( ) {
$ ( '.airport-slide-intro .segment' ) . fadeIn ( 500 ) ;
} , 1000 ) ;
setTimeout ( function ( ) {
$ ( '.airport-slide-intro .segment' ) . fadeOut ( 500 )
$ ( '.airport-slide-intro .accent' ) . fadeOut ( 500 ) ;
$ ( '.airport-slide-intro .weatherscanmarquee' ) . fadeOut ( 500 , function ( ) {
$ ( '.airport-slide-intro' ) . fadeOut ( 0 ) ;
wait ( 0 ) ;
} ) ;
} , 5000 ) ;
}
, airportconditions ( ) {
$ ( '.airport-slide' ) . fadeIn ( 0 ) ;
$ ( '.airportpanel' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.airportpanel' ) . fadeOut ( 500 , function ( ) {
$ ( '.airport-slide' ) . fadeOut ( 0 ) ;
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
}
} ,
keys = Object . keys ( displays ) ;
var daypart ;
if ( idx < keys . length ) {
currentDisplay = displays [ keys [ idx ] ] ;
currentDisplay ( ) ;
} else { // done - exit
nextCity ( ) ;
}
return ;
function wait ( duration ) {
setTimeout ( function ( ) {
showAirport ( ++ idx ) ;
} , duration ) ;
}
}
function showHealth ( idx ) {
var currentDisplay ,
displays = {
intro ( ) {
$ ( '.health-slide-intro' ) . fadeIn ( 0 ) ;
$ ( '.health-slide-intro .accent' ) . fadeIn ( 500 ) ;
$ ( '.health-slide-intro .weatherscanmarquee' ) . fadeIn ( 500 ) ;
$ ( '.health-slide-intro .weatherscanmarquee' ) . css ( 'animation' , 'marqueeweatherscan 5.5s linear normal forwards' )
setTimeout ( function ( ) {
$ ( '.health-slide-intro .segment' ) . fadeIn ( 500 ) ;
} , 1000 ) ;
setTimeout ( function ( ) {
$ ( '.health-slide-intro .segment' ) . fadeOut ( 500 )
$ ( '.health-slide-intro .accent' ) . fadeOut ( 500 ) ;
$ ( '.health-slide-intro .weatherscanmarquee' ) . fadeOut ( 500 , function ( ) {
$ ( '.health-slide-intro' ) . fadeOut ( 0 ) ;
wait ( 0 ) ;
} ) ;
} , 5000 ) ;
}
, healthforecast ( ) {
var healthforecastdata = dataMan . locations [ 0 ] . forecasts ( "daily" )
var startidx = 0 ;
var startidxdayonly = 0 ;
if ( healthforecastdata . daypart [ 0 ] . daypartName [ 0 ] == null ) {
startidx = 2 ;
startidxdayonly = 1 ;
}
if ( startidx = 0 && dateFns . getHours ( new Date ( ) ) >= 4 ) {
$ ( '.info-slide-content.health-forecast .mainforecast .hightext' ) . css ( "right" , "85px" ) ;
$ ( '.info-slide-content.health-forecast .mainforecast .hightext' ) . css ( "top" , "220px" ) ;
$ ( '.info-slide-content.health-forecast .mainforecast .high' ) . css ( "left" , "91px" ) ;
$ ( '.info-slide-content.health-forecast .mainforecast .high' ) . css ( "top" , "265px" ) ;
$ ( '.info-slide-content.health-forecast .mainforecast .lowtext' ) . fadeOut ( 0 )
$ ( '.info-slide-content.health-forecast .mainforecast .low' ) . fadeOut ( 0 )
}
$ ( '.info-slide-content.health-forecast .thing' ) . text ( "Forecast for " + healthforecastdata . dayOfWeek [ startidxdayonly ] )
$ ( '.info-slide-content.health-forecast .mainforecast .hightext' ) . text ( healthforecastdata . temperatureMax [ startidxdayonly ] )
$ ( '.info-slide-content.health-forecast .mainforecast .lowtext' ) . text ( healthforecastdata . temperatureMin [ startidxdayonly ] )
$ ( '.info-slide-content.health-forecast .forecastdetails .chancepreciptext' ) . text ( healthforecastdata . daypart [ 0 ] . precipChance [ startidx ] + '%' )
$ ( '.info-slide-content.health-forecast .forecastdetails .humidtext' ) . text ( healthforecastdata . daypart [ 0 ] . relativeHumidity [ startidx ] + '%' )
$ ( '.info-slide-content.health-forecast .forecastdetails .windtext' ) . text ( ( ( healthforecastdata . daypart [ 0 ] . windDirectionCardinal [ startidx ] == "CALM" ) ? 'calm' : healthforecastdata . daypart [ 0 ] . windDirectionCardinal [ startidx ] ) + ' ' + ( ( healthforecastdata . daypart [ 0 ] . windSpeed [ startidx ] === 0 ) ? '' : healthforecastdata . daypart [ 0 ] . windSpeed [ startidx ] ) )
$ ( '.info-slide-content.health-forecast .mainforecast .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + healthforecastdata . daypart [ 0 ] . iconCode [ startidx ] , healthforecastdata . daypart [ 0 ] . windSpeed [ startidx ] ) + '")' ) ;
$ ( '.info-slide.health #subhead-title' ) . text ( 'Outdoor Activity' ) ;
$ ( '.info-slide.health #subhead-city' ) . text ( dataMan . locations [ 0 ] . city ) ;
$ ( '.info-slide.health' ) . fadeIn ( 0 ) ;
$ ( '.info-slide-content.health-forecast' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.health-forecast' ) . fadeOut ( 500 , function ( ) {
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
}
, pollen ( ) {
var pollendata = dataMan . locations [ 0 ] . forecasts ( "pollen" ) ;
if ( pollendata . pollenobservations !== undefined ) {
if ( pollendata . pollenobservations [ 0 ] . stn _cmnt != "No Report" && pollendata . pollenobservations [ 0 ] . stn _cmnt != "Equipment Failure" && pollendata . pollenobservations [ 0 ] . stn _cmnt != "Reports only during weed pollen season" && pollendata . pollenobservations [ 0 ] . stn _cmnt != "Does not report year round" && pollendata . pollenobservations [ 0 ] . stn _cmnt != "Reports Suspended" ) {
if ( pollendata . pollenobservations [ 0 ] . total _pollen _cnt <= 9 ) {
$ ( '.info-slide-content.allergy .totalpollen .desc' ) . text ( 'Low' )
} else if ( pollendata . pollenobservations [ 0 ] . total _pollen _cnt >= 10 && pollendata . pollenobservations [ 0 ] . total _pollen _cnt <= 49 ) {
$ ( '.info-slide-content.allergy .totalpollen .desc' ) . text ( 'Moderate' )
} else if ( pollendata . pollenobservations [ 0 ] . total _pollen _cnt >= 50 && pollendata . pollenobservations [ 0 ] . total _pollen _cnt <= 499 ) {
$ ( '.info-slide-content.allergy .totalpollen .desc' ) . text ( 'High' )
} else if ( pollendata . pollenobservations [ 0 ] . total _pollen _cnt >= 500 ) {
$ ( '.info-slide-content.allergy .totalpollen .desc' ) . text ( 'Very High' )
} ;
$ ( '.info-slide-content.allergy .pollen .pollenbar.tree .type' ) . html ( 'Tree Pollen <br>' + ( ( pollendata . pollenobservations [ 0 ] . treenames [ 0 ] . tree _nm != "No Report" ) ? pollendata . pollenobservations [ 0 ] . treenames [ 0 ] . tree _nm : "" ) )
$ ( '.info-slide-content.allergy .pollen .thing' ) . text ( "As of " + dateFns . format ( new Date ( pollendata . pollenobservations [ 0 ] . rpt _dt ) , "MMMM D" ) )
$ ( '.info-slide-content.allergy .totalpollen .cat' ) . text ( pollendata . pollenobservations [ 0 ] . total _pollen _cnt )
$ ( '.info-slide.health #subhead-title' ) . text ( 'Allergy Report' ) ;
$ ( '.info-slide-content.allergy' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
i = 0
var pollentypes = [ 'tree' , 'grass' , 'weed' , 'mold' ] ;
pollentypes . forEach ( pollentype => {
var plength = { "0" : "-10" , "1" : "55" , "2" : "115" , "3" : "175" , "4" : "235" , "5" : "295" , "9" : "-10" } [ pollendata . pollenobservations [ 0 ] . pollenobservation [ i ] . pollen _idx ]
var ptime = { "0" : 0 , "1" : 500 , "2" : 1000 , "3" : 1500 , "4" : 2000 , "5" : 2500 , "9" : 0 } [ pollendata . pollenobservations [ 0 ] . pollenobservation [ i ] . pollen _idx ]
$ ( '.info-slide-content.allergy .pollen .pollenbar.' + pollentype + ' .bar .bararrow' ) . animate ( { left : plength + "px" } , ptime )
} ) ;
} , 500 )
setTimeout ( function ( ) {
$ ( '.info-slide-content.allergy' ) . fadeOut ( 500 , function ( ) {
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
} else { wait ( 0 ) }
} else { wait ( 0 ) }
}
, achesbreath ( ) {
achesindexdata = dataMan . locations [ 0 ] . forecasts ( "achesindex" ) ;
breathindexdata = dataMan . locations [ 0 ] . forecasts ( "breathindex" ) ;
var startidx = 0 ;
if ( achesindexdata . achesPainsIndex12hour . dayInd [ 0 ] == 'N' ) {
startidx = 1 ;
}
var alength = { "0" : "-10" , "1" : "22" , "2" : "55" , "3" : "88" , "4" : "121" , "5" : "154" , "6" : "187" , "7" : "220" , "8" : "253" , "9" : "286" , "10" : "-300" } [ achesindexdata . achesPainsIndex12hour . achesPainsIndex [ startidx ] ]
var atime = { "0" : 0 , "1" : 250 , "2" : 500 , "3" : 750 , "4" : 1000 , "5" : 1250 , "6" : 1500 , "7" : 1750 , "8" : 2000 , "9" : 2250 , "10" : 2500 } [ achesindexdata . achesPainsIndex12hour . achesPainsIndex [ startidx ] ]
var blength = { "10" : "-10" , "9" : "22" , "8" : "55" , "7" : "88" , "6" : "121" , "5" : "154" , "5" : "187" , "4" : "220" , "3" : "253" , "2" : "286" , "1" : "-300" } [ breathindexdata . breathingIndex12hour . breathingIndex [ startidx ] ]
var btime = { "10" : 0 , "9" : 250 , "8" : 500 , "7" : 750 , "6" : 1000 , "5" : 1250 , "4" : 1500 , "3" : 1750 , "2" : 2000 , "1" : 2250 , "10" : 2500 } [ breathindexdata . breathingIndex12hour . breathingIndex [ startidx ] ]
$ ( '.info-slide-content.Aches-Breath .thing' ) . text ( dateFns . format ( new Date ( achesindexdata . achesPainsIndex12hour . fcstValidLocal [ 0 ] ) , "dddd" ) )
$ ( '.info-slide.health #subhead-title' ) . text ( 'Health Forecast' ) ;
$ ( '.info-slide-content.Aches-Breath' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.Aches-Breath .aches .bar .bararrow' ) . animate ( { left : alength + "px" } , atime , 'linear' , function ( ) {
$ ( '.info-slide-content.Aches-Breath .aches .bar .bararrow .bararrowtext' ) . text ( achesindexdata . achesPainsIndex12hour . achesPainsCategory [ startidx ] ) ;
$ ( '.info-slide-content.Aches-Breath .aches .bar .bararrow .bararrowtext' ) . fadeIn ( 500 ) ;
} )
$ ( '.info-slide-content.Aches-Breath .breath .bar .bararrow' ) . animate ( { left : blength + "px" } , btime , 'linear' , function ( ) {
$ ( '.info-slide-content.Aches-Breath .breath .bar .bararrow .bararrowtext' ) . text ( breathindexdata . breathingIndex12hour . breathingCategory [ 0 ] ) ;
$ ( '.info-slide-content.Aches-Breath .breath .bar .bararrow .bararrowtext' ) . fadeIn ( 500 ) ;
} )
} , 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.Aches-Breath' ) . fadeOut ( 500 , function ( ) {
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
}
, airquality ( ) {
var foreDataAlert = dataMan . locations [ 0 ] . forecasts ( 'alert' ) ;
var airqualitydata = dataMan . locations [ 0 ] . forecasts ( 'airquality' ) ;
var ozone = false ;
if ( foreDataAlert !== undefined ) {
for ( var i = 0 ; i < foreDataAlert . alerts . length ; i += 1 ) {
warning = foreDataAlert . alerts [ i ] . eventDescription ;
if ( warning == "Ozone Action Day" ) {
ozone = true ;
}
} ;
if ( ozone == true ) {
$ ( '.info-slide-content.airquality .primarypolute .ozoneaction' ) . fadeIn ( 0 )
}
}
var aqlength = { 1 : "35" , 2 : "107.5" , 3 : "185" , 4 : "260" , 5 : "340" } [ airqualitydata . globalairquality . airQualityCategoryIndex ]
var aqcat = { 1 : "green" , 2 : "yellow" , 3 : "orange" , 4 : "deep orange" , 5 : "red" } [ airqualitydata . globalairquality . airQualityCategoryIndex ]
var aqtime = { 1 : 0 , 2 : 500 , 3 : 1000 , 4 : 1500 , 5 : 2000 } [ airqualitydata . globalairquality . airQualityCategoryIndex ]
if ( airqualitydata . globalairquality . primaryPollutant == "PM2.5" || airqualitydata . globalairquality . primaryPollutant == "PM10" ) {
$ ( '.info-slide-content.airquality .primarypolute .pollutant' ) . text ( 'Fine Particulate' )
} else { $ ( '.info-slide-content.airquality .primarypolute .pollutant' ) . text ( airqualitydata . globalairquality . primaryPollutant ) } ;
$ ( '.info-slide.health #subhead-title' ) . text ( 'Air Quality Forecast' ) ;
$ ( '.info-slide-content.airquality .airforecast .thing' ) . text ( dateFns . format ( new Date ( airqualitydata . globalairquality . expireTimeGmt * 1000 ) , "dddd" ) )
$ ( '.info-slide-content.airquality' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.airquality .airforecast .bar .arrow' ) . animate ( { bottom : aqlength + "px" } , aqtime , 'linear' , function ( ) {
$ ( '.info-slide-content.airquality .airforecast .bar .' + aqcat + ' .forecast' ) . fadeIn ( 500 )
} )
} , 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.airquality' ) . fadeOut ( 500 , function ( ) {
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
}
, uvindex ( ) {
var foreUvData = dataMan . locations [ 0 ] . forecasts ( 'forecastuvindex' ) ;
var uvData = dataMan . locations [ 0 ] . forecasts ( 'uvindex' ) ;
var indexes = calcHourlyReport ( foreUvData . uvIndex1hour ) ;
var i ;
$ ( '.info-slide-content.uvindex .uvtime.i .uvtime' ) . text ( buildHourlyTimeTitle ( foreUvData . uvIndex1hour . fcstValidLocal [ indexes [ 0 ] ] ) ) ;
$ ( '.info-slide-content.uvindex .uvtime.ii .uvtime' ) . text ( buildHourlyTimeTitle ( foreUvData . uvIndex1hour . fcstValidLocal [ indexes [ 1 ] ] ) ) ;
$ ( '.info-slide-content.uvindex .uvtime.iii .uvtime' ) . text ( buildHourlyTimeTitle ( foreUvData . uvIndex1hour . fcstValidLocal [ indexes [ 2 ] ] ) ) ;
$ ( '.info-slide-content.uvindex .uvtime.i .uvday' ) . text ( dateFns . format ( new Date ( foreUvData . uvIndex1hour . fcstValidLocal [ indexes [ 0 ] ] ) , 'ddd' ) ) ;
$ ( '.info-slide-content.uvindex .uvtime.ii .uvday' ) . text ( dateFns . format ( new Date ( foreUvData . uvIndex1hour . fcstValidLocal [ indexes [ 1 ] ] ) , 'ddd' ) ) ;
$ ( '.info-slide-content.uvindex .uvtime.iii .uvday' ) . text ( dateFns . format ( new Date ( foreUvData . uvIndex1hour . fcstValidLocal [ indexes [ 2 ] ] ) , 'ddd' ) ) ;
$ ( '.info-slide.health #subhead-title' ) . text ( 'Ultraviolet Index' ) ;
$ ( '.info-slide-content.uvindex' ) . fadeIn ( 500 ) ;
//get reporting hours: 6am, 12pm, 3pm
function buildHourlyTimeTitle ( time ) {
var hour = dateFns . getHours ( time ) ;
return ( dateFns . format ( time , 'h a' ) ) . replace ( " " , "" ) ;
}
function calcHourlyReport ( data ) {
var hret = [ ] ,
targets = [ 9 , 12 , 15 ] , // hours that we report
current = dateFns . getHours ( new Date ( ) ) ,
now = new Date ( ) ,
//firsthour = targets[ getNextHighestIndex(targets, current) ],
start ,
hour , i = 0 ;
switch ( true ) {
case ( current < 6 ) :
start = 9 ;
case ( current < 9 ) :
start = 12 ; break ;
case ( current < 12 ) :
start = 15 ; break ;
case ( current < 13 ) :
start = 9 ; break ;
default :
start = 9 ;
}
while ( hret . length < 3 ) {
// hour must be equal or greater than current
hour = dateFns . getHours ( data . fcstValidLocal [ i ] ) ;
if ( dateFns . isAfter ( data . fcstValidLocal [ i ] , now ) && ( hour == start || hret . length > 0 ) ) {
if ( targets . indexOf ( hour ) >= 0 ) { // it is in our target list so record its index
hret . push ( i ) ;
}
}
i ++ ;
}
return hret ;
}
var hourlable = [ 'i' , 'ii' , 'iii' ] ,
uvi , value , i = 0 ;
var ulength = { "-2" : "25" , "-1" : "25" , 0 : "25" , 1 : "25" , 2 : "40" , 3 : "55" , 4 : "70" , 5 : "85" , 6 : "100" , 7 : "115" , 8 : "130" , 9 : "145" , 10 : "160" , 11 : "175" } [ uvData . uvIndexCurrent . uvIndex ]
var utime = { "-2" : 0 , "-1" : 0 , 0 : 0 , 1 : 125 , 2 : 250 , 3 : 375 , 4 : 500 , 5 : 625 , 6 : 750 , 7 : 1000 , 8 : 1250 , 9 : 1325 , 10 : 1500 , 11 : 1625 } [ uvData . uvIndexCurrent . uvIndex ]
$ ( '.info-slide-content.uvindex .currentuv .bar .cat' ) . text ( uvData . uvIndexCurrent . uvDesc )
$ ( '.info-slide-content.uvindex .currentuv .bar .num' ) . text ( uvData . uvIndexCurrent . uvIndex )
if ( uvData . uvIndexCurrent . uvIndex == "0" || uvData . uvIndexCurrent . uvIndex == "-1" || uvData . uvIndexCurrent . uvIndex == "-2" ) {
$ ( '.info-slide-content.uvindex .currentuv .bar' ) . css ( "background" , "rgba(0,0,0,0)" )
}
$ ( '.info-slide-content.uvindex .currentuv .bar' ) . animate ( { height : ulength + "px" } , utime , function ( ) {
$ ( '.info-slide-content.uvindex .currentuv .bar .cat' ) . fadeTo ( 'slow' , 1 ) ;
$ ( '.info-slide-content.uvindex .currentuv .bar .num' ) . fadeTo ( 'slow' , 1 ) ;
} ) ;
$ ( '.info-slide-content.uvindex .forecastuv .bar' ) . each ( function ( ) {
var ulength = { "-2" : 0 , "-1" : 0 , 0 : "1" , 1 : "25" , 2 : "40" , 3 : "55" , 4 : "70" , 5 : "85" , 6 : "100" , 7 : "115" , 8 : "130" , 9 : "145" , 10 : "160" , 11 : "175" } [ foreUvData . uvIndex1hour . uvIndex [ indexes [ i ] ] ]
var utime = { "-2" : 0 , "-1" : 0 , 0 : 0 , 1 : 125 , 2 : 250 , 3 : 375 , 4 : 500 , 5 : 625 , 6 : 750 , 7 : 1000 , 8 : 1250 , 9 : 1325 , 10 : 1500 , 11 : 1625 } [ foreUvData . uvIndex1hour . uvIndex [ indexes [ i ] ] ]
$ ( '.info-slide-content.uvindex .forecastuv .bar.' + hourlable [ i ] + ' .cat' ) . text ( foreUvData . uvIndex1hour . uvDesc [ indexes [ i ] ] )
$ ( '.info-slide-content.uvindex .forecastuv .bar.' + hourlable [ i ] + ' .num' ) . text ( foreUvData . uvIndex1hour . uvIndex [ indexes [ i ] ] )
if ( foreUvData . uvIndex1hour . uvIndex [ indexes [ i ] ] == "0" || foreUvData . uvIndex1hour . uvIndex [ indexes [ i ] ] == "-1" || foreUvData . uvIndex1hour . uvIndex [ indexes [ i ] ] == "-2" ) {
$ ( '.info-slide-content.uvindex .currentuv .bar.' + hourlable [ i ] ) . css ( "background" , "rgba(0,0,0,0)" )
}
$ ( '.info-slide-content.uvindex .forecastuv .bar.' + hourlable [ i ] ) . animate ( { height : ulength + "px" } , utime , function ( ) {
$ ( '.info-slide-content.uvindex .forecastuv .bar .cat' ) . fadeTo ( 'slow' , 1 ) ;
$ ( '.info-slide-content.uvindex .forecastuv .bar .num' ) . fadeTo ( 'slow' , 1 ) ;
} ) ;
i = i + 1
} )
setTimeout ( function ( ) {
$ ( '.info-slide-content.uvindex' ) . fadeOut ( 500 , function ( ) {
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
}
, healthtip ( ) {
$ ( '.info-slide.health #subhead-title' ) . text ( 'Weather Safety Tips' ) ;
$ ( '.info-slide-content.healthtip' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.healthtip' ) . fadeOut ( 500 , function ( ) {
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
}
, moreinfoimage ( ) {
$ ( '.info-slide.health #subhead-title' ) . text ( '' ) ;
$ ( '.info-slide-content.moreinfoimage' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.moreinfoimage' ) . fadeOut ( 500 , function ( ) {
$ ( '.info-slide.health' ) . fadeOut ( 0 ) ;
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
}
} ,
keys = Object . keys ( displays ) ;
var daypart ;
if ( idx < keys . length ) {
currentDisplay = displays [ keys [ idx ] ] ;
currentDisplay ( ) ;
} else { // done - exit
nextCity ( ) ;
}
return ;
function wait ( duration ) {
setTimeout ( function ( ) {
showHealth ( ++ idx ) ;
} , duration ) ;
}
}
2021-03-23 18:02:42 +00:00
// show the set of slides for one city
2018-09-08 19:22:46 +00:00
function showCitySlides ( location , idx ) {
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
var currentDisplay ,
displays = {
2021-08-24 23:10:16 +00:00
intro ( ) {
$ ( '.city-slide-intro .segment' ) . text ( location . city ) ;
$ ( '.city-slide-intro' ) . fadeIn ( 0 ) ;
$ ( '.city-slide-intro .weatherscancopyright' ) . fadeIn ( 500 ) ;
$ ( '.city-slide-intro .cityaccent' ) . fadeIn ( 500 ) ;
$ ( '.city-slide-intro .cityweatherscanmarquee' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.city-slide-intro .segment' ) . fadeIn ( 500 ) ;
} , 1000 ) ;
setTimeout ( function ( ) {
$ ( '.city-slide-intro .weatherscancopyright .copyrighttext' ) . fadeOut ( 500 , function ( ) {
$ ( '.city-slide-intro .weatherscancopyright .copyrighttext' ) . css ( 'font-size' , '10px' )
$ ( '.city-slide-intro .weatherscancopyright .copyrighttext' ) . text ( "© 2021 Weather Group Television LLC All Rights Reserved" )
} ) ;
$ ( '.city-slide-intro .weatherscancopyright .copyrighttext' ) . fadeIn ( 500 ) ;
} , 5000 ) ;
setTimeout ( function ( ) {
$ ( '.city-slide-intro .segment' ) . fadeOut ( 500 )
$ ( '.city-slide-intro .weatherscancopyright' ) . fadeOut ( 500 ) ;
$ ( '.city-slide-intro .accent' ) . fadeOut ( 500 ) ;
$ ( '.city-slide-intro .cityweatherscanmarquee' ) . fadeOut ( 500 , function ( ) {
$ ( '.city-slide-intro' ) . fadeOut ( 0 ) ;
$ ( '.city-slide-intro .weatherscancopyright .copyrighttext' ) . css ( 'font-size' , '28px' )
$ ( '.city-slide-intro .weatherscancopyright .copyrighttext' ) . text ( "Weatherscan is brought to you by The Weather Channel® and MIDCO" )
wait ( 0 ) ;
} ) ;
} , 10000 ) ;
}
, showBulletin ( ) {
var page2 = [ ] ;
if ( foreDataAlert !== undefined ) {
$ ( '.bulletin .frost-pane .warnings' ) . empty ( )
var displayday ;
//info
//get only weather alers
if ( ret . length != 0 ) {
for ( i of ret ) {
getexpiredate = function ( expiretime ) {
dateFns . format ( new Date ( expiretime ) , "h:mm" ) ;
if ( dateFns . isToday ( expiretime ) != true ) {
var numday = dateFns . getDay ( expiretime ) ;
displayday = { "0" : "SUN" , "1" : "MON" , "2" : "TUE" , "3" : "WED" , "4" : "THU" , "5" : "FRI" , "6" : "SAT" } [ numday ] + "." ;
} else {
displayday = "Today."
}
return dateFns . format ( new Date ( expiretime ) , "h:mm A " ) + displayday
}
if ( i < 3 ) {
$ ( '.bulletin .frost-pane .warnings' ) . append ( foreDataAlert . alerts [ i ] . eventDescription + " in effect until " + getexpiredate ( foreDataAlert . alerts [ ret [ i ] ] . expireTimeLocal ) + "</br></br>" )
} else {
page2 . push ( foreDataAlert . alerts [ i ] . eventDescription + "in effect until " + getexpiredate ( foreDataAlert . alerts [ ret [ i ] ] . expireTimeLocal ) + "</br></br>" )
}
}
$ ( '.bulletin .frost-pane .cityname' ) . text ( location . city + " Area" ) ;
//fade in
$ ( '.bulletin' ) . fadeIn ( 0 ) ;
$ ( '.bulletin .frost-pane' ) . fadeIn ( 500 ) ;
$ ( '#subhead-noaa' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
if ( page2 . length !== 0 ) {
$ ( '.bulletin .frost-pane' ) . fadeOut ( 500 ) ;
$ ( '.bulletin .frost-pane .warnings' ) . empty ( )
for ( i = 0 ; i <= foreDataAlert . alerts . length ; i ++ ) {
$ ( '.bulletin .frost-pane .warnings' ) . append ( page2 [ i ] )
}
$ ( '.bulletin .frost-pane' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.bulletin' ) . fadeIn ( 0 ) ;
$ ( '.bulletin .frost-pane' ) . fadeOut ( 500 ) ;
$ ( '#subhead-noaa' ) . fadeOut ( 500 , function ( ) {
$ ( '.bulletin' ) . fadeOut ( 0 ) ;
wait ( 0 )
} ) ;
} , slideDelay ) ;
} else {
$ ( '.bulletin' ) . fadeIn ( 0 ) ;
$ ( '.bulletin .frost-pane' ) . fadeOut ( 500 ) ;
$ ( '#subhead-noaa' ) . fadeOut ( 500 , function ( ) {
$ ( '.bulletin' ) . fadeOut ( 0 ) ;
wait ( 0 )
} ) ;
}
} , slideDelay ) ;
} else { wait ( 0 ) }
} else { wait ( 0 ) } ;
}
2018-09-08 19:22:46 +00:00
// Currently (10 sec)
2021-08-24 23:10:16 +00:00
, currentConditions ( ) {
2018-09-08 19:22:46 +00:00
$ ( '.city-info-slide #subhead-title' ) . text ( 'Currently' ) ;
$ ( '.city-info-slide #subhead-city' ) . text ( location . city ) ;
2021-03-23 18:02:42 +00:00
var obsData = location . observations ,
strLabels = 'Humidity<br>Dew Point<br>Pressure<Br>Wind<br>' ,
2021-08-24 23:10:16 +00:00
strData = obsData ( 0 ) . relativeHumidity + '%<br>' + obsData ( 0 ) . temperatureDewPoint + '<br>' + obsData ( 0 ) . pressureAltimeter + ( ( obsData ( 0 ) . pressureTendencyCode === 1 || obsData ( 0 ) . pressureTendencyCode === 3 ) ? '↑' : ( obsData ( 0 ) . pressureTendencyCode === 2 || obsData ( 0 ) . pressureTendencyCode === 4 ) ? '↓' : ' S' ) + '<br>' + ( ( obsData ( 0 ) . windDirectionCardinal == "CALM" ) ? 'calm' : obsData ( 0 ) . windDirectionCardinal ) + ' ' + ( ( obsData ( 0 ) . windSpeed === 0 ) ? '' : obsData ( 0 ) . windSpeed ) + '<br>' ;
if ( obsData ( 0 ) . windGust != undefined ) {
2021-03-23 18:02:42 +00:00
strLabels += 'Gusts<Br>' ;
2021-08-24 23:10:16 +00:00
strData += obsData ( 0 ) . windGust + '<br>' ;
2021-03-23 18:02:42 +00:00
} else {
strLabels += 'Gusts<Br>' ;
strData += 'none<br>' ;
}
2021-08-24 23:10:16 +00:00
if ( parseInt ( obsData ( 0 ) . temperature ) < 70 && parseInt ( obsData ( 0 ) . windSpeed ) >= 3 ) {
var windchill = Math . round ( 35.74 + 0.6215 * parseInt ( obsData ( 0 ) . temperature ) - 35.75 * Math . pow ( parseInt ( obsData ( 0 ) . windSpeed ) , 0.16 ) + 0.4275 * parseInt ( obsData ( 0 ) . temperature ) * Math . pow ( parseInt ( obsData ( 0 ) . windSpeed ) , 0.16 ) - 1 )
2018-09-08 19:22:46 +00:00
strLabels += 'Wind Chill' ;
2021-03-23 18:02:42 +00:00
strData += windchill ;
2021-08-24 23:10:16 +00:00
} else if ( parseInt ( obsData ( 0 ) . temperature ) >= 80 && parseInt ( obsData ( 0 ) . relativeHumidity ) >= 40 ) {
2018-09-08 19:22:46 +00:00
strLabels += 'Heat Index' ;
2021-08-24 23:10:16 +00:00
var heatindexx = heatIndex ( obsData ( 0 ) . temperature , obsData ( 0 ) . relativeHumidity ) + '°' ;
strData += heatindexx
2021-04-02 01:44:38 +00:00
} ;
2018-09-08 19:22:46 +00:00
$ ( '.city-info .frost-pane .labels' ) . html ( strLabels ) ;
$ ( '.city-info .frost-pane .data' ) . html ( strData ) ;
// right pane
2021-08-24 23:10:16 +00:00
$ ( '.city-info .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + obsData ( 0 ) . iconCode , obsData ( 0 ) . windSpeed ) + '")' ) ;
//$('.info-slide-content.airport .frost-pane.right .icon').css('background-image', 'url("' + getCCicon(+obsData(0).iconCode, obsData(0).current.wind_speed) + '")');
$ ( '.city-info .conditions' ) . text ( obsData ( 0 ) . wxPhraseLong ) ;
$ ( '.city-info .temp' ) . text ( Math . round ( parseInt ( obsData ( 0 ) . temperature ) ) ) ;
weatherAudio . playCurrentConditions ( ) ;
//fadein
$ ( '.city-info-slide' ) . fadeIn ( 0 ) ;
$ ( '.city-info' ) . fadeIn ( 500 ) ;
//fadeout and switch
setTimeout ( function ( ) {
$ ( '.city-info' ) . fadeOut ( 500 , function ( ) {
$ ( '.city-info-slide' ) . fadeOut ( 0 ) ;
wait ( 0 ) ;
} ) ;
} , slideDelay ) ;
2018-09-08 19:22:46 +00:00
}
// Local Doppler Radar or Radar/Satellite (15 sec, zoomed out with cloud cover)
, localDoppler ( ) {
2021-08-24 23:10:16 +00:00
showRadar ( location . lat , location . long , 8 , slideDelay ) ;
wait ( slideDelay + 500 ) ;
2018-09-08 19:22:46 +00:00
}
2021-04-02 01:44:38 +00:00
// daypart / hourly
2018-09-08 19:22:46 +00:00
, forecast ( fidx ) {
2021-04-02 01:44:38 +00:00
//pick between day part or local forecast
if ( selectval === 0 || selectval === 1 ) {
var foreDataHourly = dataMan . locations [ 0 ] . forecasts ( 'hourly' ) ;
var indexes = calcHourlyReport ( foreDataHourly ) ;
var i ;
var temps = [ ] ;
// reset tempbar animation
$ ( '.info-slide-content.daypart .hour' ) . each ( function ( ) {
$ ( '.info-slide-content.daypart .hour .tempbar' ) . css ( "height" , "0px" )
$ ( '.info-slide-content.daypart .hour .tempbar .temp' ) . css ( "opacity" , "0%" ) ;
$ ( '.info-slide-content.daypart .hour .tempbar .wind' ) . css ( "opacity" , "0%" ) ;
i = i + 1
} ) ;
//hour title
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.daypart .hour.i .thing .thingtext' ) . text ( buildHourlyTimeTitle ( foreDataHourly . validTimeLocal [ indexes [ 0 ] ] ) ) ;
$ ( '.info-slide-content.daypart .hour.ii .thing .thingtext' ) . text ( buildHourlyTimeTitle ( foreDataHourly . validTimeLocal [ indexes [ 1 ] ] ) ) ;
$ ( '.info-slide-content.daypart .hour.iii .thing .thingtext' ) . text ( buildHourlyTimeTitle ( foreDataHourly . validTimeLocal [ indexes [ 2 ] ] ) ) ;
$ ( '.info-slide-content.daypart .hour.iv .thing .thingtext' ) . text ( buildHourlyTimeTitle ( foreDataHourly . validTimeLocal [ indexes [ 3 ] ] ) ) ;
2021-04-02 01:44:38 +00:00
for ( var i of indexes ) {
2021-08-24 23:10:16 +00:00
temps . push ( foreDataHourly . temperature [ i ] ) ;
2021-04-02 01:44:38 +00:00
}
2021-03-23 18:02:42 +00:00
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.daypart .hour.i .tempbar .temp' ) . text ( foreDataHourly . temperature [ indexes [ 0 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.ii .tempbar .temp' ) . text ( foreDataHourly . temperature [ indexes [ 1 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.iii .tempbar .temp' ) . text ( foreDataHourly . temperature [ indexes [ 2 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.iv .tempbar .temp' ) . text ( foreDataHourly . temperature [ indexes [ 3 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.i .tempbar .wind' ) . text ( foreDataHourly . windDirectionCardinal [ indexes [ 0 ] ] + ' ' + foreDataHourly . windSpeed [ indexes [ 0 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.ii .tempbar .wind' ) . text ( foreDataHourly . windDirectionCardinal [ indexes [ 1 ] ] + ' ' + foreDataHourly . windSpeed [ indexes [ 1 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.iii .tempbar .wind' ) . text ( foreDataHourly . windDirectionCardinal [ indexes [ 2 ] ] + ' ' + foreDataHourly . windSpeed [ indexes [ 2 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.iv .tempbar .wind' ) . text ( foreDataHourly . windDirectionCardinal [ indexes [ 3 ] ] + ' ' + foreDataHourly . windSpeed [ indexes [ 3 ] ] ) ;
$ ( '.info-slide-content.daypart .hour.i .condition' ) . text ( ( foreDataHourly . wxPhraseShort [ indexes [ 0 ] ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.daypart .hour.ii .condition' ) . text ( ( foreDataHourly . wxPhraseShort [ indexes [ 1 ] ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.daypart .hour.iii .condition' ) . text ( ( foreDataHourly . wxPhraseShort [ indexes [ 2 ] ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.daypart .hour.iv .condition' ) . text ( ( foreDataHourly . wxPhraseShort [ indexes [ 3 ] ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.daypart .hour.i .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataHourly . iconCode [ indexes [ 0 ] ] , foreDataHourly . windSpeed [ indexes [ 0 ] ] ) + '")' ) ;
$ ( '.info-slide-content.daypart .hour.ii .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataHourly . iconCode [ indexes [ 1 ] ] , foreDataHourly . windSpeed [ indexes [ 1 ] ] ) + '")' ) ;
$ ( '.info-slide-content.daypart .hour.iii .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataHourly . iconCode [ indexes [ 2 ] ] , foreDataHourly . windSpeed [ indexes [ 2 ] ] ) + '")' ) ;
$ ( '.info-slide-content.daypart .hour.iv .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataHourly . iconCode [ indexes [ 3 ] ] , foreDataHourly . windSpeed [ indexes [ 3 ] ] ) + '")' ) ;
2021-04-02 01:44:38 +00:00
function buildHourlyTimeTitle ( time ) {
var hour = dateFns . getHours ( time ) ;
if ( hour === 0 ) {
return 'Midnight' ;
} else if ( hour === 12 ) {
return 'Noon' ;
}
2021-08-24 23:10:16 +00:00
return ( dateFns . format ( time , 'h a' ) ) . replace ( " " , "" ) ;
2021-04-02 01:44:38 +00:00
}
//get reporting hours: 12am, 6am, 12pm, 3pm, 5pm, 8pm...
function calcHourlyReport ( data ) {
var ret = [ ] ,
targets = [ 0 , 6 , 12 , 15 , 17 , 20 ] , // hours that we report
current = dateFns . getHours ( new Date ( ) ) ,
now = new Date ( ) ,
//firsthour = targets[ getNextHighestIndex(targets, current) ],
start ,
hour , i = 0 ;
switch ( true ) {
case ( current < 3 ) :
start = 6 ;
case ( current < 9 ) :
start = 12 ; break ;
case ( current < 12 ) :
start = 15 ; break ;
case ( current < 14 ) :
start = 17 ; break ;
case ( current < 17 ) :
start = 6 ; break ;
case ( current < 20 ) :
start = 6 ; break ;
default :
start = 6 ;
}
while ( ret . length < 4 ) {
// hour must be equal or greater than current
2021-08-24 23:10:16 +00:00
hour = dateFns . getHours ( data . validTimeLocal [ i ] ) ;
if ( dateFns . isAfter ( data . validTimeLocal [ i ] , now ) && ( hour == start || ret . length > 0 ) ) {
2021-04-02 01:44:38 +00:00
if ( targets . indexOf ( hour ) >= 0 ) { // it is in our target list so record its index
ret . push ( i ) ;
}
}
i ++ ;
}
return ret ;
}
function buildHourlyHeaderTitle ( time ) {
var today = new Date ( ) ,
tomorrow = dateFns . addDays ( today , 1 ) ;
2018-09-08 19:22:46 +00:00
2021-04-02 01:44:38 +00:00
// title based on the first hour reported
switch ( dateFns . getHours ( time ) ) {
2018-09-08 19:22:46 +00:00
2021-04-02 01:44:38 +00:00
case 6 : // 6 - Nextday's Forecast / Today's Forecast
// if 6am today
if ( dateFns . isToday ( time ) ) {
return "Today's Forecast" ;
}
case 0 : // 0 - Nextday's Forecast
return "Tomorrow's Forecast" ;
2018-09-08 19:22:46 +00:00
2021-04-02 01:44:38 +00:00
case 12 :
return "Today's Forecast" ;
2018-09-08 19:22:46 +00:00
2021-04-02 01:44:38 +00:00
case 15 :
return "Today's Forecast" ;
2021-03-23 18:02:42 +00:00
2021-04-02 01:44:38 +00:00
case 17 :
return "Tonight's Forecast" ;
2021-03-23 18:02:42 +00:00
2021-04-02 01:44:38 +00:00
case 20 :
return "Tonight's Forecast"
2018-09-08 19:22:46 +00:00
2021-04-02 01:44:38 +00:00
}
2018-09-08 19:22:46 +00:00
}
2021-04-02 01:44:38 +00:00
// calculate height of tempbars
2021-08-24 23:10:16 +00:00
$ ( '.city-info-slide #subhead-title' ) . text ( buildHourlyHeaderTitle ( foreDataHourly . validTimeLocal [ indexes [ 0 ] ] ) ) ;
2021-04-02 01:44:38 +00:00
var min = Math . min ( ... temps ) , // 54
max = Math . max ( ... temps ) , // 73
range = ( max - min ) ,
prange = ( 100 - 78 ) , // percent range for bar height
hourlable = [ 'i' , 'ii' , 'iii' , 'iv' ] ,
temp , value , i = 0 ;
$ ( '.info-slide-content.daypart .hour' ) . each ( function ( ) {
2021-08-24 23:10:16 +00:00
temp = foreDataHourly . temperature [ indexes [ i ] ]
2021-04-02 01:44:38 +00:00
value = ( ( temp - min ) / range ) * prange + 78 ; // find percentage of range and translate to percent and add that to the starting css % height number
valueii = ( value / 100 ) * 165 // multiply percentage by max height
$ ( '.info-slide-content.daypart .hour.' + hourlable [ i ] + ' .tempbar' ) . animate ( { height : valueii + "px" } , 1500 , function ( ) {
$ ( '.info-slide-content.daypart .hour .tempbar .temp' ) . fadeTo ( 'slow' , 1 ) ;
$ ( '.info-slide-content.daypart .hour .tempbar .wind' ) . fadeTo ( 'slow' , 1 ) ;
} ) ;
i = i + 1
} )
2021-08-24 23:10:16 +00:00
//play narration
weatherAudio . playLocalforecastii ( ) ;
//fade in
$ ( '.city-info-slide' ) . fadeIn ( 0 ) ;
$ ( '.info-slide-content.daypart' ) . fadeIn ( 500 ) ;
//for calculating when to show daypart
selectval = selectval + 1
//fadeout
setTimeout ( function ( ) {
$ ( '.info-slide-content.daypart' ) . fadeOut ( 500 , function ( ) {
wait ( 0 )
} ) ;
} , slideDelay ) ;
2021-04-02 01:44:38 +00:00
} else {
// Local Forecast -Today (10 sec)
var div = '.info-slide-content.forecast ' ,
2021-08-24 23:10:16 +00:00
forecasts = dataMan . locations [ 0 ] . forecasts ( 'daily' ) ;
var correct = 0 ;
2021-04-02 01:44:38 +00:00
function fillinfo ( ) {
fidx = ( fidx === undefined ? 0 : fidx ) ;
2021-08-24 23:10:16 +00:00
if ( forecasts . daypart [ 0 ] . daypartName [ 0 ] == null && fidx == 0 ) {
correct = 1 ;
fidx = 1 ;
}
2021-04-02 01:44:38 +00:00
$ ( '.city-info-slide #subhead-title' ) . text ( 'Local Forecast' ) ;
2021-08-24 23:10:16 +00:00
//replace tomorrow
2021-04-02 01:44:38 +00:00
2021-08-24 23:10:16 +00:00
$ ( div + '.title' ) . text ( forecasts . daypart [ 0 ] . daypartName [ fidx ] . replace ( 'Tomorrow' , forecasts . dayOfWeek [ fidx ] ) ) ;
2021-04-02 01:44:38 +00:00
// content
2021-08-24 23:10:16 +00:00
resizeText ( forecasts . daypart [ 0 ] . narrative [ fidx ] + ( ( forecasts . daypart [ 0 ] . qualifierPhrase [ fidx ] != null && forecasts . daypart [ 0 ] . narrative [ fidx ] . includes ( forecasts . daypart [ 0 ] . qualifierPhrase [ fidx ] ) === false ) ? forecasts . daypart [ 0 ] . qualifierPhrase [ fidx ] : '' ) + ( ( forecasts . daypart [ 0 ] . windPhrase [ fidx ] != null && forecasts . daypart [ 0 ] . narrative [ fidx ] . includes ( forecasts . daypart [ 0 ] . windPhrase [ fidx ] ) === false ) ? forecasts . daypart [ 0 ] . windPhrase [ fidx ] : '' ) ) ;
$ ( div + '.content' ) . text ( forecasts . daypart [ 0 ] . narrative [ fidx ] + ( ( forecasts . daypart [ 0 ] . qualifierPhrase [ fidx ] != null && forecasts . daypart [ 0 ] . narrative [ fidx ] . includes ( forecasts . daypart [ 0 ] . qualifierPhrase [ fidx ] ) === false ) ? forecasts . daypart [ 0 ] . qualifierPhrase [ fidx ] : '' ) + ( ( forecasts . daypart [ 0 ] . windPhrase [ fidx ] != null && forecasts . daypart [ 0 ] . narrative [ fidx ] . includes ( forecasts . daypart [ 0 ] . windPhrase [ fidx ] ) === false ) ? forecasts . daypart [ 0 ] . windPhrase [ fidx ] : '' ) ) ;
2021-04-02 01:44:38 +00:00
}
2021-08-24 23:10:16 +00:00
if ( fidx === 0 ) {
weatherAudio . playLocalforecasti ( ) ;
}
2021-04-02 01:44:38 +00:00
2021-08-24 23:10:16 +00:00
$ ( '.city-info-slide' ) . fadeIn ( 0 ) ;
fillinfo ( ) ;
$ ( '.info-slide-content.forecast' ) . fadeIn ( 500 ) ;
2021-04-02 01:44:38 +00:00
setTimeout ( function ( ) {
2018-09-08 19:22:46 +00:00
2021-08-24 23:10:16 +00:00
if ( fidx < 3 + correct ) {
$ ( '.info-slide-content.forecast' ) . fadeOut ( 500 , function ( ) {
currentDisplay ( ++ fidx ) ;
fillinfo ( ) ;
} ) ;
2021-04-02 01:44:38 +00:00
} else {
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.forecast' ) . fadeOut ( 500 , function ( ) {
selectval = selectval + 1
if ( selectval === 4 ) { selectval = 0 }
wait ( 0 ) ;
} ) ;
2021-04-02 01:44:38 +00:00
}
2021-03-23 18:02:42 +00:00
2021-04-02 01:44:38 +00:00
} , slideDelay )
}
2018-09-08 19:22:46 +00:00
}
// Extended Forecast(5 day columns)
2021-04-02 01:44:38 +00:00
, extendedForecast ( ) {
$ ( '.city-info-slide #subhead-title' ) . text ( 'Extended Forecast' ) ;
var foreDataDaily = dataMan . locations [ 0 ] . forecasts ( 'daily' ) ;
2021-08-24 23:10:16 +00:00
var icons , weekend ,
startidx = 0 ,
startidxdayonly = 0 ;
if ( foreDataDaily . daypart [ 0 ] . daypartName [ 0 ] == null ) {
startidx = 2 ;
startidxdayonly = 1 ;
}
2021-04-02 01:44:38 +00:00
//days
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.extended-forecast .frost-pane.iw .thing' ) . text ( foreDataDaily . dayOfWeek [ startidxdayonly ] . substring ( 0 , 3 ) )
$ ( '.info-slide-content.extended-forecast .frost-pane.iiw .thing' ) . text ( foreDataDaily . dayOfWeek [ startidxdayonly + 1 ] . substring ( 0 , 3 ) )
$ ( '.info-slide-content.extended-forecast .frost-pane.iiiw .thing' ) . text ( foreDataDaily . dayOfWeek [ startidxdayonly + 2 ] . substring ( 0 , 3 ) )
$ ( '.info-slide-content.extended-forecast .frost-pane.ivw .thing' ) . text ( foreDataDaily . dayOfWeek [ startidxdayonly + 3 ] . substring ( 0 , 3 ) )
$ ( '.info-slide-content.extended-forecast .lfrost-pane.vw .thing .thingtext' ) . text ( foreDataDaily . dayOfWeek [ startidxdayonly + 4 ] . substring ( 0 , 3 ) )
2021-04-02 01:44:38 +00:00
//icons
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.extended-forecast .frost-pane.iw .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataDaily . daypart [ 0 ] . iconCode [ startidx ] , foreDataDaily . daypart [ 0 ] . windSpeed [ startidx ] ) + '")' ) ;
$ ( '.info-slide-content.extended-forecast .frost-pane.iiw .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataDaily . daypart [ 0 ] . iconCode [ startidx + 2 ] , foreDataDaily . daypart [ 0 ] . windSpeed [ startidx + 2 ] ) + '")' ) ;
$ ( '.info-slide-content.extended-forecast .frost-pane.iiiw .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataDaily . daypart [ 0 ] . iconCode [ startidx + 4 ] , foreDataDaily . daypart [ 0 ] . windSpeed [ startidx + 4 ] ) + '")' ) ;
$ ( '.info-slide-content.extended-forecast .frost-pane.ivw .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataDaily . daypart [ 0 ] . iconCode [ startidx + 6 ] , foreDataDaily . daypart [ 0 ] . windSpeed [ startidx + 6 ] ) + '")' ) ;
$ ( '.info-slide-content.extended-forecast .lfrost-pane.vw .icon' ) . css ( 'background-image' , 'url("' + getCCicon ( + foreDataDaily . daypart [ 0 ] . iconCode [ startidx + 8 ] , foreDataDaily . daypart [ 0 ] . windSpeed [ startidx + 8 ] ) + '")' ) ;
2021-04-02 01:44:38 +00:00
//conditions
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.extended-forecast .frost-pane.iw .conditions' ) . text ( ( foreDataDaily . daypart [ 0 ] . wxPhraseShort [ startidx ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.extended-forecast .frost-pane.iiw .conditions' ) . text ( ( foreDataDaily . daypart [ 0 ] . wxPhraseShort [ startidx + 2 ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.extended-forecast .frost-pane.iiiw .conditions' ) . text ( ( foreDataDaily . daypart [ 0 ] . wxPhraseShort [ startidx + 4 ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.extended-forecast .frost-pane.ivw .conditions' ) . text ( ( foreDataDaily . daypart [ 0 ] . wxPhraseShort [ startidx + 6 ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
$ ( '.info-slide-content.extended-forecast .lfrost-pane.vw .conditions' ) . text ( ( foreDataDaily . daypart [ 0 ] . wxPhraseShort [ startidx + 8 ] ) . replace ( 'M ' , 'Mostly ' ) . replace ( 'P ' , 'Partly ' ) ) ;
2021-04-02 01:44:38 +00:00
//high
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.extended-forecast .frost-pane.iw .temphigh' ) . text ( foreDataDaily . temperatureMax [ startidxdayonly ] )
$ ( '.info-slide-content.extended-forecast .frost-pane.iiw .temphigh' ) . text ( foreDataDaily . temperatureMax [ startidxdayonly + 1 ] )
$ ( '.info-slide-content.extended-forecast .frost-pane.iiiw .temphigh' ) . text ( foreDataDaily . temperatureMax [ startidxdayonly + 2 ] )
$ ( '.info-slide-content.extended-forecast .frost-pane.ivw .temphigh' ) . text ( foreDataDaily . temperatureMax [ startidxdayonly + 3 ] )
$ ( '.info-slide-content.extended-forecast .lfrost-pane.vw .temphigh .temphightext' ) . text ( foreDataDaily . temperatureMax [ startidxdayonly + 4 ] )
2021-04-02 01:44:38 +00:00
//low
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.extended-forecast .frost-pane.iw .templow' ) . text ( foreDataDaily . temperatureMin [ startidxdayonly ] )
$ ( '.info-slide-content.extended-forecast .frost-pane.iiw .templow' ) . text ( foreDataDaily . temperatureMin [ startidxdayonly + 1 ] )
$ ( '.info-slide-content.extended-forecast .frost-pane.iiiw .templow' ) . text ( foreDataDaily . temperatureMin [ startidxdayonly + 2 ] )
$ ( '.info-slide-content.extended-forecast .frost-pane.ivw .templow' ) . text ( foreDataDaily . temperatureMin [ startidxdayonly + 3 ] )
$ ( '.info-slide-content.extended-forecast .lfrost-pane.vw .templow' ) . text ( foreDataDaily . temperatureMin [ startidxdayonly + 4 ] )
2021-04-02 01:44:38 +00:00
2021-03-23 18:02:42 +00:00
2021-08-24 23:10:16 +00:00
$ ( '.info-slide-content.extended-forecast' ) . fadeIn ( 500 ) ;
//buildailycalculating when to show daypart
//fadeout
setTimeout ( function ( ) {
$ ( '.info-slide-content.extended-forecast' ) . fadeOut ( 500 , function ( ) {
$ ( '.city-info-slide' ) . fadeOut ( 0 ) ;
wait ( 0 )
} ) ;
} , slideDelay ) ;
}
, almanac ( ) {
var obsData = location . observations ;
if ( selectval === 1 ) {
var foreDataAlmanac = dataMan . locations [ 0 ] . forecasts ( 'almanac' ) ;
$ ( '.info-slide-content.almanac .frost-pane.half .thing' ) . text ( dateFns . format ( new Date ( ) , "MMMM D" ) ) ;
$ ( '.info-slide-content.almanac .frost-pane.half .ahightext' ) . text ( foreDataAlmanac . temperatureAverageMax [ 0 ] ) ;
$ ( '.info-slide-content.almanac .frost-pane.half .alowtext' ) . text ( foreDataAlmanac . temperatureAverageMin [ 0 ] ) ;
$ ( '.info-slide-content.almanac .frost-pane.half .rhightext' ) . text ( foreDataAlmanac . temperatureRecordMax [ 0 ] ) ;
$ ( '.info-slide-content.almanac .frost-pane.half .rlowtext' ) . text ( foreDataAlmanac . temperatureRecordMin [ 0 ] ) ;
$ ( '.info-slide-content.almanac .frost-pane.half .rhighyear' ) . text ( foreDataAlmanac . almanacRecordYearMax [ 0 ] ) ;
$ ( '.info-slide-content.almanac .frost-pane.half .rlowyear' ) . text ( foreDataAlmanac . almanacRecordYearMin [ 0 ] ) ;
$ ( '.info-slide-content.almanac .frost-pane.purple .sunrisetext' ) . text ( dateFns . format ( new Date ( obsData ( 0 ) . sunriseTimeLocal ) , "h:m a" ) ) ;
$ ( '.info-slide-content.almanac .frost-pane.purple .sunsettext' ) . text ( dateFns . format ( new Date ( obsData ( 0 ) . sunsetTimeLocal ) , "h:m a" ) ) ;
$ ( '.city-info-slide #subhead-title' ) . text ( 'Almanac' ) ;
$ ( '.city-info-slide' ) . fadeIn ( 0 ) ;
$ ( '.info-slide-content.almanac' ) . fadeIn ( 500 ) ;
setTimeout ( function ( ) {
$ ( '.info-slide-content.almanac' ) . fadeOut ( 500 , function ( ) {
$ ( '.city-info-slide' ) . fadeOut ( 0 ) ;
wait ( 0 )
} ) ;
} , slideDelay ) ;
} else {
wait ( 0 )
} ;
}
2018-09-08 19:22:46 +00:00
} ,
keys = Object . keys ( displays ) ;
2021-03-23 18:02:42 +00:00
2021-04-02 01:44:38 +00:00
var daypart ;
2018-09-08 19:22:46 +00:00
if ( idx < keys . length ) {
currentDisplay = displays [ keys [ idx ] ] ;
2021-03-23 18:02:42 +00:00
currentDisplay ( ) ;
2018-09-08 19:22:46 +00:00
} else { // done - exit
2021-03-23 18:02:42 +00:00
nextCity ( ) ;
2018-09-08 19:22:46 +00:00
}
return ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
function wait ( duration ) {
2021-03-23 18:02:42 +00:00
setTimeout ( function ( ) {
showCitySlides ( location , ++ idx ) ;
} , duration ) ;
2018-09-08 19:22:46 +00:00
}
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
function resizeText ( text ) {
2021-08-24 23:10:16 +00:00
var s = 52 ,
2018-09-08 19:22:46 +00:00
$container = $ ( '.info-slide-content.forecast .content' ) ,
2021-08-24 23:10:16 +00:00
$test = $ ( '<div style="position:absolute;top:100%;"></div>' ) . appendTo ( $container ) . css ( 'font-size' , s + 'px' ) . css ( 'line-height' , '125%' ) . html ( text ) ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
// have to display parent so we can get measurements
$container . closest ( '.info-slide-content' ) . show ( ) ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
$test . width ( $container . width ( ) ) ;
2021-08-24 23:10:16 +00:00
while ( $test . outerHeight ( true ) >= ( 400 ) ) {
2018-09-08 19:22:46 +00:00
s -= 1 ;
$test . css ( 'font-size' , s + 'px' ) ;
}
$container . closest ( '.info-slide-content' ) . hide ( ) ;
$container . text ( text ) . css ( 'font-size' , s + 'px' ) ;
$test . remove ( ) ;
2021-03-23 18:02:42 +00:00
}
2018-09-08 19:22:46 +00:00
//doDisplay = displays[ keys[idx] ]();
// increment the pointer
//idx = (++idx===keys.length ? 0 : idx);
2021-03-23 18:02:42 +00:00
//if (text) {
2018-09-08 19:22:46 +00:00
// $('#current-info').html(text);
// setTimeout(function(){ displayAtmospheric(idx) }, 6000); // 6 second increment loop
//} else {
// nothing to display - skip to the next one
2021-03-23 18:02:42 +00:00
// setTimeout(function(){ displayAtmospheric(idx) }, 0);
//}
2018-09-08 19:22:46 +00:00
/ *
( Main City )
Currently ( 10 sec )
Local Doppler Radar or Radar / Satellite ( 15 sec , zoomed out with cloud cover )
2021-04-02 01:44:38 +00:00
2018-09-08 19:22:46 +00:00
Local Forecast
- Today ( 10 sec )
- Tonight ( 10 sec )
- Tomorrow ( name day ) ( 10 sec )
- Tomorrow ( name day ) Night ( 10 sec )
2021-04-02 01:44:38 +00:00
or
Daypart
2018-09-08 19:22:46 +00:00
Extended Forecast ( 5 day columns )
2021-04-02 01:44:38 +00:00
Almanac ( to be made )
2018-09-08 19:22:46 +00:00
( Per City )
Local Doppler Radar ( center on city )
Currently
Local Doppler Radar
Today ' s Forecast
Extended Forecast ( 5 day columns )
* /
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
//idx++;
//if (idx<=0){
2021-03-23 18:02:42 +00:00
setTimeout ( cityLoop , 3000 ) ; // change to 60000 for production
2018-09-08 19:22:46 +00:00
//} else {
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
//}
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
}
2021-03-23 18:02:42 +00:00
2021-08-24 23:10:16 +00:00
function fadeToContent ( to , callfirst ) {
}
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
function advanceHeader ( ) {
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
// swap current
var $cities = $ ( '#info-slides-header .city' ) ,
$scroller = $ ( '#info-slides-header .hscroller' ) ,
left ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
$ ( $cities [ 0 ] ) . removeClass ( 'current' ) ;
$ ( $cities [ 1 ] ) . addClass ( 'current' ) ;
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
// animate move left
left = $scroller . position ( ) . left - $ ( $cities [ 1 ] ) . position ( ) . left ;
$scroller . animate ( { 'left' : left + 'px' } , 700 ,
function ( ) {
// on completion, move the old one to the end
$scroller . css ( 'left' , '' ) ;
$ ( $cities [ 0 ] ) . appendTo ( $scroller ) ;
2021-03-23 18:02:42 +00:00
$ ( '#info-slides-header span' ) . first ( ) . appendTo ( $scroller ) ;
2018-09-08 19:22:46 +00:00
} )
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
}
2021-03-23 18:02:42 +00:00
2018-09-08 19:22:46 +00:00
function buildHeader ( ) {
var city , first , woeid ,
cities = '' ,
2021-08-24 23:10:16 +00:00
arrow = '<span class="divider-arrow" style="font-family: ZemestroStd "><</span>' ,
radar = '<span class="city radar">LOCAL RADAR</span>' ,
golf = '<span class="city golf">GOLF</span>' ,
beach = '<span class="city beach">BOAT AND BEACH</span>' ,
health = '<span class="city healthh">HEALTH</span>' ,
airport = '<span class="city airport">AIRPORTS</span>' ;
2018-09-08 19:22:46 +00:00
for ( var location of dataMan . locations ) {
city = location . city ;
2021-03-23 18:02:42 +00:00
cities += arrow + '<span class="city" data-woeid="' + location . woeid + '">' + city + '</span>' ;
2018-09-08 19:22:46 +00:00
}
2021-08-24 23:41:15 +00:00
$ ( '#info-slides-header .hscroller' ) . append ( arrow + cities + arrow + ( radar + arrow + airport + arrow + health + cities + arrow ) . repeat ( 4 ) ) ;
2021-03-23 18:02:42 +00:00
}
2018-09-08 19:22:46 +00:00
2021-03-23 18:02:42 +00:00
} // end function