juppix: Objekt erzeugen bzw. aktualisieren

Beitrag lesen

Huhu! Wieder mal ich mit einer "spezialfrage"...:

ich habe auf EINER Seite

  1. eine Tabelle (https://www.datatables.net/) und
  2. einen Kalender (bootstrap-year-calendar).

Diese beiden Objekte benutze ich um Daten einmal in tabellarischer Form und einmal in Kalenderform darzustellen.

Der User hat einen Kalender-Button, und mit Click wird jeweils 1 oder 2 dargestellt (visibility).

Wenn die Seite lädt stelle ich als 1. die Tabelle dar.- Es wird jedoch im "Hintergrund" bereits das Kalender-Objekt "initialisiert" (aber bleibt ausgeblendet):

$(function() {
    var currentYear = new Date().getFullYear();

    $('#calendar').calendar({ 
        enableContextMenu: true,
        enableRangeSelection: true,

Jetzt habe ich das Problem, dass ich es nur hinbekommen habe, den Kalender mit Ajax-Daten zu befüllen, beim "yearChanged"-Event des Kalenders (so beschrieben vom Entwickler):

		yearChanged: function(e) {				
			e.preventRendering = true;			

			$(e.target).append('<div style="text-align:center"><img src="./img/loading_spinner.gif" /></div>');

			var jqTextToJson = {
				  "text json": function(jsonString) {
					return JSON.parse(jsonString,
						function(name, value) {
							if (name === "startDate" || name === "endDate")
								return new Date(value);
							return value;
					});
			    }
			 };
			
			$.ajax({

				dataType: "json",
				url: "./getCalendarData.php?typ=calendar&id=" + $("#SelectKonto option:selected").val(),
				converters: jqTextToJson,
				success: function(dataSource) {  
					$(e.target).data('calendar').setDataSource(dataSource);
				} 			    
			});		
		}

Das funktioniert nun auch - halt eben nur wenn der User im Kalender AKTIV das Jahr wechselt.

Ich möchte jedoch die Daten bereits früher laden (also beim Initialisieren des Kalenders).

Oder noch besser: Beim Klick auf den "Kalender"-Button, der von der Listenansicht zum Kalender wechselt. --> Dann direkt refreshen.

Kann mir jemand helfen?

1000 dank vorab

akzeptierte Antworten