Willkommen,
Gast
|
|
|
|
Hoi zämeBeispiel der Datendarstellung von Meteoplug anhand eines Templates:
http://www.meteoplug.com/cgi-bin/meteochart.cgi?draw=949296989f8cced8ccc2dfddd4c6dcd8dbd0db89c0c8cbc5c3dddcc2c9c1
Anbei eine Anleitung zum Erstellen des Templates:1. In der Grafikdefinition einen Namen wählen für das Template, zB. 'mein Template'2. Code für 'mein Template':template=http://www.kaikowetter.ch/meteoplug/meinetemplatedatei.htmldirlist=Norden,Nord-NO,Nordosten,Ost-NO,Osten,Ost-SO,Suedosten,Sued-SO,Sueden,Sued-SW,Suedwesten,West-SW,Westen,West-NW,Nordwesten,Nord-NWfctextlist=Regen,bedeckt,wechselhaft,sonnig,Schnee,leicht_bewoelkt,klar,Nieseln,SchneeflockenWichtig ist die erste Zeile, welche den Pfad auf die 'abzuarbeitende Datei' angibt, welche bei diesem Beispiel den Namen 'meinetemplatedatei.html hat.Diese Datei speichert Ihr auf 'eurem' Webspace.Die weiteren Angaben dienen der späteren Datenausgabe bei der Windrichtung und der Wettervorhersage.3. meinetemplatedatei.html ist normaler html oder php-code, in welchem Ihr Eure Wetterseite nach belieben zusammenstellen könnt.Nachfolgend ein Beispiel wo diverse meteoplug-Variablen benutzt und abgearbeitet werden:Alle Angaben in {} Klammern sind durch Eure eigenen Angaben zu ersetzen.{Seitentitel wählen!}
[url=http://{Link auf Gemeindehomepage einfügen wählen!}] [img width=1080]{Link auf Gemeindewappenbild einfügen!}[/url] Wetterstation {Gemeinde und Standorthöhe eingeben!} TAGESWERTE [url=http://{Link auf Tageswertetabelle einfügen!}][img width=1080]{Link auf Tabellengrafik einfügen!}[/url] MONATSWERTE [url=http://{Link auf Monatswertetabelle einfügen!}][img width=1080]{Link auf Tabellengrafik einfügen!}[/url] JAHRESWERTE [url=http://{Link auf Jahreswertetabelle einfügen!}][img width=1080]{Link auf Tabellengrafik einfügen!}[/url] EXTREMWERTE Datum: [actual_day1_misc_localtime_8_2:--].[actual_day1_misc_localtime_5_2:--].[actual_day1_misc_localtime_0_4:--] aktualisiert um [actual_day1_misc_uploadlocaltime_11_5:] Uhr Monat [actual_day1_misc_uploadlocaltime_5_2:] Jahr [actual_day1_misc_uploadlocaltime_0_4:] Daten seit {Datum einfügen!} tr> Temperatur aktuell: [actual_min5_th0_temp_1:--]°C Ø [actual_month1_th0_temp_1:?]°C Ø [actual_year1_th0_temp_1:?]°C Ø [actual_alltime_th0_temp_1:?]°C Tiefstwert [actual_day1_th0_tempmin_1:--]°C um [actual_day1_th0_tempmintime_11_5:--] Uhr [actual_month1_th0_tempmin_1:--]°C um [actual_month1_th0_tempmintime_11_5:--] Uhr am [actual_month1_th0_tempmintime_8_2:--].[actual_month1_th0_tempmintime_5_2:--].[actual_month1_th0_tempmintime_0_4:--] [actual_year1_th0_tempmin_1:--]°C um [actual_year1_th0_tempmintime_11_5:--] Uhr am [actual_year1_th0_tempmintime_8_2:--].[actual_year1_th0_tempmintime_5_2:--].[actual_year1_th0_tempmintime_0_4:--] [actual_alltime_th0_tempmin_1:--]°C um [actual_alltime_th0_tempmintime_11_5:--] Uhr am [actual_alltime_th0_tempmintime_8_2:--].[actual_alltime_th0_tempmintime_5_2:--].[actual_alltime_th0_tempmintime_0_4:--] Höchstwert [actual_day1_th0_tempmax_1:--]°C um [actual_day1_th0_tempmaxtime_11_5:--] Uhr [actual_month1_th0_tempmax_1:--]°C um [actual_month1_th0_tempmaxtime_11_5:--] Uhr am [actual_month1_th0_tempmaxtime_8_2:--].[actual_month1_th0_tempmaxtime_5_2:--].[actual_month1_th0_tempmaxtime_0_4:--] [actual_year1_th0_tempmax_1:--]°C um [actual_year1_th0_tempmaxtime_11_5:--] Uhr am [actual_year1_th0_tempmaxtime_8_2:--].[actual_year1_th0_tempmaxtime_5_2:--].[actual_year1_th0_tempmaxtime_0_4:--] [actual_alltime_th0_tempmax_1:--]°C um [actual_alltime_th0_tempmaxtime_11_5:--] Uhr am [actual_alltime_th0_tempmaxtime_8_2:--].[actual_alltime_th0_tempmaxtime_5_2:--].[actual_alltime_th0_tempmaxtime_0_4:--] Taupunkt aktuell: [actual_min5_th0_dew_1:--]°C Ø [actual_month1_th0_dew_1:?]°C Ø [actual_year1_th0_dew_1:?]°C Ø [actual_alltime_th0_dew_1:?]°C Tiefstwert [actual_day1_th0_dewmin_1:--]°C um [actual_day1_th0_dewmintime_11_5:--] Uhr [actual_month1_th0_dewmin_1:--]°C um [actual_month1_th0_dewmintime_11_5:--] Uhr am [actual_month1_th0_dewmintime_8_2:--].[actual_month1_th0_dewmintime_5_2:--].[actual_month1_th0_dewmintime_0_4:--] [actual_year1_th0_dewmin_1:--]°C um [actual_year1_th0_dewmintime_11_5:--] Uhr am [actual_year1_th0_dewmintime_8_2:--].[actual_year1_th0_dewmintime_5_2:--].[actual_year1_th0_dewmintime_0_4:--] [actual_alltime_th0_dewmin_1:--]°C um [actual_alltime_th0_dewmintime_11_5:--] Uhr am [actual_alltime_th0_dewmintime_8_2:--].[actual_alltime_th0_dewmintime_5_2:--].[actual_alltime_th0_dewmintime_0_4:--] Höchstwert [actual_day1_th0_dewmax_1:--]°C um [actual_day1_th0_dewmaxtime_11_5:--] Uhr [actual_month1_th0_dewmax_1:--]°C um [actual_month1_th0_dewmaxtime_11_5:--] Uhr am [actual_month1_th0_dewmaxtime_8_2:--].[actual_month1_th0_dewmaxtime_5_2:--].[actual_month1_th0_dewmaxtime_0_4:--] [actual_year1_th0_dewmax_1:--]°C um [actual_year1_th0_dewmaxtime_11_5:--] Uhr am [actual_year1_th0_dewmaxtime_8_2:--].[actual_year1_th0_dewmaxtime_5_2:--].[actual_year1_th0_dewmaxtime_0_4:--] [actual_alltime_th0_dewmax_1:--]°C um [actual_alltime_th0_dewmaxtime_11_5:--] Uhr am [actual_alltime_th0_dewmaxtime_8_2:--].[actual_alltime_th0_dewmaxtime_5_2:--].[actual_alltime_th0_dewmaxtime_0_4:--] Luftfeuchte aktuell: [actual_min5_th0_hum_0:--] % Ø [actual_month1_th0_hum_0:--] % Ø [actual_year1_th0_hum_0:--] % Ø [actual_alltime_th0_hum_0:--] % Tagesgang-Minima [actual_day1_th0_hummax_0:--]% bis [actual_day1_th0_hummin_0:--]% [actual_month1_th0_hummin_0:--]% um [actual_month1_th0_hummintime_11_5:--] Uhr am [actual_month1_th0_hummintime_8_2:--].[actual_month1_th0_hummintime_5_2:--].[actual_month1_th0_hummintime_0_4:--] [actual_year1_th0_hummin_0:--]% um [actual_year1_th0_hummintime_11_5:--] Uhr am [actual_year1_th0_hummintime_8_2:--].[actual_year1_th0_hummintime_5_2:--].[actual_year1_th0_hummintime_0_4:--] [actual_alltime_th0_hummin_0:--]% um [actual_alltime_th0_hummintime_11_5:--] Uhr am [actual_alltime_th0_hummintime_8_2:--].[actual_alltime_th0_hummintime_5_2:--].[actual_alltime_th0_hummintime_0_4:--] Solarstrahlung aktuell: [actual_min5_sol0_rad_1:--] W/m² Ø [actual_month1_sol0_rad_0:--] W/m² Ø [actual_year1_sol0_rad_0:--n] W/m² Ø [actual_alltime_sol0_rad_0:--] W/m² Höchstwert [actual_day1_sol0_radmax_0:--] W/m² um [actual_day1_sol0_radmaxtime_11_5:--] Uhr [actual_month1_sol0_radmax_0:--] W/m² um [actual_month1_sol0_radmaxtime_11_5:--] Uhr am [actual_month1_sol0_radmaxtime_8_2:--].[actual_month1_sol0_radmaxtime_5_2:--].[actual_month1_sol0_radmaxtime_0_4:--] [actual_year1_sol0_radmax_0:--] W/m² um [actual_year1_sol0_radmaxtime_11_5:--] Uhr am [actual_year1_sol0_radmaxtime_8_2:--].[actual_year1_sol0_radmaxtime_5_2:--].[actual_year1_sol0_radmaxtime_0_4:--] [actual_alltime_sol0_radmax_0:--] W/m² um [actual_alltime_sol0_radmaxtime_11_5:--] Uhr am [actual_alltime_sol0_radmaxtime_8_2:--].[actual_alltime_sol0_radmaxtime_5_2:--].[actual_alltime_sol0_radmaxtime_0_4:--] Wind aktuell: (5min-Mittel) [actual_min5_wind0_gust_1_3.6:?] km/h aus [actual_min5_wind0_maindirtext:?] Ø [actual_month1_wind0_gust_1_3.6:?] km/h Ø [actual_year1_wind0_gust_1_3.6:?] km/h Ø [actual_alltime_wind0_gust_1_3.6:?] km/h Böe letzte Stunde [actual_hour1_wind0_gustmax_1_3.6:?] km/h aus [actual_hour1_wind0_highdirtext:?] Maximale Windböe Maximale Windböe Maximale Windböe maximale Windböe [1D_day1_wind0_gustmax_1_3.6:?] km/h um [1D_day1_wind0_gustmaxtime_11_5:?] Uhr [actual_month1_wind0_gustmax_1_3.6:?] km/h um [actual_month1_wind0_gustmaxtime_11_5:--] Uhr am [actual_month1_wind0_gustmaxtime_8_2:--].[actual_month1_wind0_gustmaxtime_5_2:--].[actual_month1_wind0_gustmaxtime_0_4:--] [actual_year1_wind0_gustmax_1_3.6:?] km/h um [actual_year1_wind0_gustmaxtime_11_5:--] Uhr am [actual_year1_wind0_gustmaxtime_8_2:--].[actual_year1_wind0_gustmaxtime_5_2:--].[actual_year1_wind0_gustmaxtime_0_4:--] [actual_alltime_wind0_gustmax_1_3.6:?] km/h um [actual_alltime_wind0_gustmaxtime_11_5:--] Uhr am [actual_alltime_wind0_gustmaxtime_8_2:--].[actual_alltime_wind0_gustmaxtime_5_2:--].[actual_alltime_wind0_gustmaxtime_0_4:--] Richtung aus [1D_day1_wind0_highdirtext:?] aus [actual_month1_wind0_highdirtext:?] aus [actual_year1_wind0_highdirtext:?] aus [actual_alltime_wind0_highdirtext:?] Luftdruck aktuell: [actual_min5_thb0_seapress_1:--] hPa Ø [actual_month1_thb0_seapress_1:?] hPa Ø [actual_year1_thb0_seapress_1:?] hPa Ø [actual_alltime_thb0_seapress_1:?] hPa Tiefstwert [actual_day1_thb0_seapressmin_1:--] hPa um [actual_day1_thb0_pressmintime_11_5:--] Uhr [actual_month1_thb0_seapressmin_1:--] hPa um [actual_month1_thb0_pressmintime_11_5:--] Uhr am [actual_month1_thb0_pressmintime_8_2:--].[actual_month1_thb0_pressmintime_5_2:--].[actual_month1_thb0_pressmintime_0_4:--] [actual_year1_thb0_seapressmin_1:--] hPa um [actual_year1_thb0_pressmintime_11_5:--] Uhr am [actual_year1_thb0_pressmintime_8_2:--].[actual_year1_thb0_pressmintime_5_2:--].[actual_year1_thb0_pressmintime_0_4:--] [actual_alltime_thb0_seapressmin_1:--] hPa um [actual_alltime_thb0_pressmintime_11_5:--] Uhr am [actual_alltime_thb0_pressmintime_8_2:--].[actual_alltime_thb0_pressmintime_5_2:--].[actual_alltime_thb0_pressmintime_0_4:--] Höchstwert [actual_day1_thb0_seapressmax_1:--] hPa um [actual_day1_thb0_pressmaxtime_11_5:--] Uhr [actual_month1_thb0_seapressmax_1:--] hPa um [actual_month1_thb0_pressmaxtime_11_5:--] Uhr am [actual_month1_thb0_pressmaxtime_8_2:--].[actual_month1_thb0_pressmaxtime_5_2:--].[actual_month1_thb0_pressmaxtime_0_4:--] [actual_year1_thb0_seapressmax_1:--] hPa um [actual_year1_thb0_pressmaxtime_11_5:--] Uhr am [actual_year1_thb0_pressmaxtime_8_2:--].[actual_year1_thb0_pressmaxtime_5_2:--].[actual_year1_thb0_pressmaxtime_0_4:--] [actual_alltime_thb0_seapressmax_1:--] hPa um [actual_alltime_thb0_pressmaxtime_11_5:--] Uhr am [actual_alltime_thb0_pressmaxtime_8_2:--].[actual_alltime_thb0_pressmaxtime_5_2:--].[actual_alltime_thb0_pressmaxtime_0_4:--] Regen Tagessumme: [actual_day1_rain0_total_1:?] mm Monatssumme: [actual_month1_rain0_total_1:?] mm Jahressumme: [actual_year1_rain0_total_1:?] mm {Grösste Jahresmenge einfügen!} im Jahr {Jahr einfügen!} letzte Stunde [actual_hour1_rain0_total_1:?] mm Regentage [actual_month1_rain0_days_0:?] Regentage [actual_year1_rain0_days_0:?] Höchstwert [1D_day1_rain0_ratemax_1:?] mm/h um [1D_day1_rain0_ratemaxtime_11_5:?] Uhr [actual_month1_rain0_ratemax_0:--] mm/h um [actual_month1_rain0_ratemaxtime_11_5:--] Uhr am [actual_month1_rain0_ratemaxtime_8_2:--].[actual_month1_rain0_ratemaxtime_5_2:--].[actual_month1_rain0_ratemaxtime_0_4:--] [actual_year1_rain0_ratemax_0:--] mm/h um [actual_year1_rain0_ratemaxtime_11_5:--] Uhr am [actual_year1_rain0_ratemaxtime_8_2:--].[actual_year1_rain0_ratemaxtime_5_2:--].[actual_year1_rain0_ratemaxtime_0_4:--] [actual_alltime_rain0_ratemax_0:--] mm/h um [actual_alltime_rain0_ratemaxtime_11_5:--] Uhr am [actual_alltime_rain0_ratemaxtime_8_2:--].[actual_alltime_rain0_ratemaxtime_5_2:--].[actual_alltime_rain0_ratemaxtime_0_4:--] Wettertrend [1D_day1_thb0_forecasttext:?] TAGESGRAFIKEN MONATSGRAFIKEN JAHRESGRAFIKEN [url=http://{Link auf Tagesgrafik einfügen!}][img]{Link auf Temperaturgrafikicon einfügen!}[/url] [url=http://{Link auf Tagesgrafik einfügen!}][img]{Link auf Windgrafikicon einfügen!} [/url] [url=http://{Link auf Tagesgrafik einfügen!}][img]{Link auf Regengrafikicon einfügen!}[/url] [img]{Link auf Kartengrafikicon einfügen!} [url=http://{Link auf Monatsgrafik einfügen!}][img]{Link auf Temperaturgrafikicon einfügen!}[/url] [url=http://{Link auf Monatsgrafik einfügen!}][img]{Link auf Windgrafikicon einfügen!} [/url] [url=http://{Link auf Monatsgrafik einfügen!}][img]{Link auf Regengrafikicon einfügen!}[/url] ">[img]{Link auf Kartengrafikicon einfügen!} [url=http://{Link auf Jahresgrafik einfügen!}][img]{Link auf Temperaturgrafikicon einfügen!}[/url][url=http://{Link auf Jahresgrafik einfügen!}][img]{Link auf Windgrafikicon einfügen!} [/url][url=http://{Link auf Jahresgrafik einfügen!}][img]{Link auf Regengrafikicon einfügen!}[/url] [img]{Link auf Kartengrafikicon einfügen!} ©[actual_day1_misc_localtime_0_4:--]Kaiko, Daten generiert mit: M e t e o P l u g 4. Folgende Grafikicons könnt Ihr herunterladen und zum eigenen Gebrauch verwenden:regengrafik.gif - http://www.kaikowetter.ch/meteoplug/regengrafik.gif windgrafik.gif - http://www.kaikowetter.ch/meteoplug/windgrafik.gif tempgrafik.gif - http://www.kaikowetter.ch/meteoplug/tempgrafik.gif tab.gif - http://www.kaikowetter.ch/meteoplug/tab.gif card.gif - http://www.kaikowetter.ch/meteoplug/card.gif Grüsse Kaiko |
Bitte Anmelden um der Konversation beizutreten. |
|
Salü Kaiko
Besten Dank für das Veröffentlichen der "Steuerungs-Templates". Ist nicht selbstverständlich - schliesslich sind da "Stunden" dahinter. Grüsse Kusi |
Bitte Anmelden um der Konversation beizutreten. |
|
Hoi zäme
Korrigenda für das obige Template: Die Variable für den Wettertrend sollte [actual_min5_thb0_forecasttext:?] heissen, damit der aktuelle Wert der Vorhersage eingetragen wird. Gruss Kaiko |
Bitte Anmelden um der Konversation beizutreten. |
|
Hoi zäme
Neu habe ich das Template um eine Archivfunktion erweitert: http://www.meteoplug.com/cgi-bin/meteochart.cgi?draw=6c6b696c6a790b0816100d11071236420d07060e362a2939343e Es können nun Tabellen und Grafiken aus der Datenbank mit der Kalenderfunktion oben links direkt abgefragt und angezeigt werden. Dies mit den Tageswerten, den Monatswerten, und den Jahreswerten. Der Code dazu: (in meteoplug je ein Template erstellen) Als Beispiel für die Tageswerte: // CalendarView (for Prototype) // calendarview.org // // Maintained by Justin Mecham // // Portions Copyright 2002-2005 Mihai Bazon // // This calendar is based very loosely on the Dynarch Calendar in that it was // used as a base, but completely gutted and more or less rewritten in place // to use the Prototype JavaScript library. // // As such, CalendarView is licensed under the terms of the GNU Lesser General // Public License (LGPL). More information on the Dynarch Calendar can be // found at: // // www.dynarch.com/projects/calendar // var Calendar = Class.create() // // Constants // Calendar.VERSION = '1.2' Calendar.DAY_NAMES = new Array( 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag' ) Calendar.SHORT_DAY_NAMES = new Array( 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So' ) Calendar.MONTH_NAMES = new Array( 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ) Calendar.SHORT_MONTH_NAMES = new Array( 'Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez' ) Calendar.NAV_PREVIOUS_YEAR = -2 Calendar.NAV_PREVIOUS_MONTH = -1 Calendar.NAV_TODAY = 0 Calendar.NAV_NEXT_MONTH = 1 Calendar.NAV_NEXT_YEAR = 2 // // Static Methods // // This gets called when the user presses a mouse button anywhere in the // document, if the calendar is shown. If the click was outside the open // calendar this function closes it. Calendar._checkCalendar = function(event) { if (!window._popupCalendar) return false if (Element.descendantOf(Event.element(event), window._popupCalendar.container)) return window._popupCalendar.callCloseHandler() return Event.stop(event) } // // Event Handlers // Calendar.handleMouseDownEvent = function(event) { Event.observe(document, 'mouseup', Calendar.handleMouseUpEvent) Event.stop(event) } // XXX I am not happy with how clicks of different actions are handled. Need to // clean this up! Calendar.handleMouseUpEvent = function(event) { var el = Event.element(event) var calendar = el.calendar var isNewDate = false // If the element that was clicked on does not have an associated Calendar // object, return as we have nothing to do. if (!calendar) return false // Clicked on a day if (typeof el.navAction == 'undefined') { if (calendar.currentDateElement) { Element.removeClassName(calendar.currentDateElement, 'selected') Element.addClassName(el, 'selected') calendar.shouldClose = (calendar.currentDateElement == el) if (!calendar.shouldClose) calendar.currentDateElement = el } calendar.date.setDateOnly(el.date) isNewDate = true calendar.shouldClose = !el.hasClassName('otherDay') var isOtherMonth = !calendar.shouldClose if (isOtherMonth) calendar.update(calendar.date) } // Clicked on an action button else { var date = new Date(calendar.date) if (el.navAction == Calendar.NAV_TODAY) date.setDateOnly(new Date()) var year = date.getFullYear() var mon = date.getMonth() function setMonth(m) { var day = date.getDate() var max = date.getMonthDays(m) if (day > max) date.setDate(max) date.setMonth(m) } switch (el.navAction) { // Previous Year case Calendar.NAV_PREVIOUS_YEAR: if (year > calendar.minYear) date.setFullYear(year - 1) break // Previous Month case Calendar.NAV_PREVIOUS_MONTH: if (mon > 0) { setMonth(mon - 1) } else if (year-- > calendar.minYear) { date.setFullYear(year) setMonth(11) } break // Today case Calendar.NAV_TODAY: break // Next Month case Calendar.NAV_NEXT_MONTH: if (mon < 11) { setMonth(mon + 1) } else if (year < calendar.maxYear) { date.setFullYear(year + 1) setMonth(0) } break // Next Year case Calendar.NAV_NEXT_YEAR: if (year < calendar.maxYear) date.setFullYear(year + 1) break } if (!date.equalsTo(calendar.date)) { calendar.setDate(date) isNewDate = true } else if (el.navAction == 0) { isNewDate = (calendar.shouldClose = true) } } if (isNewDate) event && calendar.callSelectHandler() if (calendar.shouldClose) event && calendar.callCloseHandler() Event.stopObserving(document, 'mouseup', Calendar.handleMouseUpEvent) return Event.stop(event) } Calendar.defaultSelectHandler = function(calendar) { if (!calendar.dateField) return false // Update dateField value if (calendar.dateField.tagName == 'DIV') Element.update(calendar.dateField, calendar.date.print(calendar.dateFormat)) else if (calendar.dateField.tagName == 'INPUT') { calendar.dateField.value = calendar.date.print(calendar.dateFormat) } if (calendar.dateFieldDay.tagName == 'INPUT') { calendar.dateFieldDay.value = calendar.date.print(calendar.dateFormat) + "000000-" + calendar.date.print(calendar.dateFormat) + "235959"; } if (calendar.dateFieldWeek.tagName == 'INPUT') { var d1= new Date(calendar.date.getFullYear(), calendar.date.getMonth(), calendar.date.getDate(), 0, 0, 0); var d2= new Date(calendar.date.getFullYear(), calendar.date.getMonth(), calendar.date.getDate(), 0, 0, 0); var DoW = d1.getDay(); d1.setDate(d1.getDate() - DoW); d2.setDate(d2.getDate() - DoW + 6); calendar.dateFieldWeek.value = d1.print(calendar.dateFormat) + "000000-" + d2.print(calendar.dateFormat) + "235959"; } if (calendar.dateFieldMonth.tagName == 'INPUT') { calendar.dateFieldMonth.value = calendar.date.print(calendar.dateFormat).substr(0,6) + "01000000-" + calendar.date.print(calendar.dateFormat).substr(0,6) + "31235959"} if (calendar.dateFieldYear.tagName == 'INPUT') { calendar.dateFieldYear.value = calendar.date.print(calendar.dateFormat).substr(0,4) + "0101000000-" + calendar.date.print(calendar.dateFormat).substr(0,4) + "1231235959"} // Trigger the onchange callback on the dateField, if one has been defined if (typeof calendar.dateField.onchange == 'function') calendar.dateField.onchange() if (typeof calendar.dateFieldDay.onchange == 'function') calendar.dateFieldDay.onchange() if (typeof calendar.dateFieldWeek.onchange == 'function') calendar.dateFieldWeek.onchange() if (typeof calendar.dateFieldMonth.onchange == 'function') calendar.dateFieldMonth.onchange() if (typeof calendar.dateFieldYear.onchange == 'function') calendar.dateFieldYear.onchange() updatechart (); // Call the close handler, if necessary if (calendar.shouldClose) calendar.callCloseHandler() } Calendar.defaultCloseHandler = function(calendar) { calendar.hide() } // // Calendar Setup // Calendar.setup = function(params) { function param_default(name, def) { if (!params[name]) params[name] = def } param_default('dateField', null) param_default('dateFieldDay', null) param_default('dateFieldWeek', null) param_default('dateFieldMonth', null) param_default('dateFieldYear', null) param_default('triggerElement', null) param_default('parentElement', null) param_default('selectHandler', null) param_default('closeHandler', null) // In-Page Calendar if (params.parentElement) { var calendar = new Calendar(params.parentElement) calendar.setSelectHandler(params.selectHandler || Calendar.defaultSelectHandler) if (params.dateFormat) calendar.setDateFormat(params.dateFormat) if (params.dateField) { calendar.setDateField(params.dateField) calendar.parseDate(calendar.dateField.innerHTML || calendar.dateField.value) } if (params.dateFieldDay) { calendar.setDateFieldDay(params.dateFieldDay) calendar.parseDate(calendar.dateFieldDay.innerHTML || calendar.dateFieldDay.value) } if (params.dateFieldWeek) { calendar.setDateFieldWeek(params.dateFieldWeek) calendar.parseDate(calendar.dateFieldWeek.innerHTML || calendar.dateFieldWeek.value) } if (params.dateFieldMonth) { calendar.setDateFieldMonth(params.dateFieldMonth) calendar.parseDate(calendar.dateFieldMonth.innerHTML || calendar.dateFieldMonth.value) } if (params.dateFieldYear) { calendar.setDateFieldYear(params.dateFieldYear) calendar.parseDate(calendar.dateFieldYear.innerHTML || calendar.dateFieldYear.value) } calendar.show() return calendar } // Popup Calendars // // XXX There is significant optimization to be had here by creating the // calendar and storing it on the page, but then you will have issues with // multiple calendars on the same page. else { var triggerElement = $(params.triggerElement || params.dateField) triggerElement.onclick = function() { var calendar = new Calendar() calendar.setSelectHandler(params.selectHandler || Calendar.defaultSelectHandler) calendar.setCloseHandler(params.closeHandler || Calendar.defaultCloseHandler) if (params.dateFormat) calendar.setDateFormat(params.dateFormat) if (params.dateField) { calendar.setDateField(params.dateField) calendar.parseDate(calendar.dateField.innerHTML || calendar.dateField.value) } if (params.dateField) Date.parseDate(calendar.dateField.value || calendar.dateField.innerHTML, calendar.dateFormat) calendar.showAtElement(triggerElement) return calendar } } } // // Calendar Instance // Calendar.prototype = { // The HTML Container Element container: null, // Callbacks selectHandler: null, closeHandler: null, // Configuration minYear: 2002, maxYear: 2022, dateFormat: '%Y%m%d', // Dates date: new Date(), currentDateElement: null, // Status shouldClose: false, isPopup: true, dateField: null, dateFieldDay: null, dateFieldWeek: null, dateFieldMonth: null, dateFieldYear: null, // // Initialize // initialize: function(parent) { if (parent) this.create($(parent)) else this.create() }, // // Update / (Re)initialize Calendar // update: function(date) { var calendar = this var today = new Date() var thisYear = today.getFullYear() var thisMonth = today.getMonth() var thisDay = today.getDate() var month = date.getMonth(); var dayOfMonth = date.getDate(); // Ensure date is within the defined range if (date.getFullYear() < this.minYear) date.setFullYear(this.minYear) else if (date.getFullYear() > this.maxYear) date.setFullYear(this.maxYear) this.date = new Date(date) // Calculate the first day to display (including the previous month) date.setDate(1) date.setDate(-(date.getDay()) + 1) // Fill in the days of the month Element.getElementsBySelector(this.container, 'tbody tr').each( function(row, i) { var rowHasDays = false row.immediateDescendants().each( function(cell, j) { var day = date.getDate() var dayOfWeek = date.getDay() var isCurrentMonth = (date.getMonth() == month) // Reset classes on the cell cell.className = '' cell.date = new Date(date) cell.update(day) // Account for days of the month other than the current month if (!isCurrentMonth) cell.addClassName('otherDay') else rowHasDays = true // Ensure the current day is selected if (isCurrentMonth && day == dayOfMonth) { cell.addClassName('selected') calendar.currentDateElement = cell } // Today if (date.getFullYear() == thisYear && date.getMonth() == thisMonth && day == thisDay) cell.addClassName('today') // Weekend if ([0, 6].indexOf(dayOfWeek) != -1) cell.addClassName('weekend') // Set the date to tommorrow date.setDate(day + 1) } ) // Hide the extra row if it contains only days from another month !rowHasDays ? row.hide() : row.show() } ) this.container.getElementsBySelector('td.title')[0].update( Calendar.MONTH_NAMES[month] + ' ' + this.date.getFullYear() ) }, // // Create/Draw the Calendar HTML Elements // create: function(parent) { // If no parent was specified, assume that we are creating a popup calendar. if (!parent) { parent = document.getElementsByTagName('body')[0] this.isPopup = true } else { this.isPopup = false } // Calendar Table var table = new Element('table') // Calendar Header var thead = new Element('thead') table.appendChild(thead) // Title Placeholder var row = new Element('tr') var cell = new Element('td', { colSpan: 7 } ) cell.addClassName('title') row.appendChild(cell) thead.appendChild(row) // Calendar Navigation row = new Element('tr') this._drawButtonCell(row, '«', 1, Calendar.NAV_PREVIOUS_YEAR) this._drawButtonCell(row, '‹', 1, Calendar.NAV_PREVIOUS_MONTH) this._drawButtonCell(row, 'Heute', 3, Calendar.NAV_TODAY) this._drawButtonCell(row, '›', 1, Calendar.NAV_NEXT_MONTH) this._drawButtonCell(row, '»', 1, Calendar.NAV_NEXT_YEAR) thead.appendChild(row) // Day Names row = new Element('tr') for (var i = 0; i < 7; ++i) { cell = new Element('th').update(Calendar.SHORT_DAY_NAMES) if (i == 0 || i == 6) cell.addClassName('weekend') row.appendChild(cell) } thead.appendChild(row) // Calendar Days var tbody = table.appendChild(new Element('tbody')) for (i = 6; i > 0; --i) { row = tbody.appendChild(new Element('tr')) row.addClassName('days') for (var j = 7; j > 0; --j) { cell = row.appendChild(new Element('td')) cell.calendar = this } } // Calendar Container (div) this.container = new Element('div') this.container.addClassName('calendar') if (this.isPopup) { this.container.setStyle({ position: 'absolute', display: 'none' }) this.container.addClassName('popup') } this.container.appendChild(table) // Initialize Calendar this.update(this.date) // Observe the container for mousedown events Event.observe(this.container, 'mousedown', Calendar.handleMouseDownEvent) // Append to parent element parent.appendChild(this.container) }, _drawButtonCell: function(parent, text, colSpan, navAction) { var cell = new Element('td') if (colSpan > 1) cell.colSpan = colSpan cell.className = 'button' cell.calendar = this cell.navAction = navAction cell.innerHTML = text cell.unselectable = 'on' // IE parent.appendChild(cell) return cell }, // // Callbacks // // Calls the Select Handler (if defined) callSelectHandler: function() { if (this.selectHandler) this.selectHandler(this, this.date.print(this.dateFormat)) }, // Calls the Close Handler (if defined) callCloseHandler: function() { if (this.closeHandler) this.closeHandler(this) }, // // Calendar Display Functions // // Shows the Calendar show: function() { this.container.show() if (this.isPopup) { window._popupCalendar = this Event.observe(document, 'mousedown', Calendar._checkCalendar) } }, // Shows the calendar at the given absolute position showAt: function (x, y) { this.container.setStyle({ left: x + 'px', top: y + 'px' }) this.show() }, // Shows the Calendar at the coordinates of the provided element showAtElement: function(element) { var pos = Position.cumulativeOffset(element) this.showAt(pos[0], pos[1]) }, // Hides the Calendar hide: function() { if (this.isPopup) Event.stopObserving(document, 'mousedown', Calendar._checkCalendar) this.container.hide() }, // // Miscellaneous // // Tries to identify the date represented in a string. If successful it also // calls this.setDate which moves the calendar to the given date. parseDate: function(str, format) { if (!format) format = this.dateFormat this.setDate(Date.parseDate(str, format)) }, // // Getters/Setters // setSelectHandler: function(selectHandler) { this.selectHandler = selectHandler }, setCloseHandler: function(closeHandler) { this.closeHandler = closeHandler }, setDate: function(date) { if (!date.equalsTo(this.date)) this.update(date) }, setDateFormat: function(format) { this.dateFormat = format }, setDateField: function(field) { this.dateField = $(field) }, setDateFieldDay: function(field) { this.dateFieldDay = $(field) }, setDateFieldWeek: function(field) { this.dateFieldWeek = $(field) }, setDateFieldMonth: function(field) { this.dateFieldMonth = $(field) }, setDateFieldYear: function(field) { this.dateFieldYear = $(field) }, setRange: function(minYear, maxYear) { this.minYear = minYear this.maxYear = maxYear } } // global object that remembers the calendar window._popupCalendar = null //============================================================================== // // Date Object Patches // // This is pretty much untouched from the original. I really would like to get // rid of these patches if at all possible and find a cleaner way of // accomplishing the same things. It's a shame Prototype doesn't extend Date at // all. // //============================================================================== Date.DAYS_IN_MONTH = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) Date.SECOND = 1000 /* milliseconds */ Date.MINUTE = 60 * Date.SECOND Date.HOUR = 60 * Date.MINUTE Date.DAY = 24 * Date.HOUR Date.WEEK = 7 * Date.DAY // Parses Date Date.parseDate = function(str, fmt) { var today = new Date(); var y = 0; var m = -1; var d = 0; var a = str.split(/W+/); var b = fmt.match(/%./g); var i = 0, j = 0; var hr = 0; var min = 0; for (i = 0; i < a.length; ++i) { if (!a) continue; switch (b) { case "%d": case "%e": d = parseInt(a, 10); break; case "%m": m = parseInt(a, 10) - 1; break; case "%Y": case "%y": y = parseInt(a, 10); (y < 100) && (y += (y > 29) ? 1900 : 2000); break; case "%b": case "%B": for (j = 0; j < 12; ++j) { if (Calendar.MONTH_NAMES[j].substr(0, a.length).toLowerCase() == a.toLowerCase()) { m = j; break; } } break; case "%H": case "%I": case "%k": case "%l": hr = parseInt(a, 10); break; case "%P": case "%p": if (/pm/i.test(a) && hr < 12) hr += 12; else if (/am/i.test(a) && hr >= 12) hr -= 12; break; case "%M": min = parseInt(a, 10); break; } } if (isNaN(y)) y = today.getFullYear(); if (isNaN(m)) m = today.getMonth(); if (isNaN(d)) d = today.getDate(); if (isNaN(hr)) hr = today.getHours(); if (isNaN(min)) min = today.getMinutes(); if (y != 0 && m != -1 && d != 0) return new Date(y, m, d, hr, min, 0); y = 0; m = -1; d = 0; for (i = 0; i < a.length; ++i) { if (a.search(/[a-zA-Z]+/) != -1) { var t = -1; for (j = 0; j < 12; ++j) { if (Calendar.MONTH_NAMES[j].substr(0, a.length).toLowerCase() == a.toLowerCase()) { t = j; break; } } if (t != -1) { if (m != -1) { d = m+1; } m = t; } } else if (parseInt(a, 10) 31 && y == 0) { y = parseInt(a, 10); (y < 100) && (y += (y > 29) ? 1900 : 2000); } else if (d == 0) { d = a; } } if (y == 0) y = today.getFullYear(); if (m != -1 && d != 0) return new Date(y, m, d, hr, min, 0); return today; }; // Returns the number of days in the current month Date.prototype.getMonthDays = function(month) { var year = this.getFullYear() if (typeof month == "undefined") month = this.getMonth() if (((0 == (year % 4)) && ( (0 != (year % 100)) || (0 == (year % 400)))) && month == 1) return 29 else return Date.DAYS_IN_MONTH[month] }; // Returns the number of day in the year Date.prototype.getDayOfYear = function() { var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0); var time = now - then; return Math.floor(time / Date.DAY); }; /** Returns the number of the week in year, as defined in ISO 8601. */ Date.prototype.getWeekNumber = function() { var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); var DoW = d.getDay(); d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu var ms = d.valueOf(); // GMT d.setMonth(0); d.setDate(4); // Thu in Week 1 return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; }; /** Checks date and time equality */ Date.prototype.equalsTo = function(date) { return ((this.getFullYear() == date.getFullYear()) && (this.getMonth() == date.getMonth()) && (this.getDate() == date.getDate()) && (this.getHours() == date.getHours()) && (this.getMinutes() == date.getMinutes())); }; /** Set only the year, month, date parts (keep existing time) */ Date.prototype.setDateOnly = function(date) { var tmp = new Date(date); this.setDate(1); this.setFullYear(tmp.getFullYear()); this.setMonth(tmp.getMonth()); this.setDate(tmp.getDate()); }; /** Prints the date in a string according to the given format. */ Date.prototype.print = function (str) { var m = this.getMonth(); var d = this.getDate(); var y = this.getFullYear(); var wn = this.getWeekNumber(); var w = this.getDay(); var s = {}; var hr = this.getHours(); var pm = (hr >= 12); var ir = (pm) ? (hr - 12) : hr; var dy = this.getDayOfYear(); if (ir == 0) ir = 12; var min = this.getMinutes(); var sec = this.getSeconds(); s[%a] = Calendar.SHORT_DAY_NAMES[w]; // abbreviated weekday name [FIXME: I18N] s[%A] = Calendar.DAY_NAMES[w]; // full weekday name s[%b] = Calendar.SHORT_MONTH_NAMES[m]; // abbreviated month name [FIXME: I18N] s[%B] = Calendar.MONTH_NAMES[m]; // full month name // FIXME: %c : preferred date and time representation for the current locale s[%C] = 1 + Math.floor(y / 100); // the century number s[%d] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) s[%e] = d; // the day of the month (range 1 to 31) // FIXME: %D : american date style: %m/%d/%y // FIXME: %E, %F, %G, %g, %h (man strftime) s[%H] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) s[%I] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) s[%j] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) s[%k] = hr; // hour, range 0 to 23 (24h format) s[%l] = ir; // hour, range 1 to 12 (12h format) s[%m] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 s[%M] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 s[%n] = "n"; // a newline character s[%p] = pm ? "PM" : "AM"; s[%P] = pm ? "pm" : "am"; // FIXME: %r : the time in am/pm notation %I:%M:%S %p // FIXME: %R : the time in 24-hour notation %H:%M s[%s] = Math.floor(this.getTime() / 1000); s[%S] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 s[%t] = "t"; // a tab character // FIXME: %T : the time in 24-hour notation (%H:%M:%S) s[%U] = s[%W] = s[%V] = (wn < 10) ? ("0" + wn) : wn; s[%u] = w + 1; // the day of the week (range 1 to 7, 1 = MON) s[%w] = w; // the day of the week (range 0 to 6, 0 = SUN) // FIXME: %x : preferred date representation for the current locale without the time // FIXME: %X : preferred time representation for the current locale without the date s[%y] = ('' + y).substr(2, 2); // year without the century (range 00 to 99) s[%Y] = y; // year with the century s[%%] = "%"; // a literal '%' character return str.gsub(/%./, function(match) { return s[match] || match }); }; Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear; Date.prototype.setFullYear = function(y) { var d = new Date(this); d.__msh_oldSetFullYear(y); if (d.getMonth() != this.getMonth()) this.setDate(28); this.__msh_oldSetFullYear(y); } function updatechart() { var baseURL=" www.meteoplug.com/cgi-bin/meteochart.cgi "; var chartparm="?draw=[drawtoken_{Link auf Definition meteoplug für Tabelle_Tag}]"; var tfparm="&timeframe=1D"; var resparm="&resolution=min5"; if (document.form1.gtype[0].checked) { { tfparm = "&timeframe=" + document.form1.dateday.value; resparm="&resolution=min5"; } frames.location.href=baseURL + "?draw=[drawtoken_{Link auf Definition meteoplug für Tabelle_Tag}]" + tfparm + resparm; } if (document.form1.gtype[1].checked) { { tfparm = "&timeframe=" + document.form1.dateday.value; resparm="&resolution=min5"; } frames.location.href=baseURL + "?draw=[drawtoken_{Link auf Definition meteoplug für Temperaturgrafik}]" + tfparm + resparm; } if (document.form1.gtype[2].checked){{ tfparm = "&timeframe=" + document.form1.dateday.value; resparm="&resolution=min5"; }frames.location.href=baseURL + "?draw=[drawtoken_{Link auf Definition meteoplug für Windgrafik}]" + tfparm + resparm;}if (document.form1.gtype[3].checked){{ tfparm = "&timeframe=" + document.form1.dateday.value; resparm="&resolution=min5"; }frames.location.href=baseURL + "?draw=[drawtoken_{Link auf Definition meteoplug für Regengrafik}]" + tfparm + resparm;}}window.onload = function() {Calendar.setup({dateField : 'date',dateFieldDay : 'dateday',dateFieldWeek : 'dateweek',dateFieldMonth : 'datemonth',dateFieldYear : 'dateyear',parentElement : 'calendar'})} Tabelle Grafiken [img]{Link auf}tempgrafik.gif Temperatur-Taupunkt-Luftfeuchte-Solarstrahlung [img]{Link auf }windgrafik.gif Windböen-Wind-Windrichtung-Luftdruck [img]{Link auf}regengrafik.gif Regen-Regenrate [/table][/table]If you can see this then sorry but your browser does not support inline frames.updatechart();Bemerkungen:Den Kalender Code habe ich natürlich von der Vorlage in meteoplug übernommen und auf deutsche Monats- und Tagesnamen angepassst.Wie Ihr seht, braucht der Kalendercode relativ viel Programmzeilen. Am Schluss des Codes müsst Ihr die Links in geschweiften Klammern {} durch eure Definitionen und Links ersetzen!Für die Monats und Jahreswerte muss analog je ein seperates Template erfasst werden.Grüsse KaikoPS: Jetzt kommt Sturm Carmen und bringt spannende Werte in die Wetterdatenbank |
Bitte Anmelden um der Konversation beizutreten. |
|
Hallo kaiko!
Vorerst Danke für das veröfentlichen deines Templates, wie Markus schon schreibt steckt da jede Menge Arbeit dahinter :daumen_hoch:. Da ich leider eine leihe auf HTML bin würde ich gerne diese Template verwenden, aber nur weiss ich nicht wie das zu verstehen ist wo Du schreibst 2. Code für 'mein Template': template=http://www.kaikowetter.ch/meteoplug/meinetemplatedatei.html dirlist=Norden,Nord-NO,Nordosten,Ost-NO,Osten,Ost-SO,Suedosten,Sued-SO,Sueden,Sued-SW,Suedwesten,West-SW,Westen,West-NW,Nordwesten,Nord-NW fctextlist=Regen,bedeckt,wechselhaft,sonnig,Schnee ,leicht_bewoelkt,klar,Nieseln,Schneeflocken wo füge ich disen Code eigendlich ein ??? :gruebel: Anstelle der Meteoblug Grafiken kann ich ja auch meine eigenen aus der Weatherboxx nehen ??? vieleicht kannst Du mir da ein wenig unter die Arme greifen, aber ich werde es doch noch lernen müssen um nicht immer die Sachen anderer zu verwenden. Danke noch einmal und wünsche noch einen schönen Sonntag... lG Chris |
Bitte Anmelden um der Konversation beizutreten. |
|
Hallo Chris
Ich habe versucht mit einem Leitfaden für die Erstellung der Templates die ganze Thematik etwas verständlicher zu machen. http://www.kaikowetter.ch/meteoplug/Leitfadenmeteoplugtemplate.html Viele Grüsse Kaiko |
Bitte Anmelden um der Konversation beizutreten. |
|
Hallo Keiko!
Danke für Deine Mühe hier einen Leitfaden zu veröffentlichen, da steckt ja jede Menge Arbeit hinter diesen Leitfaden, Gratulation!!! Da komme ich als Leihe auch zurecht und werde mich dann mal ans Werk machen. Ich wünsche Dir und allen hier im Forum ein gesundes neues Jahr 2011 und noch viel Spass beim Wetterbeobachten. Viele Grüße aus Graz Christian |
Bitte Anmelden um der Konversation beizutreten. |
|
Hallo Kai
Herzlichen Dank für Deine Arbeit und Hut ab! Ich weiss (leider) wie lange es dauert Anleitungen zu schreiben und daher schätze ich Deine Beiträge und Arbeiten sehr. Genau von solchen Arbeiten (Ergänzungen) lebt meteoplug. Und es bestärkt mich darin (nach dem meteoBase-Fiasko) mit weatherBoxx zum Glück auf das richtige System - ein offenes System - gesetzt zu haben. Herzlichen Dank und auf viele weitere interessante Lösungen. Kusi |
Bitte Anmelden um der Konversation beizutreten. |
|
@Kaiko
ich schliesse mich hier an und möchte mich für die Anleitungen und meine "Wünsche" bei Dir herzlich bedanken - tolle Arbeit! - und natürlich auf weitere Ergänzungen auf diesem Gebiet:daumen_hoch: bei mir sieht's z.B. so aus... http://www.meteoplug.com/cgi-bin/meteochart.cgi?draw=141a190201031547505a5b5919145555701e0a602e2c589afe681b5f555452545460155e50585b4f4c habe einfach noch die UV-Werte "implantiert", dies nach langem pröbeln aber es ist mir doch gelungen...wie auch immer... salve Edy was mir aber einfach nicht gefällt sind meine Datenausfälle insbesondere beim Wind die ich einfach und trotz aller Hinweise aus den Foren" nicht hinkriege... aber scheinbar muss ich damit leben...:gruebel: |
Bitte Anmelden um der Konversation beizutreten. |
|
*schluck*
ich bin echt platt!! ich habe mich kürzlich ebenfalls in die meteoplug thematik eingearbeitet und weiss, wieviele stunden hier drin stecken! auch von mir ein herzliches dankeschön, für die veröffentlichung dieses codes! Das wird wohl eines Tages auch mir viele Stunden arbeit erleichtern oder ersparen!! Danke kaiko!! |
Bitte Anmelden um der Konversation beizutreten. |
|
Das Template neu gestaltet.
http://www.meteoplug.com/cgi-bin/meteochart.cgi?draw=5f5c5b5a5e5f490419111a070713151d2c571e081c120e10192f570f111f1507355514031f0b1a190d03091a Wie findet ihr es? Gruss Kevin |
Bitte Anmelden um der Konversation beizutreten. |
|
|