diff --git a/Gruntfile.js b/Gruntfile.js index 0d4b346bbd0..2e084c41f8f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -82,6 +82,7 @@ module.exports = function(grunt) { '!release/icon/knx-uf-iconset/knx-uf-iconset/**', 'release/lib/**', 'release/plugins/**', + 'release/transforms/**', 'release/upgrade/**', 'release/*', '!release/build.txt' @@ -210,6 +211,7 @@ module.exports = function(grunt) { 'visu_config.xsd', 'dependencies/require-2.1.15.min.js', 'icon/*.{png,svg}', + '!icon/knx-uf-iconset.svg', // don't include the big icon file as it might be too big and prevent the caching of the other files 'designs/**/*.{js,css,png,ttf,svg}', 'plugins/**/*.{js,css,png,ttf,svg}', '!plugins/diagram/dep/flot/*.js', // alreay mangled in the plugin @@ -601,6 +603,17 @@ module.exports = function(grunt) { // 'git add external/knx-uf-iconset', //'git commit -m "icons updated"' ].join('&&') + }, + // additional build step - TODO include into requirejs when known how to do it... + // Copy the required files for the 2D demo - and all other files by the + // user which try to achive similiar effects + postbuild: { + command: [ + 'cp src/dependencies/jquery.js release/dependencies/', + 'cp src/lib/CometVisuClient.js release/lib/', + 'mkdir release/transforms', + 'cp src/transforms/Transform*.js release/transforms/' + ].join('&&') } }, @@ -700,7 +713,7 @@ module.exports = function(grunt) { // Default task runs all code checks, updates the banner and builds the release grunt.registerTask('buildicons', ['clean:iconcache', 'svgmin', 'svgstore', 'handle-kuf-svg']); //grunt.registerTask('default', [ 'jshint', 'jscs', 'usebanner', 'requirejs', 'manifest', 'compress:tar', 'compress:zip' ]); - grunt.registerTask('build', [ 'updateicons', 'jscs', 'clean', 'file-creator', 'buildicons', 'requirejs', 'manifest', 'update-demo-config', 'chmod', 'compress:tar', 'compress:zip' ]); + grunt.registerTask('build', [ 'updateicons', 'jscs', 'clean', 'file-creator', 'buildicons', 'requirejs', 'shell:postbuild', 'manifest', 'update-demo-config', 'chmod', 'compress:tar', 'compress:zip' ]); grunt.registerTask('lint', [ 'jshint', 'jscs' ]); grunt.registerTask('release', [ 'prompt', 'build', 'github-release' ]); diff --git a/doc/manual/de/config/mapping.rst b/doc/manual/de/config/mapping.rst index 06e90dc48c1..6da21958a6b 100644 --- a/doc/manual/de/config/mapping.rst +++ b/doc/manual/de/config/mapping.rst @@ -244,6 +244,16 @@ Beispielsweise kann man damit °C in °F umrechnen: +Mit diesem Beispiel können fehlerhafte Sensoren in einer Übersichtsseite markiert werden. +Sensoren liefern in der Regel nummerische Werte. Bleiben diesen aus, kann z.B. das expire-Binding +in openHAB einen negativen Wert zurückliefern. Das Mapping würde ein *OK* oder *not OK* liefern: + +.. code-block:: xml + + + y = (x >= 0) ? "OK" : "not OK"; + + Formeln (Advanced) ------------------ diff --git a/doc/manual/de/config/widgets/include/index.rst b/doc/manual/de/config/widgets/include/index.rst index 937193ff3a5..baba9852fa2 100644 --- a/doc/manual/de/config/widgets/include/index.rst +++ b/doc/manual/de/config/widgets/include/index.rst @@ -8,22 +8,27 @@ Das Include Widget Beschreibung ------------ -Das Include Widget ist im eigentlichen kein Widget, denn es bewirkt keine sichtbaren Änderungen +Das Include Widget ist im eigentlichen Sinn kein Widget, denn es bewirkt keine sichtbaren Änderungen in der Visualisierung. Mit Hilfe des Include-Elements kann man seine visu_config.xml Datei in mehrere Dateien aufteilen. Das kann bei sehr großen Dateien, hilfreich sein, den Überblick zu bewahren, wenn man den XML-Code direkt -bearbeiten möchte. +bearbeiten möchte. Außerdem können bei mehreren visu_config_.xml Dateien redundante Abschnitte ausgelagert werden. .. code-block:: xml - - + + ... Wie im Beispiel zu sehen, kann man z.B. für jeden Raum eine eigene XML-Datei anlegen und diese dann mittels ``include`` an der gewünschten Stelle in der eigentlichen *visu_config.xml* einbinden. +.. hint:: + Der Pfad zu den inkludierten Dateien muss relative zum Wurzelverzeichnis angegeben werden (also das Verzeichnis in dem + die index.html liegt). Wenn die einzubindende Datei im config-Ordner liegt, muss also ``src=config/`` + angegeben werden (siehe Beispielcode oben). + diff --git a/doc/manual/de/install/index.rst b/doc/manual/de/install/index.rst index 4a4dadce3b0..45429f9cc3b 100644 --- a/doc/manual/de/install/index.rst +++ b/doc/manual/de/install/index.rst @@ -7,6 +7,7 @@ Einfache Installation: - :doc:`Allgemein ` - :doc:`auf Wiregate ` - :doc:`auf Raspberry Pi ` +- :doc:`auf einem Debian System mit openHAB2 ` .. toctree:: :hidden: @@ -15,6 +16,7 @@ Einfache Installation: wiregate raspberry install-dev + openhab2 Schwieriger, nur für Fortgeschrittene: diff --git a/doc/manual/de/install/openhab2.rst b/doc/manual/de/install/openhab2.rst new file mode 100644 index 00000000000..f8e5e0062bb --- /dev/null +++ b/doc/manual/de/install/openhab2.rst @@ -0,0 +1,37 @@ +Installation auf einem Debian System mit openHAB2 +================================================= + +Voraussetzung ist hier, dass openHAB2 per apt-get installiert wurde, ansonsten müssen ggf. die Pfade +angepasst werden. +Die CometVisu kann hier herunter geladen werden: https://github.com/CometVisu/CometVisu/releases. +Das entpackte Paket enthält den Ordner *cometvisu/release*, welches nach /var/www/cometvisu +kopiert werden muss. Außerdem sind die Berechtigungen für den openhab User zu setzen. + +.. code-block:: bash + + cp -r cometvisu/release /var/www/cometvisu + chown -R openhab:openhab /var/www/cometvisu + + mkdir -p /etc/openhab2/cometvisu/config + mkdir -p /etc/openhab2/cometvisu/designs + chown -R openhab:openhab /etc/openhab2/cometvisu + +Die zwei Verzeichnisse */etc/openhab2/cometvisu/config* und */etc/openhab2/cometvisu/designs* werden die Konfigurationen +der CometVisu enthalten und sind durch die separate Lokation vor Upgrades geschützt. Nur wenn diese Verzeichnisse nicht +vorhanden sind, wird CometVisu die Konfiguration in */etc/openhab2/html/cometvisu/config* suchen. + +Damit openHAB2 mit der CometVisu kommunizieren kann, ist die entsprechende Erweiterung über die PaperUI (http://openhab_adresse:8080) +-> Add-ons -> User Interfaces -> CometVisu zu installieren. Wenn auch noch der CometVisu Editor benutzt werden soll, ist die +Erweiterung *PHP support for CometVisu* zu installieren. +Die openHAB2 Konfigurationsdatei cometvisu.cfg befindet sich, wie alle anderen Konfigurationen der openHAB Erweiterungen, +unter */etc/openhab2/services/* und sollte die Direktive + +.. code-block:: ini + + webFolder=/var/www/cometvisu/ + webAlias=/cometvisu + +enthalten. + +Die CometVisu ist direkt unter der URL ``http://openhab_adresse:8080/cometvisu/?config=`` im Browser erreichbar, +wobei sich ```` vom Namen der ``visu_config_.xml`` ableitet. diff --git a/src/plugins/colorchooser/farbtastic/farbtastic.js b/src/plugins/colorchooser/farbtastic/farbtastic.js index 8d339cdd270..a363ee3d3c2 100644 --- a/src/plugins/colorchooser/farbtastic/farbtastic.js +++ b/src/plugins/colorchooser/farbtastic/farbtastic.js @@ -114,11 +114,8 @@ $._farbtastic = function (container, callback) { * Mousedown handler */ fb.mousedown = function (event) { - // Capture mouse - if (!document.dragging) { - $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup); - document.dragging = true; - } + + // Check which area is being dragged var pos = fb.widgetCoords(event); @@ -129,6 +126,35 @@ $._farbtastic = function (container, callback) { return false; }; + /** + * TouchConvert: Converts touch co-ordinates to mouse co-ordinates + */ + fb.touchconvert = function (e) { + var e = e.originalEvent.touches.item(0); + return e; + } + + /** + * Touchmove handler for iPad, iPhone etc + */ + fb.touchmove = function (e) { + fb.mousemove( fb.touchconvert(e) ); + event.preventDefault(); + return false; + } + + /** + * Touchend handler for iPad, iPhone etc + */ + fb.touchend = function (event) { + $(document).unbind('touchmove', fb.touchmove); + $(document).unbind('touchend', fb.touchend); + document.dragging = false; + event.preventDefault(); + return false; + } + + /** * Mousemove handler */ @@ -262,8 +288,26 @@ $._farbtastic = function (container, callback) { }; // Install mousedown handler (the others are set on the document on-demand) - $('*', e).mousedown(fb.mousedown); + $('*', e).mousedown(function(e){ + // Capture mouse + if (!document.dragging) { + $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup); + document.dragging = true; + } + fb.mousedown(e); + }); + // TouchStart bound, calls conversion of touchpoints to mousepoints + $('*', e).bind("touchstart", function (e) { + // Capture mouse + if (!document.dragging) { + $(document).bind('touchmove', fb.touchmove).bind('touchend', fb.touchend); + document.dragging = true; + } + fb.mousedown( fb.touchconvert(e) ); + e.preventDefault(); + return false; + }); // Init color fb.setColor('#000000');