From ce1c97e886d3e8363005b0ec8ecdbfeb1d9c0319 Mon Sep 17 00:00:00 2001
From: svenson08 <>
Date: Thu, 24 Apr 2014 19:59:30 +0000
Subject: [PATCH] Change Detail and Set Button.
git-svn-id: https://svn.fhem.de/fhem/trunk@5634 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/95_Dashboard.pm | 123 +++++++++-----------------
fhem/www/pgm2/dashboard.js | 81 ++++++++++-------
fhem/www/pgm2/dashboard_darkstyle.css | 24 ++---
fhem/www/pgm2/dashboard_ios7.css | 23 ++---
fhem/www/pgm2/dashboard_style.css | 24 ++---
5 files changed, 116 insertions(+), 159 deletions(-)
diff --git a/fhem/FHEM/95_Dashboard.pm b/fhem/FHEM/95_Dashboard.pm
index 9713f8ffb..68e432c1c 100644
--- a/fhem/FHEM/95_Dashboard.pm
+++ b/fhem/FHEM/95_Dashboard.pm
@@ -1,4 +1,5 @@
-########################################################################################
+# $Id:$
+########################################################################################
#
# 95_Dashboard.pm
#
@@ -44,6 +45,8 @@
# 2.08: Fix dashboard_webfrontendfilter Error-Message. Internal changes. Attribute dashboard_colwidth and dashboard_sorting removed.
# 2.09: dashboard_showfullsize not applied in room "all" resp. "Everything". First small implementation over Dashboard_DetailFN.
# 2.10: Internal Changes. Lock/Unlock now only in Detail view. Attribut dashboard_lockstate are obsolet.
+# 2.11: Attribute dashboard_showhelper ist obolet. Erase tabs-at-the-top-buttonbar-hidden and tabs-on-the-bottom-buttonbar-hidden values
+# from Attribute dashboard_showtabs. Change Buttonbar Style. Clear CSS and Dashboard.js.
#
# Known Bugs/Todos:
# BUG: Nicht alle Inhalte aller Tabs laden, bei Plots dauert die bedienung des Dashboards zu lange. -> elemente hidden?
@@ -96,7 +99,7 @@ my $fwjquery = "jquery.min.js";
my $fwjqueryui = "jquery-ui.min.js";
my $dashboardname = "Dashboard"; # Link Text
my $dashboardhiddenroom = "DashboardRoom"; # Hiddenroom
-my $dashboardversion = "2.10";
+my $dashboardversion = "2.11";
# -------------------------------------------------------------------------------------------
#############################################################################################
@@ -111,11 +114,11 @@ sub Dashboard_Initialize ($) {
$hash->{AttrList} = "disable:0,1 ".
"dashboard_colcount:1,2,3,4,5 ".
"dashboard_debug:0,1 ".
- "dashboard_lockstate:dont-use-this-attribut ".
+ "dashboard_lockstate:dont-use-this-attribut ". #obolet since 04.2014
"dashboard_rowtopheight ".
"dashboard_rowbottomheight ".
"dashboard_row:top,center,bottom,top-center,center-bottom,top-center-bottom ".
- "dashboard_showhelper:0,1 ".
+ "dashboard_showhelper:dont-use-this-attribut ". #obolet since 04.2014
"dashboard_showtooglebuttons:0,1 ".
#new attribute vers. 2.00
"dashboard_tabcount:1,2,3,4,5,6,7 ".
@@ -141,7 +144,8 @@ sub Dashboard_Initialize ($) {
"dashboard_rowcentercolwidth ".
"dashboard_showfullsize:0,1 ".
#new attribute vers. 2.02
- "dashboard_showtabs:tabs-and-buttonbar-at-the-top,tabs-at-the-top-buttonbar-hidden,tabs-and-buttonbar-on-the-bottom,tabs-on-the-bottom-buttonbar-hidden,tabs-and-buttonbar-hidden ".
+ #"dashboard_showtabs:tabs-and-buttonbar-at-the-top,tabs-at-the-top-buttonbar-hidden,tabs-and-buttonbar-on-the-bottom,tabs-on-the-bottom-buttonbar-hidden,tabs-and-buttonbar-hidden ".
+ "dashboard_showtabs:tabs-and-buttonbar-at-the-top,tabs-and-buttonbar-on-the-bottom,tabs-and-buttonbar-hidden ".
#new attribute vers. 2.03
"dashboard_tab1icon ".
"dashboard_tab2icon ".
@@ -178,9 +182,9 @@ sub Dashboard_DetailFN() {
my $ret = "";
$ret .= "
\n";
########################### Dashboard Tab-Liste ##############################################
- my $tabshow = "hidden";
my $tabicon = "";
- if ($showtabs eq "tabs-and-buttonbar-at-the-top" || $showtabs eq "tabs-at-the-top-buttonbar-hidden") { $tabshow = "top";}
- if ($showtabs eq "tabs-and-buttonbar-on-the-bottom" || $showtabs eq "tabs-on-the-bottom-buttonbar-hidden") { $tabshow = "bottom";}
+ $ret .= " \n";
- $ret .= " \n";
- if ($showtabs ne "tabs-at-the-top-buttonbar-hidden" && $showtabs ne "tabs-on-the-bottom-buttonbar-hidden" && $showtabs ne "tabs-and-buttonbar-hidden") { $ret .= BuildButtonBar($d,$showtabs,$showfullsize); }
-
- for (my $i=0;$i<$tabcount;$i++){
+ for (my $i=0;$i<$tabcount;$i++){
$tabicon = "";
- if ($tabicons[$i] ne "") { $tabicon = FW_makeImage($tabicons[$i],$tabicons[$i],"dashboard_tabicon") . " "; }
- $ret .= " - ".$tabicon."".trim($tabnames[$i])."
";
+ if ($tabicons[$i] ne "") { $tabicon = FW_makeImage($tabicons[$i],$tabicons[$i],"dashboard_tabicon")." "; }
+ $ret .= " - ".$tabicon."".trim($tabnames[$i])."
";
}
$ret .= " \n";
##############################################################################################
@@ -459,30 +452,6 @@ sub BuildDashboardBottomRow($$$$){
return $ret;
}
-sub BuildButtonBar($$$){
- my ($d,$pos,$fullsize) = @_;
- my $ret = "";
- my $cssclass = "hidden";
-
- if ($pos eq "tabs-and-buttonbar-at-the-top") { $cssclass = "top"; }
- if ($pos eq "tabs-and-buttonbar-on-the-bottom") { $cssclass = "bottom"; }
-
- if ($fullsize eq "1" && $pos ne "hidden" ) {
- $ret .= "\n";
- }
-
- if ($pos ne "hidden") {
- $ret .= "\n";
- }
-
- return $ret;
-}
-
sub BuildGroupWidgets($$$$$) {
my ($tab,$column,$id,$dbgroups, $dbsorting) = @_;
my $ret = "";
@@ -676,6 +645,20 @@ sub CheckDashboardAttributUssage($) { # replaces old disused attributes and thei
{ FW_fC("deleteattr ".$d." dashboard_lockstate"); }
Log3 $hash, 3, "[".$hash->{NAME}. " V".$dashboardversion."]"." Using an outdated no longer used Attribute or Value. This has been corrected. Don't forget to save config. [dashboard_lockstate]";
}
+ my $showhelper = AttrVal($defs{$d}{NAME}, "dashboard_showhelper", ""); # outdates 04.2014
+ if ($showhelper ne "") {
+ { FW_fC("deleteattr ".$d." dashboard_showhelper"); }
+ Log3 $hash, 3, "[".$hash->{NAME}. " V".$dashboardversion."]"." Using an outdated no longer used Attribute or Value. This has been corrected. Don't forget to save config. [dashboard_showhelper]";
+ }
+ my $showtabs = AttrVal($defs{$d}{NAME}, "dashboard_showtabs", ""); # delete values 04.2014
+ if ($showtabs eq "tabs-at-the-top-buttonbar-hidden") {
+ { FW_fC("set ".$d." dashboard_showtabs tabs-and-buttonbar-at-the-top"); }
+ Log3 $hash, 3, "[".$hash->{NAME}. " V".$dashboardversion."]"." Using an outdated no longer used Attribute or Value. This has been corrected. Don't forget to save config. [tabs-at-the-top-buttonbar-hidden]";
+ }
+ if ($showtabs eq "tabs-on-the-bottom-buttonbar-hidden") {
+ { FW_fC("set ".$d." dashboard_showtabs tabs-and-buttonbar-on-the-bottom"); }
+ Log3 $hash, 3, "[".$hash->{NAME}. " V".$dashboardversion."]"." Using an outdated no longer used Attribute or Value. This has been corrected. Don't forget to save config. [tabs-on-the-bottom-buttonbar-hidden]";
+ }
}
sub CreateDashboardEntry($) {
@@ -733,8 +716,6 @@ sub CreateDashboardEntry($) {
attr anyViews dashboard_colcount 2
attr anyViews dashboard_rowcentercolwidth 30,70
attr anyViews dashboard_tab1groups <Group1>,<Group2>,<Group3>
- attr anyViews dashboard_lockstate unlock
- attr anyViews dashboard_showhelper 1
@@ -742,7 +723,10 @@ sub CreateDashboardEntry($) {
Set
- N/A
+ set <name> lock
+ locks the Dashboard so that no position changes can be made
+ set <name> unlock
+ unlock the Dashboard
@@ -938,12 +922,6 @@ sub CreateDashboardEntry($) {
dashboard_tab7icon
Set the icon for a Tab. There must exist an icon with the name ico.png in the modpath directory. If the image is referencing an SVG icon, then you can use the @colorname suffix to color the image.
-
- dashboard_lockstate
- When set to "unlock" you can edit the Dashboard. When set to "lock" no change can be made.
- If the bar is hidden dashboard_lockstate is "lock". Editing is possible only with activated switch panel.
- Default: unlock
-
dashboard_colcount
Number of columns in which the groups can be displayed. Nevertheless, it is possible to have multiple groups
@@ -957,14 +935,9 @@ sub CreateDashboardEntry($) {
dashboard_showtabs
- Displays the Tabs on top or bottom, or hides them. This also applies to the Buttonbar. If the Buttonbar is hidden dashboard_lockstate the "lock" is used.
+ Displays the Tabs/Buttonbar on top or bottom, or hides them. If the Buttonbar is hidden lockstate is "lock" is used.
Default: tabs-and-buttonbar-at-the-top
-
- dashboard_showhelper
- Displays frames in order to facilitate the positioning of the groups.
- Default: 1
-
dashboard_showtooglebuttons
Displays a Toogle Button on each Group do collapse.
@@ -1005,8 +978,6 @@ sub CreateDashboardEntry($) {
attr anyViews dashboard_colcount 2
attr anyViews dashboard_rowcentercolwidth 30,70
attr anyViews dashboard_tab1groups <Group1>,<Group2>,<Group3>
- attr anyViews dashboard_lockstate unlock
- attr anyViews dashboard_showhelper 1
@@ -1014,7 +985,10 @@ sub CreateDashboardEntry($) {
Set
- N/A
+ set <name> lock
+ Sperrt das Dashboard so das keine Positionsänderungen vorgenommen werden können
+ set <name> unlock
+ Entsperrt das Dashboard
@@ -1210,12 +1184,6 @@ sub CreateDashboardEntry($) {
dashboard_tab7icon
Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.
-
- dashboard_lockstate
- Bei Dashboard Einstellung "unlock" kann dieses bearbeitet werden. Bei der Einstellung "lock" können keine Änderung vorgenommen werden.
- Wenn die Leiste ausgeblendet ist (dashboard_showtabs) ist das Dashboard gespert. Die Bearbeitung ist daher nur mit sichtbarer Buttonbar möglich ist.
- Standard: unlock
-
dashboard_colcount
Die Anzahl der Spalten in der Gruppen dargestellt werden können. Dennoch ist es möglich, mehrere Gruppen
@@ -1230,14 +1198,9 @@ sub CreateDashboardEntry($) {
dashboard_showtabs
- Zeigt die Tabs des Dashboards oben oder unten an, oder blendet diese aus. Dies gilt auch für die Schalterleiste. Wenn die Schalterleiste ausgeblendet wird ist das Dashboard gespert.
+ Zeigt die Tabs/Schalterleiste des Dashboards oben oder unten an, oder blendet diese aus. Wenn die Schalterleiste ausgeblendet wird ist das Dashboard gespert.
Standard: tabs-and-buttonbar-at-the-top
-
- dashboard_showhelper
- Blendet Ränder ein, die eine Positionierung der Gruppen erleichtern.
- Standard: 1
-
dashboard_showtooglebuttons
Zeigt eine Schaltfläche in jeder Gruppe mit der man diese auf- und zuklappen kann.
diff --git a/fhem/www/pgm2/dashboard.js b/fhem/www/pgm2/dashboard.js
index 43094ba29..b1838788e 100644
--- a/fhem/www/pgm2/dashboard.js
+++ b/fhem/www/pgm2/dashboard.js
@@ -14,12 +14,23 @@
// been fixed.
// 2.04: Dashboard position near Top in showfullsize-mode. Restore ActiveTab funktion
// 2.05: Delete function for set lockstate
+// 2.06: change Set and Detail Button.
//
// Known Bugs/Todo's
// See 95_Dashboard.pm
//########################################################################################
//########################################################################################
+
+var dashboard_name = "unknown";
+var dashboard_fullsize = false;
+var dashboard_buttonbar = "top";
+
+//Only use for debugging
+function showdebugMessage(msg){
+ document.getElementById("dashboard_jsdebug").value = msg;
+}
+
function saveOrder() {
var EndSaveResult = "";
var ActiveTab = $("#tabs .ui-tabs-panel:visible").attr("id").substring(14,13);
@@ -53,7 +64,7 @@ function saveOrder() {
//------------------------------------------------------------------------
//--------------------- Store new Positions ------------------------
if (EndSaveResult != "") { $("#tabs .ui-tabs-panel:visible").data("tabwidgets",EndSaveResult); } //store widgetposition in active tab Widget
- document.getElementById("dashboard_button_set").classList.add('dashboard_button_changed'); //Mark that the Changes are not saved
+ $("#setPosition").button({disabled: false}); //Mark that the Changes are not saved
//------------------------------------------------------------------------
}
@@ -137,11 +148,6 @@ function GetColWidth(ColCount, ColWidth){
return aColWidth;
}
-//Only use for debugging
-function showdebugMessage(msg){
- document.getElementById("dashboard_jsdebug").value = msg;
-}
-
function dashboard_setlock(){
$("#dashboard_button_lock").prepend('');
//############################################################
@@ -171,15 +177,15 @@ function dashboard_setposition(){
for (var i = 0, n = params[10]; i < n; i++ ) {
if ($("#dashboard_tab"+i).data("tabwidgets") != null) {
var j = i+1;
- FW_cmd(document.location.pathname+'?XHR=1&cmd.'+params[0]+'=attr '+params[0]+' dashboard_tab'+j+'sorting '+$("#dashboard_tab"+i).data("tabwidgets"));
+ FW_cmd(document.location.pathname+'?XHR=1&cmd.'+dashboard_name+'=attr '+dashboard_name+' dashboard_tab'+j+'sorting '+$("#dashboard_tab"+i).data("tabwidgets"));
}
}
- document.getElementById("dashboard_button_set").classList.remove('dashboard_button_changed');
+ $("#setPosition").button({disabled: true});
//---------------------------------------------------------------------
//--------------------- store active Tab ------------------------------
var activeTab = ($( "#tabs" ).tabs( "option", "active" ))+1;
if (params[11] != activeTab){
- FW_cmd(document.location.pathname+'?XHR=1&cmd.'+params[0]+'=attr '+params[0]+' dashboard_activetab '+activeTab);
+ FW_cmd(document.location.pathname+'?XHR=1&cmd.'+dashboard_name+'=attr '+dashboard_name+' dashboard_activetab '+activeTab);
}
//---------------------------------------------------------------------
}
@@ -212,15 +218,41 @@ function dashboard_modifyWidget(){
});
}
+function adddashboardButton(position, text, id, hint) {
+ $("#" + id).button();
+ var my_button = ''+text+'';
+ $("#dashboard_tabnav").prepend(my_button);
+}
+
+function dashboard_buildButtons() {
+ adddashboardButton("top", "", "defineDetails", "Show Details");
+ $("#defineDetails").click(function () {location.href=document.location.pathname+'?detail='+dashboard_name;});
+
+ adddashboardButton("top", "", "setPosition", "Set Position");
+ $("#setPosition").button({disabled: true});
+ $("#setPosition").click(function () {dashboard_setposition()});
+
+ //adddashboardButton("top", "XX", "editTab", "Edit Tab");
+ //$("#editTab").click(function () {alert("comming soon")});
+
+ if (dashboard_fullsize == true) {
+ adddashboardButton("top", "", "goBack", "Back");
+ $("#goBack").click(function () {location.href=document.location.pathname;});
+ }
+}
+
$(document).ready( function () {
var dbattr = document.getElementById("dashboard_attr");
if (dbattr) {
//--------------------------------- Attribute des Dashboards ------------------------------------------------------------------
var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration
+ dashboard_name = params[0];
+ dashboard_buttonbar = params[4];
+ dashboard_fullsize = (params[13] == 1) ? true : false;
//-------------------------------------------------------------------------------------------------------------------------------------
$("body").attr("longpollfilter", ".*") //need for longpoll
- if (params[13] == 1){ //disable roomlist and header
+ if (dashboard_fullsize == 1){ //disable roomlist and header
$("#menuScrollArea").remove();
$("#hdr").remove();
$(".roomoverview:first").remove();
@@ -232,12 +264,7 @@ $(document).ready( function () {
connectWith: ['.dashboard_column', '.ui-row'],
cursor: 'move',
stop: function() { saveOrder(); }
- });
-
- if (params[4] == "hidden") {
- dashboard_modifyWidget();
- dashboard_setlock();
- }
+ });
if (params[6] == 1){ //ToogleButton show/hide
$(".dashboard_widget")
@@ -286,30 +313,18 @@ $(document).ready( function () {
create: function(event, ui) {
$( "#tabs" ).tabs( "option", "active", params[11]-1 ); //set active Tab
restoreOrder();
- },
+ },
activate: function (event, ui) {
restoreOrder();
- }
+ }
});
if ($("#dashboard_tabnav").hasClass("dashboard_tabnav_bottom")) { $(".dashboard_tabnav").appendTo(".dashboard_tabs"); } //set Tabs on the Bottom
$(".dashboard_tab_hidden").css("display", "none"); //hide Tabs
//-------------------------------------------------------------------------------------------------------------------------------------
-
-
- $("#dashboard_button_set").button({
- create: function( event, ui ) {
- $(this).addClass("dashboard_button_iconset");
- }
- });
-
- $("#dashboard_button_detail").button({
- create: function( event, ui ) {
- $(this).addClass("dashboard_button_icondetail");
- }
- });
-
+
dashboard_modifyWidget();
- if (params[3] == "lock") {dashboard_setlock();} else {dashboard_unsetlock();}
+ if (dashboard_buttonbar != "hidden") dashboard_buildButtons();
+ if ((params[3] == "lock") || (dashboard_buttonbar == "hidden")) {dashboard_setlock();} else {dashboard_unsetlock();}
if (params[14] != "none" ) {$('').appendTo($('head')); }
}
});
\ No newline at end of file
diff --git a/fhem/www/pgm2/dashboard_darkstyle.css b/fhem/www/pgm2/dashboard_darkstyle.css
index f764cdf0f..aca222b92 100644
--- a/fhem/www/pgm2/dashboard_darkstyle.css
+++ b/fhem/www/pgm2/dashboard_darkstyle.css
@@ -1,12 +1,4 @@
/* Author: svenson08*/
-.dashboard_buttonbar { background: none repeat scroll 0 0 #111111; border: 1px solid #FFFFFF; padding: 4px; margin: 0 .5em 0 0.4em; float: left; }
-.dashboard_buttonbar_top { border-bottom-width: 0; border-top-left-radius: 8px; border-top-right-radius: 8px; }
-.dashboard_buttonbar_bottom { border-top-width: 0; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; box-shadow: 5px 5px 5px #000000; }
-
-.dashboard_button { border-radius: 8px; float: left; color: #1c94c4; font-weight: bold; font-size: 0.8em; background-repeat:no-repeat;
- background-position: 4px 2px; border: 1px solid #cccccc; padding: 0.2em 0.7em 0.2em 0.4em; }
-.dashboard_button_changed { color: red; font-weight:bold; }
-
.dashboard_column { float: left; }
.dashboard_columnhelper { border: 1px dotted #CCCCCC; }
@@ -24,11 +16,15 @@
float: left; background-image: url(../images/default/dashboardicons.png); }
.dashboard_button_iconplus { margin: 0.1em 0.4em; float: right; background-position: -65px 0px; }
.dashboard_button_iconminus { margin: 0.1em 0.4em; float: right; background-position: -52px 0px; }
-.dashboard_button_iconset { background-position: -26px 0px; }
-.dashboard_button_iconlock { background-position: 0px 0px; }
-.dashboard_button_iconunlock { background-position: -13px 0px; }
-.dashboard_button_icondetail { background-position: -39px 0px; }
-.dashboard_button_iconback { margin: 0.1em 0.4em; float: right; background-position: -91px 0px; }
+.dashboard-button { display: inline-block; padding: 0 .6em; height: 1.9em; cursor: pointer;
+ background-color: #f5f5f5; background-repeat:no-repeat !important; background-position: 7px;
+ border: 1px solid #FFFFFF; border-radius: 4px; margin-top: 2px; width: 14px; position: absolute;}
+.dashboard-button-defineDetails{right: 10px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY4NjYwOTg0NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY4NjYwOTg1NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Rjg2NjA5ODI0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg2NjA5ODM0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7i4cyWAAAAsElEQVR42mJgoCEwA+IPUGxGrKZkIE6AsjOB+D8UZyKJReHTDNOwGoifIPEfAvFGJH4gIQMIYZyuWI3mCm8oRhZfhCvA0pCcvRGLmnVI3klDD9gPaE50gopvRDLMG00NSA8DCw6vcELpX0hifwnFeRrUef+hzsXlhSfYvMCA5GTkQPSAYvTAxQoyyYlGJiQDviOxFwPxCyQ+iL0eh1oUEA7EfniSciySPG0yE8kAIMAAicRYTX3YPyoAAAAASUVORK5CYII=') !important;}
+.dashboard-button-setPosition{right: 45px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYUlEQVR4XtWRUQrAMAhDneyg9mT2ptugHRaCY/FnLJAveWKifCW7AS3Avlj2AmzrFUrDIYhgJNwvN4VcBDwiYC5/CyclBpDDoe2poATGEuegs3AswCUIk/8+pl2K8uE/6ATG4BstrVLVgQAAAABJRU5ErkJggg==') !important;}
+.dashboard-button-goBack{right: 80px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAZ0lEQVQ4jd3RMQqDQBBA0YekV0wj3v8QNqZTJBEtPY42K9l2p0s+TDHF/zAMf8kTE4aovOPEp1TucGRyE5XXUhnmJJfMCFUKVMp55EuLzfeENhBUY0mRA30kkr/xHQnckQWvaODHuADAUSEXjMLoMwAAAABJRU5ErkJggg==') !important;}
+.dashboard-button-editTab{right: 115px;}
+.ui-state-disabled {cursor: default; opacity: 0.35;}
+
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; font-size: 0.1px; }
@@ -38,8 +34,6 @@
.ui-sortable-placeholder { border: 1px dotted #FFFFFF; visibility: visible !important;
height: 25px !important; width: 150px; }
-
-/* Neue CSS Einträge für Dashboard-Tabs */
.dashboard { padding: 0; margin: 0; }
.dashboard_tabnav { list-style: none; margin: 0; padding: 0 .5em 0; }
.dashboard_tabnav:before,
diff --git a/fhem/www/pgm2/dashboard_ios7.css b/fhem/www/pgm2/dashboard_ios7.css
index 4aac51d06..069d99084 100644
--- a/fhem/www/pgm2/dashboard_ios7.css
+++ b/fhem/www/pgm2/dashboard_ios7.css
@@ -1,12 +1,4 @@
/* Author: svenson08 edit by fhainz */
-.dashboard_buttonbar { padding: 6px 6px 6px 0; margin: 0 .5em 0 0; float: left; }
-.dashboard_buttonbar_top, .dashboard_buttonbar_bottom { }
-.dashboard_button { float: left; background-color: #fff; font-size: 0.8em; background-repeat:no-repeat;
- background-position: 4px 2px; border: 1px solid #808080; padding: 0.2em 0.7em 0.2em 0.4em; margin-top:7px; }
-.dashboard_button:last-child { margin-right: 6px; }
-#dashboard_button_set { color: black; cursor: default; }
-#dashboard_button_set.dashboard_button_changed { color: #147bff; cursor: pointer; }
-
a,li { outline: none; }
.dashboard_column { float: left; }
@@ -23,11 +15,13 @@ a,li { outline: none; }
float: left; background-image: url(../images/default/dashboardicons.png); }
.dashboard_button_iconplus { margin: 0.1em 0.4em; float: right; background-position: -65px -16px; }
.dashboard_button_iconminus { margin: 0.1em 0.4em; float: right; background-position: -52px -16px; }
-.dashboard_button_iconset { margin:0 2px; background-position: -26px -16px; }
-.dashboard_button_iconlock { margin:0 2px; background-position: -0px -16px; }
-.dashboard_button_iconunlock { margin:0 2px; background-position: -13px -16px; }
-.dashboard_button_icondetail { margin:0 2px; background-position: -39px -16px; }
-.dashboard_button_iconback { margin:1px 1px 0 5px; float: right; background-position: -91px -16px; }
+.dashboard-button { display: inline-block; padding: 0 .6em; height: 1.9em; cursor: pointer; background-color: #FFFFFF;
+ background-repeat:no-repeat !important; background-position: 9px; border: 1px solid #d9d9d9;
+ margin-top: 2px; width: 14px; position: absolute;}
+.dashboard-button-defineDetails{right: 10px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY4NjYwOTg0NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY4NjYwOTg1NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Rjg2NjA5ODI0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg2NjA5ODM0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7i4cyWAAAAsElEQVR42mJgoCEwA+IPUGxGrKZkIE6AsjOB+D8UZyKJReHTDNOwGoifIPEfAvFGJH4gIQMIYZyuWI3mCm8oRhZfhCvA0pCcvRGLmnVI3klDD9gPaE50gopvRDLMG00NSA8DCw6vcELpX0hifwnFeRrUef+hzsXlhSfYvMCA5GTkQPSAYvTAxQoyyYlGJiQDviOxFwPxCyQ+iL0eh1oUEA7EfniSciySPG0yE8kAIMAAicRYTX3YPyoAAAAASUVORK5CYII=') !important;}
+.dashboard-button-setPosition{right: 45px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYUlEQVR4XtWRUQrAMAhDneyg9mT2ptugHRaCY/FnLJAveWKifCW7AS3Avlj2AmzrFUrDIYhgJNwvN4VcBDwiYC5/CyclBpDDoe2poATGEuegs3AswCUIk/8+pl2K8uE/6ATG4BstrVLVgQAAAABJRU5ErkJggg==') !important;}
+.dashboard-button-goBack{right: 80px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAZ0lEQVQ4jd3RMQqDQBBA0YekV0wj3v8QNqZTJBEtPY42K9l2p0s+TDHF/zAMf8kTE4aovOPEp1TucGRyE5XXUhnmJJfMCFUKVMp55EuLzfeENhBUY0mRA30kkr/xHQnckQWvaODHuADAUSEXjMLoMwAAAABJRU5ErkJggg==') !important;}
+.ui-state-disabled {cursor: default; opacity: 0.35;}
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; font-size: 0.1px; }
@@ -36,8 +30,7 @@ a,li { outline: none; }
background-position: -78px -16px; background-repeat: no-repeat; }
.ui-sortable-placeholder { border: 1px dotted #d9d9d9; visibility: visible !important;
height: 25px !important; width: 150px; }
-
-/* Neue CSS Einträge für Dashboard-Tabs */
+
.dashboard { padding: 0; margin: 0; }
.dashboard_tabnav { list-style: none; margin: 0; padding: 0 .5em 0; }
.dashboard_tabnav:before,
diff --git a/fhem/www/pgm2/dashboard_style.css b/fhem/www/pgm2/dashboard_style.css
index efae80d1f..97714a904 100644
--- a/fhem/www/pgm2/dashboard_style.css
+++ b/fhem/www/pgm2/dashboard_style.css
@@ -1,12 +1,4 @@
/* Author: svenson08*/
-.dashboard_buttonbar { background: none repeat scroll 0 0 #d3d3ad; border: 1px solid #808080;padding: 6px; margin: 0 .5em 0 0.4em;float: left; }
-.dashboard_buttonbar_top { border-bottom-width: 0; border-top-left-radius: 8px; border-top-right-radius: 8px; }
-.dashboard_buttonbar_bottom { border-top-width: 0; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; }
-
-.dashboard_button { border-radius: 8px; float: left; color: #1c94c4; font-weight: bold; font-size: 0.8em; background-repeat:no-repeat;
- background-position: 4px 2px; border: 1px solid #808080; padding: 0.2em 0.7em 0.2em 0.4em; }
-.dashboard_button_changed { color: blue; font-weight:bold; }
-
.dashboard_column { float: left; }
.dashboard_columnhelper { border: 1px dotted #808080; }
@@ -21,11 +13,13 @@
float: left; background-image: url(../images/default/dashboardicons.png); }
.dashboard_button_iconplus { margin: 0.1em 0.4em; float: right; background-position: -65px -16px; }
.dashboard_button_iconminus { margin: 0.1em 0.4em; float: right; background-position: -52px -16px; }
-.dashboard_button_iconset { background-position: -26px -16px; }
-.dashboard_button_iconlock { background-position: -0px -16px; }
-.dashboard_button_iconunlock { background-position: -13px -16px; }
-.dashboard_button_icondetail { background-position: -39px -16px; }
-.dashboard_button_iconback { margin: 0.1em 0.4em; float: right; background-position: -91px -16px; }
+.dashboard-button { display: inline-block; padding: 0 .6em; height: 1.9em; cursor: pointer; background-color: #F0F0D8;
+ background-repeat:no-repeat !important; background-position: 9px; border: 1px solid #DDDDDD; border-radius: 4px;
+ margin-top: 2px; width: 14px; position: absolute;}
+.dashboard-button-defineDetails{right: 5px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY4NjYwOTg0NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY4NjYwOTg1NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Rjg2NjA5ODI0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg2NjA5ODM0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7i4cyWAAAAsElEQVR42mJgoCEwA+IPUGxGrKZkIE6AsjOB+D8UZyKJReHTDNOwGoifIPEfAvFGJH4gIQMIYZyuWI3mCm8oRhZfhCvA0pCcvRGLmnVI3klDD9gPaE50gopvRDLMG00NSA8DCw6vcELpX0hifwnFeRrUef+hzsXlhSfYvMCA5GTkQPSAYvTAxQoyyYlGJiQDviOxFwPxCyQ+iL0eh1oUEA7EfniSciySPG0yE8kAIMAAicRYTX3YPyoAAAAASUVORK5CYII=') !important;}
+.dashboard-button-setPosition{right: 40px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYUlEQVR4XtWRUQrAMAhDneyg9mT2ptugHRaCY/FnLJAveWKifCW7AS3Avlj2AmzrFUrDIYhgJNwvN4VcBDwiYC5/CyclBpDDoe2poATGEuegs3AswCUIk/8+pl2K8uE/6ATG4BstrVLVgQAAAABJRU5ErkJggg==') !important;}
+.dashboard-button-goBack{right: 75px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAZ0lEQVQ4jd3RMQqDQBBA0YekV0wj3v8QNqZTJBEtPY42K9l2p0s+TDHF/zAMf8kTE4aovOPEp1TucGRyE5XXUhnmJJfMCFUKVMp55EuLzfeENhBUY0mRA30kkr/xHQnckQWvaODHuADAUSEXjMLoMwAAAABJRU5ErkJggg==') !important;}
+.ui-state-disabled {cursor: default;opacity: 0.35;}
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; font-size: 0.1px; }
@@ -34,9 +28,7 @@
background-position: -78px -16px; background-repeat: no-repeat; }
.ui-sortable-placeholder { border: 1px dotted #808080; visibility: visible !important;
height: 25px !important; width: 150px; }
-
-
-/* Neue CSS Einträge für Dashboard-Tabs */
+
.dashboard { padding: 0; margin: 0; }
.dashboard_tabnav { list-style: none; margin: 0; padding: 0 .5em 0; }
.dashboard_tabnav:before,
|