Tragen Sie zur Entwicklung des Kerns bei

Sie möchten zur Entwicklung des Jeedom Core beitragen ?

Hier sind die Grundlagen zu wissen :

Bevor Sie eine PR einreichen, aktualisieren Sie Ihre Alpha, um sicherzustellen, dass der Fehler nicht bereits behoben wurde. Und synchronisieren Sie Ihr Github-Repository.

Stellen Sie sicher, dass das, was Sie beheben, keine anderen Fehler verursacht. Die meisten Kernfunktionen werden von verschiedenen Frontend-Seiten oder von anderen Kernfunktionen und von Plugins aufgerufen. Führen Sie eine Suche im Core durch, um zu sehen/zu verstehen, wo die Funktionen verwendet werden, und melden Sie im Zweifelsfall das Problem und Ihre Korrektur Gemeinschaft.

Github-Zweige

Um an der Entwicklung von Jeedom teilnehmen zu können, müssen Sie einen Account haben Github.

Der Kerncode ist Open-Source und verfügbar hier.

Die Aktualisierungen werden in diesen Zweigen gemäß der Konfiguration von Jeedom vorgenommen Einstellungen → System → Konfiguration / Updates / Markt.

PRs (Anfragen ziehen) muss immer auf dem Alpha-Zweig erfolgen.

Ebenso, um an Diskussionen über teilzunehmen Gemeinschaft, Registrieren Sie sich als Entwickler : Jeedom dev.

Entwicklung

Um die Entwicklung des Kerns zu unterstützen, müssen Sie eine oder mehrere der folgenden Sprachen beherrschen:

Kenntnisse im Linux-Umfeld sind ebenfalls wünschenswert.

Kernbaum

Der Code wird in verschiedenen Verzeichnissen im Stammverzeichnis von Jeedom verteilt (standardmäßig) : /var/www/html) :

Front-end

Die Schnittstelle von Jeedom funktioniert wie eine Website, bestehend aus PHP, verbunden mit SQL und JS/CSS.

Zunächst lädt der Browser die Datei `/ index.php :

Desktop

Die Benutzeroberfläche von Jeedom arbeitet nach dem One-Page-Prinzip. Nach dem Laden werden die verschiedenen Seiten angezeigt, indem der Inhalt eines Containers geändert wird.

Die Hauptdatei in Desktop ist / desktop / php / index.php.

Jede Seite enthält mindestens zwei Parameter in der URL. Beispiel :

`https://my.dns1.jeedom.com/index.php?v = d & p = Armaturenbrett “ :

In diesem Fall die Datei / desktop / php / index.php lädt die Datei / desktop / php / dashboard.php im div_pageContainer div. Dadurch wird auch die Datei / desktop / js / dashboard geladen.js einschließlich der für die Anzeige dieser Seite spezifischen js-Funktionen (hier das Dashboard)).

Die Datei / desktop / php / index.php kümmert sich auch darum :

Der desktop / common / js / utils.js ist daher immer vorhanden und wird einmal geladen. Es erlaubt zu :

Also die Indexdateien.PHP und Dienstprogramme.js liefern die Grundstruktur und Funktionen der Schnittstelle. Dann wird der Inhalt der aufgerufenen Seite von desktop / php / page geladen.PHP und Desktop / js / page.js. Diese rein schnittstellenorientierten Inhaltsdateien können direkt in PHP oder dank js-Klassen (/ core / js) über Ajax-Aufrufe auf Core-Funktionen ( / core / class-Klassen) zugreifen (/ core / ajax).

Die internen Funktionen des Core sind somit für den internen Betrieb (Back-End) gut getrennt, aber über die Schnittstelle zugänglich. Ebenso hat jede Seite ihren eigenen PHP- und JS-Code. Dies ermöglicht eine bessere Entwicklung und Pflege des Codes, aber auch eine Optimierung der Leistung, indem nur die erforderlichen Klassen und Funktionen geladen werden.

Kern v4.2

