/* headings: RADAR < MAIN CITY < CITY 1 < CITY 2 */ // load slide data function Slides(dataMan) { severemode = false; var radarSlideDuration = 60000, slideDelay = 10000; // for later var selectval = 0; 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() { $.getJSON('https://api.weather.com/v3/alerts/detail?alertId='+ foreDataAlert.alerts[sret[severeidx]].detailKey +'&format=json&language=en-US&apiKey=' + api_key, function(data) { $('.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; $.getJSON('https://api.weather.com/v3/alerts/detail?alertId='+ foreDataAlert.alerts[ret[0]].detailKey +'&format=json&language=en-US&apiKey=' + api_key, function(data) { $('.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}) }); } } } buildHeader(); //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); // loop cities function nextCity(){ //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("SEVERE WEATHER UPDATE"); $('.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) + "

") } else { page2.push(foreDataAlert.alerts[i].eventDescription + " in effect until " + getexpiredate(foreDataAlert.alerts[ret[i]].expireTimeLocal) + "

") } } $('.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(); } } } } else { //non severe advanceHeader(); var city = $('#info-slides-header .city.current'); // is radar or city? if (city[0].dataset.woeid) { // show slide deck for the current city showCitySlides( dataMan.location(city[0].dataset.woeid), 0 ); } else { 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); } // radar //showRadar(dataMan.locations[0].lat, dataMan.locations[0].long, 8); //setTimeout(function() { weatherAudio.playLocalRadar() }, 2000 ); // show for how long? //setTimeout(nextCity, 60000); } } } function showRadar(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); }); }, time); } 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= 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
' + ((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; i0) ) { 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
") } else { page2.push(foreDataAlert.alerts[i].eventDescription + "in effect until " + getexpiredate(foreDataAlert.alerts[ret[i]].expireTimeLocal) + "

