// HWeather.js // Version 1.1 2015-04-17 rxf // Wochetage in die richtige Reihenfolge gebracht // // Version 1.0 2012-11-20 rxf // Anzeige von Tabellen mit Bereichen // Ausdruck der Tabellen // Anleitung als POPUP var lineNo=0; var STW="Sternwarte Welzheim
"; // Nullfill: // Übergbenen Wert zweistellig machen, fall er nur einstellig ist function nullfill(n) { if(n < 10) { return("0"+n); } else return(""+n); } // Tabelle erzeugen function fillTables(werte, anz) { var unit = new Array(" °C", " %", " hPa", " mm", " km/h", " °"); if(anz == 0) { var txt = new Array("Temperatur", "Feuchte", "Luftdruck", "Regen ", "Wind-Geschwindigkeit", "Windrichtung"); var wrtmax = new Array(werte.TempMx, werte.HumiMx, werte.PressMx, werte.Rain, werte.WindSpeed); var wrtmin = new Array(werte.Temp, werte.Humi, werte.Press, werte.Rain, werte.WindSpeed, werte.WindDir); // var d = new Date(werte.Time * 1000); var year = werte.Time.substring(0,4); var month = werte.Time.substring(5,7); var day = werte.Time.substring(8,10); var hour = werte.Time.substring(11,13); var minute = werte.Time.substring(14); var ziel = ""; $("#tafelRange").remove(); $("#tafelSingle").remove(); $("", { id : "tafelSingle" }).appendTo("div #tabelle"); // if ((d.getMinutes() != 0) || (d.getHours() != 0)) { if ((minute != 0) || (hour != 0)) { $( "", { "class" : (i & 1 == 1) ? "gerade" : "ungerade", id : "trx" + i }).appendTo("table"); ziel = "table #trx" + i; if (i == 3) { $( "", { "class" : i == 1 ? "gerade" : "ungerade", id : "trx" + i }).appendTo("table"); ziel = "table #trx" + i; $("", { "class" : i == 1 ? "gerade" : "ungerade", id : "trn" + i }).appendTo("table"); ziel = "table #trn" + i; $("", { "class" : "gerade", id : "trr" }).appendTo("table"); $("", { "class" : "ungerade", id : "trw" }).appendTo("table"); $("
", { html : STW + "Wetter am " + day + "." + month + "." + year + " um " + hour + ":" + minute }).appendTo("table"); for ( var i = 0; i < 6; i++) { $("
", { html : txt[i] + "bis " + hour + ":" + minute + " Uhr" }).appendTo(ziel); } else { $("", { html : txt[i] }).appendTo(ziel); } $("", { html : wrtmin[i] + unit[i] }).appendTo(ziel); } } else { $( "
", { html : STW + "Wetter-Werte für den " + day + "." + month + "." + year }).appendTo("table"); for ( var i = 0; i < 3; i++) { $("
", { rowspan : "2", html : txt[i] }).appendTo(ziel); $("", { "class" : "max small", html : "max." }).appendTo(ziel); $("", { "class" : "max", html : wrtmax[i] + unit[i] }).appendTo(ziel); $("
", { "class" : "min small", html : "min." }).appendTo(ziel); $("", { "class" : "min", html : wrtmin[i] + unit[i] }).appendTo(ziel); } $("
", { colspan : "2", html : txt[3] + "gesamt" }).appendTo("table #trr"); $("", { html : wrtmax[3] + unit[3] }).appendTo("table #trr"); $("
", { colspan : "2", html : "Max. " + txt[4] }).appendTo("table #trw"); $("", { "class" : "max", html : wrtmax[4] + unit[4] }).appendTo("table #trw"); } } else // hier ist es ein Datumsbereich { // alert("Datumsbereich"); for(var i=0; i°C", "Feuchte
%", "Luftdruck
hPa", "Regen
mm", "Wind-V
max km/h"); var minmax = new Array(" ","min","max","min","max","min","max"," "," "); $("#tafelSingle").remove(); $("#tafelRange").remove(); $("",{ id: "tafelRange" }).appendTo("div #tabelle"); // Überschrift basteln $("", { id:"trxh", "class": "ungerade" }).appendTo("table"); var ziel = "table #trxh"; for(var i=0; i<6; i++) { if(i==0) { $("", { id:"trx2", "class":"ungerade" }).appendTo("table"); ziel = "table #trx2"; for(var i=0; i<9; i++) { $("",{ id:"tr"+n, "class": (n&1==1)?"ungerade":"gerade" }).appendTo("table"); var ziel = "table #tr"+n; $("
",{ html:STW + "Wetter vom " + nullfill(sD.getDate()) + "." + nullfill(sD.getMonth()+1) + "." + sD.getFullYear() + " bis " + nullfill(eD.getDate()) + "." + nullfill(eD.getMonth()+1) + "." + eD.getFullYear() }).appendTo("table"); // Kopfzeile $("
",{ id: "dath", html: header[i] }).appendTo(ziel); } else if(i>=1 && i<=3) { $("",{ colspan: "2", html: header[i] }).appendTo(ziel); } else { $("",{ html: header[i] }).appendTo(ziel); } } // Unter der Kopfzeile die min/max $("
", { html: minmax[i] }).appendTo(ziel); } // Nun per AJAX-Call alle Werte hoeln und im Callback dann anzeigen var dt = new Date(sD); dt.setHours(0); dt.setMinutes(0); var days = Math.round(Math.abs(eD - dt) / (1000 * 60 * 60 * 24 )); if(days > 35) { alert("max. 35 Tage möglich !"); return; } doAjaxCall(dt,days+1); // ALLE Werte des gefragten Bereiches holen } // eine Datenzeile in der Tabelle befüllen function fillOneLine(wrt,datStr,n) { $("
", { html: datStr }).appendTo(ziel); for(var i=1; i<9; i++) { $("", { html: (wrt[1]==-17.8) ? "--" : wrt[i] }).appendTo(ziel); } } // Werte vom Server holen // s ist Datum/Uhrzeit als String im Format 'yy-mm-dd hh:mm' function doAjaxCall(datz, anz) { var date = { Jahr:'2012', Monat:'3', Tag:'23', Stunde:'0', Minute:'0', Anzahl:'1' }; date["Jahr"] = datz.getFullYear(); // Variable nun mit den Übergabewerten belegen date["Monat"] = datz.getMonth()+1; date["Tag"] = datz.getDate(); date["Stunde"] = datz.getHours(); date["Minute"] = datz.getMinutes(); date["Anzahl"] = anz; $.ajax( // AJAX-Call { type: "POST", // wir machen eine POST - Abfrage url: "HWett.php", // an diese Seite auf dem Server data: date, // mit diesen Daten (ein Array) success : function(erg){ // wenn Erfolg, dann if(erg.charAt(0)=='#') // DEBUG-Meldungen .. { alert(erg); // .. ausgeben und .. erg = erg.substr(erg.lastIndexOf('#')+2); // .. wegblenden } fillTables($.parseJSON(erg),anz); // die Tabelle ensprechend ausfüllen }, error: function(xh,t) { // wenn Error, dann eine Alertbox hinmalen alert("xh=" + xh + " t=" + t + xh.getAllResponseHeaders() + "\na) " + xh.responseText + "\nb) " + xh.statusText); }, }); } // Datepicker auf Deutsch einstellen $.datepicker.regional['de'] = { closeText: '', prevText: '<', nextText: '>', currentText: '', monthNames: ['Januar','Februar','März','April','Mai','Juni', 'Juli','August','September','Oktober','November','Dezember'], monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun', 'Jul','Aug','Sep','Okt','Nov','Dez'], dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], dayNamesShort: ['SON','MON','DIE','MIT','DON','FRE','SAM'], dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], weekHeader: 'KW', dateFormat: 'yyyy-mm-dd', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '' }; $.datepicker.setDefaults($.datepicker.regional['de']); // diese Einstellung nun übernehmen // Script-Aktionen // Wenn das Dokument geladen wird $(document).ready(function() { var sDate = $('#startdate'); var eDate = $('#enddate'); var maxDate = new Date(); // Datums-Zeit-Picker für die Startzeit sDate.datetimepicker( // Initialisierung des datetimepickers { showOn: 'focus' , // onFocus wird der Picker angezeigt dateFormat: "yy-mm-dd", // angezeigt wird in diesem Format defaultDate: -1, maxDate: "-1d", // max Datum unbegrenzt minDate: "2012-03-01", // min Datum: da beginnt unsere Datenbank closeText: "OK", // erst wenn OK geklickt wird, dann gehts weiter showOtherMonths: "true", // Monat via Pfeile wähleen lassen stepMinute: 5, // Zeischieber haben eien Auflösung von 5min timeText: "Uhrzeit", // Texte dazu hourText: "Stunde", minuteText : "Minute", onClose: function (dateText, inst) // was passiert, wenn OK gedrückt wird: { var dt = new Date(sDate.datepicker('getDate')); eDate.datepicker('option','minDate',sDate.datepicker('getDate')); // minWert des EndeDatums wird auf Startdatum gesetzt test = sDate.datepicker('getDate'); testm = new Date(test.getTime()); testm.setDate(testm.getDate() + 35); eDate.datepicker('option','maxDate',testm); eDate.attr("value",sDate.val().substring(0,10)); // Wert des EndeDatums wird auf das StartDatum gesetzt (ohne die Uhrzeit) doAjaxCall(dt,0); // und die Werte werden angefordert }, }); // Datumspicker für das Ende-Datum eDate.datepicker( { showOn: 'focus' , dateFormat: "yy-mm-dd", defaultDate: -1, maxDate: "-1d", showOtherMonths: "true", // showButtonPanel: "true", // closeText: "OK", // erst wenn OK geklickt wird, dann gehts weiter onClose: function (dateText, inst) // wenn ein Zeitpunkt gewählt ist, dann { var sdat = new Date(sDate.datepicker('getDate')); sDate.attr("value",$.datepicker.formatDate('yy-mm-dd', sdat)+" 00:00"); fillRangeTable(sDate.datepicker('getDate'), eDate.datepicker('getDate')); } }); // Drucken: $("#printbutton").click( function() { $('div#Area').jqprint(); }); // PopUp $("#manualbutton").popupWindow({ windowURL:"Anleitung.html", height: 350, width: 900, left: 50, top: 50 }); // nach oben scrollen $(window.parent).scrollTop(0); // damit der Anfang der Tabelle zu sehen ist // Inputfeld mit 'gestern' um 0h00 vorbelegen var yesterday = new Date(); yesterday.setDate(yesterday.getDate()-1); sDate.attr("value",$.datepicker.formatDate('yy-mm-dd', yesterday)+" 00:00"); // Startdatum auf 'gestern' eDate.attr("value",$.datepicker.formatDate('yy-mm-dd', yesterday)); // Enddatumn auch (aber ohne Uhrzeit) eDate.datepicker('option','minDate',sDate.datepicker('getDate')); // minWert des EndeDatums wird auf Startdatum gesetzt // Gleich mal die Anfrage an Server absetzen und damit die Tageswerete für das Startdatum holen var dt = new Date(sDate.datepicker('getDate')); doAjaxCall(dt,0); });