IPSHighcharts

IPSHighcharts ermöglicht die Darstellung von Graphen auf Basis von Highcharts in IP-Symcon.

Die Implementierung von IPSHighcharts der IPSLibrary wurde aus diesem Thread übernommen – besten Dank an dieser Stelle an den User khc!

Nähere Details zum Modul sind im WIKI Beitrag zu finden

Wichtige Posts:
IPS Charts mit Highcharts darstellen

Hi,
habe durch die Plugwise Installation bereits Highcharts installiert. Kann ich Dein Modul einfach drüber installieren oder muß die alte Installation zuerst raus ???

Gruß Proxima

Kein Problem, die Dateien von Highcharts existieren dann einfach in 2 verschiedenen Verzeichnissen …

Hallo Andreas,

hat es einen bestimmten Grund dass Du in Highcharts.php auf die jquery.min.js in Google verlinkst?

 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

Wäre es nicht besser die „jquery.min.js“ lokal nach /user/IPSHighcharts/Highcharts/js/jquery.min.js zu kopieren und diese dort analog wie die highcharts.js zu verlinken?

 
<script type="text/javascript" src="/user/IPSHighcharts/Highcharts/js/jquery.min.js"></script>
<script type="text/javascript" src="/user/IPSHighcharts/Highcharts/js/highcharts.js"></script>

Wenn Du das WebFront über HTTPS ansprichst, bekommst Du so dann keine Browserwarnung mehr, dass die Seite unsichere HTTP Elemente außerhalb der HTTPS Webseite enthält.

Hallo Uwe,

Nein, das hat keinen bestimmten Grund, werde das bei nächster Gelegenheit so wie vorgeschlagen umsetzen …

Hallo Andreas,

bei mir funktioniert es einwandfrei mit Highcharts aber leider nicht mit Highstocks.
Muß ich noch irgendwas installieren oder kopieren?

Vielen Dank

Gerd

Hallo Gerd,

da haben die Highstock Files im Modul gefehlt. Hab sie jetzt hinzugefügt, kurzer Test hat einen Output gebracht (hab allerdings noch nicht sehr viel mit Highstocks gemacht).

Hallo Andreas,

vielen Dank. Funktioniert einwandfrei.

Gerd

Hallo Andreas,

Die Änderung von


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

nach


<script type="text/javascript" src="/user/IPSHighcharts/Highcharts/js/jquery.min.js"></script> 

hat bei mir negative Effekte. Die Graphen, insbesondere die Achsen, werden nicht mehr richtig dargestellt.

Was mit IPSHighcharts 2.5.0.1 noch richtig aussah


ist nun unvollständig:

  • die linke Achse hat die falsche Beschriftung
  • die rechte Achse fehlt kompett und mit ihr die zugeordneten Serien

Nachdem ich die Änderung in der Highcharts.php wieder rückgängig gemacht habe, ist der Spuk vorbei :confused:

Viele Grüße

Burkhard

Hi,

hab da wohl eine alte Version von jQuery erwischt, mit der korrekten Versioin 1.7.2 sollte es jetzt funktionieren.
Neue Version liegt am Server, gib bitte Bescheid, wenn das Problem beseitigt ist …

Hallo Andreas,

super, jetzt nach dem Update stimmt wieder alles.

Vielen Dank

Burkhard

Hallo,

ich würde gerne meine ganzen Highcharts umstellen auf die IPSHighcharts, aber so ganz verstehe ich nicht, was ich genau machen muss, nachdem ich die Software installiert habe ( über die GUI ).

Wo lege ich die ganzen highcharts_configs ab und muss ich wie binde ich die alle ein ?

Wer kann mal Licht ind mein Dunkel bringen ?

Danke und Grüsse

Thomas

Poste doch mal Deine derzeitige Config, eigentlich brauchtst Du nur den Aufruf von IPSHighcharts ändern, zum Beispiel so:


	IPSUtils_Include ("IPSHighcharts.inc.php", "IPSLibrary::app::modules::Charts::IPSHighcharts");
	$CfgDaten    = CheckCfgDaten($CfgDaten);
	$sConfig     = CreateConfigString($CfgDaten);            
	$tmpFilename = CreateConfigFile($sConfig, 'MyFile');    
	WriteContentWithFilename ($CfgDaten, $tmpFilename);      

Hallo Leute,

habe mir dieses Wochenende endlich mal Zeit genommen und IPSHighcharts dahingehend erweitert, um IPS Media Chart Objekte auf Basis von Highcharts darzustellen.
Das gibt in Zukunft auch unerfahrenen Nutzern die Möglichkeit Highcharts mit einer einzigen Zeile zu verwenden.