Seit Core v4.2, alle js-Funktionen aus der Datei „desktop/common/js/utils.js sind in einem Namespace jeedomUtils{}` isoliert. Beispielsweise wird die Funktion „loadPage()“ zuvor im Stammfenster zu „jeedomUtils.loadPage()“.

Aus Gründen der Abwärtskompatibilität für Plugins werden alte Funktionen noch deklariert und werden in einer späteren Version veraltet sein. Siehe die Liste hier.

Kern v4.3

Fortsetzung von Version 4.2 wurden die Desktop-Frontend-Seiten isoliert, um zu vermeiden, dass Variablen und Funktionen im Root-Fenster referenziert werden. Dies schützt vor möglichen Deklarationskollisionen und erleichtert das Lesen und Verstehen des Codes sowie dessen Debugging.

Die Datei core/js/jeedom.class.js deklariert zwei neue Namespaces :

jeeFrontEnd[}

Einige globale Variablen befinden sich jetzt in diesem Namensraum :

jeeFrontEnd = {
  __description: 'Globales Objekt, bei dem jede Kernseite ihre eigenen Funktionen und Variablen in ihrem Unterobjektnamen registriert.',
  jeedom_firstUse: '',
  language: '',
  userProfils: {},
  planEditOption: {state: falsch, schnappen: falsch, Gitter: falsch, GridSize: falsch, hervorheben: true},
  //Seitenverlauf laden:
  VORHERIGE SEITE: null,
  PREVIOUS_LOCATION: null,
  NO_POPSTAT: false,
  modifyWithoutSave: false,
  //@index.php
  serverDatetime: null,
  clientServerDiffDatetime: null,
  serverDatetime: null,
  serverTZoffsetMin: null,
}

Typisches Beispiel für desktop/js/corepage.js :

"strenge Verwendung"

wenn (!jeeFrontEnd.corepage) {
	jeeFrontEnd.corepage = {
		myVar: 'oneVar',
		init: function() {
			window.jeeP = diese //root-Verknüpfung
		},
		postInit: function() {
			// Dinge tun, sobald die Seite geladen ist
		},
		myFunction: funktion(_var) {
			var myFuncContextVar = dies.meineVar + ' -> ' + _var
			console.log(myFuncContextVar)
		}
	}
}

jeeFrontEnd.corepage.init()

$(function() {
  jeeFrontEnd.corepage.postInit()
})

$('#myButton').on('click', function() {
	jeeP.myFunction('test')
})

Der Namensraum der Seite wird daher bei der Rückkehr zu derselben Seite nicht neu erstellt. Außerdem ermöglicht die Variable „jeeP“ die Verwendung von „jeeFrontEnd“.corepage mit einer kurzen Syntax entspricht es einem seitenspezifischen self`.

jeephp2js[}

Wird verwendet, um Variablen von einem PHP-Skript an das js-Frontend zu übergeben. Zum Beispiel :

sendVarToJS([
  'jeephp2js.myjsvar1' => init('typ', ''),
  'jeephp2js.myjsvar2' => Konfig::byKey('enableCustomCss')
]);

Puis

$(function() {
  wenn (jeephp2js.myjsvar1 == '1') { ... }
})

Der Namensraum jeephp2js{} wird beim Seitenwechsel geleert, um unerwartete Restvariablen zu vermeiden.

Mobile

Die Desktop-Oberfläche reagiert und passt sich der Größe des Browsers an. Einige Dinge, wie das Bearbeiten eines Szenarios, wären jedoch auf einem kleinen Bildschirm kompliziert. Darüber hinaus ist es auf einem Smartphone im Freien, in 3G oder sogar 4G, wichtig, die Geschwindigkeit des Displays zu optimieren. Aus diesem Grund verfügt Jeedom über eine mobile Oberfläche, die leichter und an kleine Bildschirme angepasst ist.

Die verweisende Seite lautet / mobile / html / index.html, die sich darum kümmert :

Die Datei mobile / js / application.js enthält Funktionen, die allen Seiten gemeinsam sind.

Die aufgerufene Seite der Desktop-Oberfläche besteht aus zwei Dateien :

Ein bemerkenswerter Unterschied bei Mobile ist das Fehlen von PHP-Seiten. Die Codegenerierung basiert daher auf den js-Klassen, die bei Ajax-Aufrufen immer Core-Funktionen aufrufen können.

CSS-Dateien

Core CSS basiert hauptsächlich auf diesen Dateien :

Themen enthalten CSS, das für jedes Thema spezifisch ist, einschließlich colours.css.

CSS-Ladereihenfolge in Desktop :

Back-end

In Bearbeitung

Die Schnittstelle ist eine Sache, aber natürlich ist Ihr Jeedom immer aktiv, um Szenarien, Crones, Protokolle, Historien usw. auszuführen.

Das Back-End basiert auf denselben PHP-Klassen wie das Front-End, das in / core / class / vorhanden ist. Jeder Teil von Jeedom hat insbesondere seine eigene PHP-Klasse :

etc.

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web. Si vous continuez à utiliser ce site, nous supposerons que vous en êtes satisfait.