") } } $('.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)}; } // Currently (10 sec) ,currentConditions() { $('.city-info-slide #subhead-title').text('Currently'); $('.city-info-slide #subhead-city').text(location.city); var obsData = location.observations, strLabels = 'Humidity
Dew Point
Pressure
Wind
', strData = obsData(0).relativeHumidity + '%
' + obsData(0).temperatureDewPoint + '
' + obsData(0).pressureAltimeter + ((obsData(0).pressureTendencyCode === 1 || obsData(0).pressureTendencyCode === 3) ? '↑' : (obsData(0).pressureTendencyCode === 2 || obsData(0).pressureTendencyCode === 4) ? '↓' : ' S') + '
' + ((obsData(0).windDirectionCardinal == "CALM") ? 'calm' : obsData(0).windDirectionCardinal) + ' ' + ((obsData(0).windSpeed === 0) ? '' : obsData(0).windSpeed) + '
'; if (obsData(0).windGust!=undefined) { strLabels+='Gusts
'; strData+=obsData(0).windGust + '
'; } else { strLabels+='Gusts
'; strData+='none
'; } 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) strLabels+='Wind Chill'; strData+= windchill; } else if (parseInt(obsData(0).temperature)>=80 && parseInt(obsData(0).relativeHumidity)>=40 ){ strLabels+='Heat Index'; var heatindexx = heatIndex(obsData(0).temperature, obsData(0).relativeHumidity) + '°'; strData+=heatindexx }; $('.city-info .frost-pane .labels').html(strLabels); $('.city-info .frost-pane .data').html(strData); // right pane $('.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); } // Local Doppler Radar or Radar/Satellite (15 sec, zoomed out with cloud cover) ,localDoppler(){ showRadar(location.lat, location.long, 8, slideDelay); wait(slideDelay + 500); } // daypart / hourly ,forecast(fidx) { //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 $('.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]])); for (var i of indexes) { temps.push(foreDataHourly.temperature[i]); } $('.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]]) + '")'); function buildHourlyTimeTitle(time){ var hour=dateFns.getHours(time); if (hour===0) { return 'Midnight'; } else if (hour===12){ return 'Noon'; } return (dateFns.format(time,'h a')).replace(" ", ""); } //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 hour = dateFns.getHours(data.validTimeLocal[i] ); if ( dateFns.isAfter(data.validTimeLocal[i], now) && (hour==start || ret.length>0) ) { 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); // title based on the first hour reported switch (dateFns.getHours(time)) { 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"; case 12: return "Today's Forecast"; case 15: return "Today's Forecast"; case 17: return "Tonight's Forecast"; case 20: return "Tonight's Forecast" } } // calculate height of tempbars $('.city-info-slide #subhead-title').text(buildHourlyHeaderTitle(foreDataHourly.validTimeLocal[indexes[0]])); 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(){ temp = foreDataHourly.temperature[indexes[i]] 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 }) //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); } else { // Local Forecast -Today (10 sec) var div = '.info-slide-content.forecast ', forecasts = dataMan.locations[0].forecasts('daily'); var correct = 0; function fillinfo() { fidx = (fidx===undefined ? 0 : fidx); if (forecasts.daypart[0].daypartName[0] == null && fidx == 0) { correct = 1; fidx = 1; } $('.city-info-slide #subhead-title').text('Local Forecast'); //replace tomorrow $(div + '.title').text(forecasts.daypart[0].daypartName[fidx].replace('Tomorrow', forecasts.dayOfWeek[fidx])); // content 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] : '')); } if (fidx === 0) { weatherAudio.playLocalforecasti(); } $('.city-info-slide').fadeIn(0); fillinfo(); $('.info-slide-content.forecast').fadeIn(500); setTimeout( function() { if (fidx<3 + correct) { $('.info-slide-content.forecast').fadeOut(500, function() { currentDisplay(++fidx); fillinfo(); }); } else { $('.info-slide-content.forecast').fadeOut(500, function() { selectval = selectval + 1 if (selectval === 4) {selectval = 0} wait(0); }); } }, slideDelay) } } // Extended Forecast(5 day columns) ,extendedForecast() { $('.city-info-slide #subhead-title').text('Extended Forecast'); var foreDataDaily = dataMan.locations[0].forecasts('daily'); var icons, weekend, startidx = 0, startidxdayonly = 0; if (foreDataDaily.daypart[0].daypartName[0] == null) { startidx = 2; startidxdayonly = 1; } //days $('.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)) //icons $('.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]) + '")'); //conditions $('.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 ')); //high $('.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]) //low $('.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]) $('.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) }; } }, keys = Object.keys(displays); var daypart; if (idx') .appendTo($container) .css('font-size', s + 'px') .css('line-height', '125%') .html(text); // have to display parent so we can get measurements $container.closest('.info-slide-content').show(); $test.width($container.width() ); while ($test.outerHeight(true) >= (400) ) { s -= 1; $test.css('font-size', s + 'px'); } $container.closest('.info-slide-content').hide(); $container .text(text) .css('font-size', s + 'px'); $test.remove(); } //doDisplay = displays[ keys[idx] ](); // increment the pointer //idx = (++idx===keys.length ? 0 : idx); //if (text) { // $('#current-info').html(text); // setTimeout(function(){ displayAtmospheric(idx) }, 6000); // 6 second increment loop //} else { // nothing to display - skip to the next one // setTimeout(function(){ displayAtmospheric(idx) }, 0); //} /* (Main City) Currently (10 sec) Local Doppler Radar or Radar/Satellite (15 sec, zoomed out with cloud cover) Local Forecast -Today (10 sec) -Tonight (10 sec) -Tomorrow (name day) (10 sec) -Tomorrow (name day) Night (10 sec) or Daypart Extended Forecast(5 day columns) Almanac (to be made) (Per City) Local Doppler Radar (center on city) Currently Local Doppler Radar Today's Forecast Extended Forecast(5 day columns) */ //idx++; //if (idx<=0){ setTimeout(cityLoop, 3000); // change to 60000 for production //} else { //} } function fadeToContent(to, callfirst) { } function advanceHeader() { // swap current var $cities = $('#info-slides-header .city'), $scroller = $('#info-slides-header .hscroller'), left; $($cities[0]).removeClass('current'); $($cities[1]).addClass('current'); // 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); $('#info-slides-header span').first().appendTo($scroller); }) } function buildHeader(){ var city, first, woeid, cities='', arrow='<', radar='LOCAL RADAR', golf='GOLF', beach='BOAT AND BEACH', health='HEALTH', airport='AIRPORTS'; for (var location of dataMan.locations) { city = location.city; cities += arrow+'' + city + ''; } $('#info-slides-header .hscroller').append(arrow + cities + arrow + (radar + arrow + airport + arrow + health + cities + arrow).repeat(4)); } } // end function