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');