Mit der Monatsbox [1] können Webanwendungen erweitert werden, um Übersichten beliebiger Monate darzustellen und im Sinne einer Bedienoberfläche mit ihrer Hilfe ein Datum auszuwählen. Ihre Verwendung ist in diesem Dokument beschrieben.

Installation

Die Monatsbox besteht aus den folgenden Teilen:

  1. monatsbox.js - JavaScript-Code

  2. monatsbox.css - Gestaltungsvorgaben

Zu deren Installation müssen sie zunächst aus dem Code-Repository [2] heruntergeladen werden. Nach dem Herunterladen werden die oben angegebenen Dateien an einen Ort kopiert, wo sie im Zugriff für HTML-Seiten sind, die die Monatsbox verwenden sollen.

Ist beispielsweise eine Webanwendung im Ordner meine-app abgelegt, kann die Monatsbox beispielsweise mit in diesen Ordner gelegt werden. Der Ordnerinhalt sieht dann etwa wie folgt aus:

eine Ablagestruktur mit Monatsbox
/meine-app
  index.html
  monatsbox.js
  monatsbox.css

Verwendung

Die Demoseite [3] zeigt die Monatsbox in Aktion. Ihre Verwendung ist nachfolgend orientiert an der Demoseite Schritt für Schritt beschrieben.

Einbinden

Um die Monatsbox verwenden zu können, muss eine Webseite ihre Bestandteile einbinden. Das geschieht wie folgt.

Die Monatsbox in eine HTML-Seite einbinden
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="monatsbox.css">
    <!-- weitere Kopfdaten hier -->
  </head>
  <body>
    <!-- hier kommt der Body der Seite hin -->
    <script src="monatsbox.js"></script>
  </body>
</html>

Der Verweis zur Datei monatsbox.css gehört dabei in den Kopfteil der HTML-Datei im HTML-Tag <head>. Die JavaScript-Datei wird gewöhnlich am Ende des HTML-Body, also vor dem HTML-Tag </body> notiert.

Ziel-Element

Zur Erzeugnung einer Monatsbox innerhalb einer Webseite wird an der Stelle, wo die Monatsbox erscheinen soll, ein HTML-Element erzeugt. Die Demoseite [3] verwendet als Ziel-Element beispielsweise ein div-Element der Klasse monatsbox.

ein Ziel-Element für die Monatsbox
<div class="monatsbox"></div>

Monatsbox erzeugen

Um an der Stelle des Ziel-Elements eine Monatsbox darzustellen, wird JavaScript verwendet. Wie auch mit der Demoseite [3] gezeigt, kann zu diesem Zweck das Ereignis DOMContentLoaded genutzt werden:

das Ereignis DOMContentLoaded verwenden
document.addEventListener('DOMContentLoaded', function () {
  // Code zur Anzeige hier
});

Die Erzeugung einer Monatsbox funktioniert wie in folgendem Code-Beispiel.

Code-Beispiel zur Erzeugung einer Monatsbox
// irgendwo an globaler Stelle im Code
// eine globale Moantsbox-Fabrik eroeffnen
var fabrik = new MonatsboxFabrik();

.
.

// Parameter festlegen
var jahr = 2022;
var monat = 10; // Oktober
var starttag = 1; // Montag
var ruhetag = 0; // Sonntag
var ereignisse = '3,7,16';
// Erzeugung einer Monatsbox
var box = fabrik.monatsboxErzeugen(jahr, monat, starttag, ruhetag, ereignisse, function(event) {
  // hier kann noch Code zur Handhabung
  // von Klicks stehen
});
// das Element der Klasse '.monatsbox' ermitteln
var elem = document.querySelector('.monatsbox');
// die Monatsbox dem Element '.monatsbox' hinzufuegen
elem.appendChild(box);

Eine Monatsbox wird mit der Funktion monatsboxErzeugen wie im vorangegangenen Code-Beispiel erzeugt. Die Funktion erwartet folgende Parameter.

jahr

Ein Ganzzahl-Wert, der das Jahr bezeichnet, in dem der Monat liegt, dessen Monatsübersicht erzeugt werden soll.

monat

Ein Ganzzahl-Wert (1=Januar .. 12=Dezember), der den Monat im Jahr bezeichnet, dessen Monatsübersicht erzeugt werden soll.

starttag

Ein Ganzzahl-Wert (0=Sonntag .. 6=Samstag), der den Tag bezeichnet, mit dem eine Woche startet.

ruhetag

Ein Ganzzahl-Wert (0=Sonntag .. 6=Samstag), der den Tag bezeichnet, der als Ruhetag gekennzeichnet werden soll.

ereignisse

Eine mit Komma getrennte Folge von Ganzzahl-Werten, die die Tage bezeichnet, die in der Monatsübersicht markiert erscheinen sollen. Beispiel: Der Ausdruck 3,8,19 markiert den 3., 8. und 19. des betreffenden Monats.

Klick-Lauscher(event)

Eine Funktion, die von der Monatsbox immer dann gerufen wird, wenn in die Monatsbox geklickt wird. Der Parameter event kann verwendet werden, um Informationen über das Klick-Ereignis zu ermitteln (vgl. [4]).

Datum wählen

Ein Klick in die Monatsbox bewirkt, dass die Funktion gerufen wird, die bei Erzeugung der Monatsbox als Klick-Lauscher übergeben wurde. Mit Hilfe der Funktion datum der Monatsbox kann der Tag ermittelt werden, der geklickt wurde, wie im folgenden Code-Beispiel dargestellt.

Code-Beispiel zum Ermitteln des Datums nach Klick in die Monatsbox
// irgendwo an globaler Stelle im Code
// eine globale Moantsbox-Fabrik eroeffnen
var fabrik = new MonatsboxFabrik();

.
.

var box = fabrik.monatsboxErzeugen(jahr, monat, starttag, ruhetag, ereignisse, function(event) {
  // Klick verarbeiten: Datum ermitteln
  // und anzeigen
  var d = fabrik.datum(event);
  document.querySelector('.datum-wahl').textContent =
    d.toLocaleDateString('de-DE') + ' (' +
    d.toISOString() + ')';
});

Der Aufruf der Funktion datum gibt das gewählte Datum als JavaScript-Date-Objekt [5] zurück und bewirkt zugleich, dass der angeklickte Tag in der Monatsübersicht markiert wird.

Gestaltung anpassen

Die Gestaltung der Monatsbox wird über das Cascading Style Sheet monatsbox.css gesteuert. Nachfolgend zwei Beispiele zur Anpassung der Gestaltung.

Markierung des gewählten Tages

Die Gestaltung der Markierung des gewählten Tages kann über td.monatsboxGewaehlt geändert werden.

Markierung von Ereignissen

Die Gestaltung der Markierung von Ereignissen wird über td.monatsboxFeiertag gesteuert.

Alle Einträge des Stylesheets können nach Wunsch beliebig geändert werden.

Verweise