Vorraussetzungen:
IPSLibrary + Highcharts

Einbinden eines Charts:

[ol]
[li]IPS Media Chart anlegen
[/li][li]Variable mit Type=String und Profile=HTMLBox anlegen
[/li][li]Folgenden Wert in die String Variable eintragen:
[/li][/ol]


<iframe src='/User/IPSHighcharts/IPSChart.php?VarID=58663&ChartID=35060' height='400' width='100%' frameborder='0' scrolling='no'></iframe>

ChartID ist das IPS Chart Media Objekt
VarID ist die Variable, die zur Anzeige verwendet wird

In der Callback Funktion, die sich in IPSHighcharts_Custom.inc.php befindet, kann man noch Modifikationen an der Konfiguration vornehmen und so die komplette Mächtigkeit von Highcharts voll ausschöpfen:

Hier ein Beispiel um das Stacking von Werten zu konfigurieren:


function IPSHighcharts_BeforeBuildChart($varID, $chartID, &$CfgDaten) {
	$CfgDaten['series'][0]['stack']   = '0';
	$CfgDaten['series'][1]['stack']   = '1';
	$CfgDaten['series'][2]['stack']   = '1';
}

Falls noch wer Verbesserungsvorschläge für die Highcharts Config hat, kann diese gerne posten …

Hallo Andreas

Erstmal Danke für Highchart möglichkeit.
Bei mir funktioniert aber die möglichkeit der Zeitumschaltung (Stunde,Tag,Woche) nicht.
Vor und Zurück springen kann ich auch nicht.
Muß ich da noch was in der Callback Funktion einstellen.

Mfg Stefan

Hallo,

was ist ein IPS Media Chart und wie wird einer angelegt ???

Gruß Proxima

@Proxima

ist jetzt neu mit der3.1 Betagekommen, offizielle Doku glaub ich gibt es noch nicht…

@Stefan

Kannst Du mal mit der Entwicklerkonsole von Chrome schauen, ob da ein Fehler angezeigt wird?

@All

Hat das sonst einer erfolgreich am Laufen?

Hallo Andreas

So wie ich die Konsole Öffne weiß ich jetzt aber wo genau muss ich da nachschauen und was brauchst du.

Mfg Stefan

Hallo Andreas,

in den Graphen sind zu Beginn oft Löcher:

Ursache ist die von IPS geänderte Funktion AC_GetLoggedValues. Abhilfe schafft die Funktion AC_GetLoggedValuesCompatibility von paresey. Wenn ich sie in IPSHighcharts.inc.php einbaue und den Aufruf anpasse, dann stimmt der Graph wieder.

	// ------------------------------------------------------------------------
	// ReadAndAddToLoggedData
	//    IN: siehe Parameter
	//    OUT: Vervollständigte Logged Data
	// ------------------------------------------------------------------------
	function ReadAndAddToLoggedData($loggedData, $id_AH, $variableId, $aggType, $startTime, $endTime, $aggValueName, $serie)
	{
		$cfg['Ips']['Debug']['Modules'] = true;

		if ($aggType >= 0)
			$tempData = @AC_GetAggregatedValues($id_AH, $variableId, $aggType, $startTime, $endTime, 0);
		else
			//$tempData = @AC_GetLoggedValues($id_AH, $variableId, $startTime, $endTime, 0 );
			$tempData = @AC_GetLoggedValuesCompatibility($id_AH, $variableId, $startTime, $endTime, 0 );

	   foreach ($tempData as $item)
	   {
			$loggedData[] = CreateDataItem($item['TimeStamp'], $item[$aggValueName], $serie);
	   }

	   unset ($tempData);

		return $loggedData;
	}

    //Hilfsfunktion, die die Funktionsweise von IP-Symcon 2.x nachbildet
    function AC_GetLoggedValuesCompatibility($instanceID, $variableID, $startTime, $endTime, $limit) {
        $values = AC_GetLoggedValues($instanceID, $variableID, $startTime, $endTime, $limit );
        if((sizeof($values) == 0) || (end($values)['TimeStamp'] > $startTime)) {
            $previousRow = AC_GetLoggedValues($instanceID, $variableID, 0, $startTime - 1, 1 );
            $values = array_merge($values, $previousRow);
        }
        return $values;
    }

Voila :slight_smile:

Es wäre schön, wenn du dir das einmal anschauen könntest.

Viele Grüße

Burkhard

Halo Stefan,

kann es sein das Du da

VarID ist die Variable, die zur Anzeige verwendet wird
noch nicht Die ID deiner Variablen eingetragen hast, hatte ich zuerst auch vergessen, dann sieht man zwar ein Chart aber die Buttons gehen nicht.

Gruß

Frank