2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 06:39:11 +00:00

Bugfixes. Groupstitel now can show icons, Backbutton in Fullsize-Mode

git-svn-id: https://svn.fhem.de/fhem/trunk@4978 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
svenson08 2014-02-17 20:11:38 +00:00
parent 424cef3561
commit 7ed2ba7916
7 changed files with 131 additions and 66 deletions

View File

@ -1,6 +1,8 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- SVN
- feature: Dashboard: Groupstitel now can show icons,
Backbutton in Fullsize-Mode
- deleted: 51_BBB_WATCHDOG.pm - not really needed
- bugfix: DbLog: adding ShutdownFunction
- feature: YAMAHA_AVR: new attribute "disable" to disable cyclic status

View File

@ -36,12 +36,18 @@
# is stored after tab change
# 2.04: change view of readingroups. Attribute dashboard_groups removed. New Attribute dashboard_webfrontendfilter to define
# separate Dashboards per FHEMWEB Instance.
# 2.05: bugfix, changes in dashboard.js, groups can show Icons (group:icon@color,group:icon@color ...). "Back"-Button in Fullsize-Mode.
# Dashboard near top in Fullsize-Mode. dashboard_activetab store the active Tab, not the last active tab.
#
# Known Bugs/Todos:
# BUG: Nicht alle Inhalte aller Tabs laden, bei Plots dauert die bedienung des Dashboards zu lange. -> elemente hidden?
# x TODO: Dashboard Config diverenzieren je auflösung
# x TODO: Darstellung von z.B. readingGroups
# xTODO: dashboard_activetab wieder zur ursprungsfunktion
# BUG: Variabler abstand wird nicht gesichert
# TODO: personalisiertes CSS angeben und bestehende CSS zu überschreiben -> User-config
# BUG: dashboard_webfrontendfilter doesn't Work Antwort #469
# TODO: More Tabs
# TODO: sortby
# TODO: sort by alias, eg sort by device name
# Log 1, "[DASHBOARD simple debug] '".$g."' ";
########################################################################################
#
@ -79,6 +85,7 @@ use vars qw(%defs); # FHEM device/button definitions
use vars qw($FW_wname); # Web instance
use vars qw(%FW_hiddenroom);# hash of hidden rooms, used by weblink
use vars qw(%FW_types); # device types
use vars qw($FW_ss); # is smallscreen, needed by 97_GROUP/95_VIEW
# --------------------------- Global Variable -----------------------------------------------
my %group;
@ -86,7 +93,7 @@ my $fwjquery = "jquery.min.js";
my $fwjqueryui = "jquery-ui.min.js";
my $dashboardname = "Dashboard"; # Link Text
my $dashboardhiddenroom = "DashboardRoom"; # Hiddenroom
my $dashboardversion = "2.04";
my $dashboardversion = "2.05";
# -------------------------------------------------------------------------------------------
sub Dashboard_Initialize ($) {
@ -253,8 +260,6 @@ sub DashboardAsHtml($)
if ($activetab > $tabcount) { $activetab = $tabcount; }
$colwidth =~ tr/,/:/;
#if ($colwidth =~/[a-zA-Z]+$/) { Log 1, "[DASHBOARD simple debug] Nicht nur zahlen ".$colwidth; } #future release
if (not ($colheight =~ /^\d+$/)) { $colheight = 400 };
if (not ($rowtopheight =~ /^\d+$/)) { $rowtopheight = 50 };
if (not ($rowbottomheight =~ /^\d+$/)) { $rowbottomheight = 50 };
@ -281,8 +286,9 @@ sub DashboardAsHtml($)
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 .= " <ul id=\"dashboard_tabnav\" class=\"dashboard_tabnav dashboard_tabnav_".$tabshow."\">\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); }
$ret .= " <ul id=\"dashboard_tabnav\" class=\"dashboard_tabnav dashboard_tabnav_".$tabshow."\">\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++){
$tabicon = "";
if ($tabicons[$i] ne "") { $tabicon = FW_makeImage($tabicons[$i],$tabicons[$i],"dashboard_tabicon") . "&nbsp;"; }
@ -294,12 +300,13 @@ sub DashboardAsHtml($)
for (my $t=0;$t<$tabcount;$t++){
my @tabgroup = split(",", $tabgroups[$t]); #Set temp. position for groups without an stored position
for (my $i=0;$i<@tabgroup;$i++){
if (index($tabsortings[$t],trim($tabgroup[$i])) < 0) { $tabsortings[$t] = $tabsortings[$t]."t".$t."c".GetMaxColumnId($row,$colcount).",".trim($tabgroup[$i]).",true,0,0:"; }
my @stabgroup = split(":", trim($tabgroup[$i]));
if (index($tabsortings[$t],trim($stabgroup[$i])) < 0) { $tabsortings[$t] = $tabsortings[$t]."t".$t."c".GetMaxColumnId($row,$colcount).",".trim($stabgroup[$i]).",true,0,0:"; }
}
%group = BuildGroupList($tabgroups[$t]);
$ret .= " <div id=\"dashboard_tab".$t."\" data-tabwidgets=\"".$tabsortings[$t]."\" class=\"dashboard_tabpanel\">\n";
$ret .= " <ul class=\"dashboard_tabcontent\">\n";
$ret .= " <table class=\"dashboard_tabcontent\">\n"; # dashboard\">";
$ret .= " <table class=\"dashboard_tabcontent\">\n";
##################### Top Row (only one Column) #############################################
if ($row eq "top-center-bottom" || $row eq "top-center" || $row eq "top"){ $ret .= BuildDashboardTopRow($t,$id,$tabgroups[$t],$tabsortings[$t]); }
##################### Center Row (max. 5 Column) ############################################
@ -359,36 +366,57 @@ sub BuildDashboardBottomRow($$$$){
return $ret;
}
sub BuildButtonBar($$){
my ($d,$pos) = @_;
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 .= "<div class=\"dashboard_buttonbar dashboard_buttonbar_".$cssclass."\">\n";
$ret .= " <div class=\"dashboard_button\"> <a id=\"dashboard_button_back\" href=\"/\" title=\"Back\"><span class=\"dashboard_button_icon dashboard_button_iconback\"></span></a> </div>\n";
$ret .= "</div>\n";
}
if ($pos ne "hidden") {
$ret .= "<div class=\"dashboard_buttonbar dashboard_buttonbar_".$cssclass."\">\n";
$ret .= " <div class=\"dashboard_button\"> <span class=\"dashboard_button_icon dashboard_button_iconset\"></span> <a id=\"dashboard_button_set\" href=\"javascript:dashboard_setposition()\" title=\"Set the Position\">Set</a> </div>\n";
$ret .= " <div class=\"dashboard_button\"> <a id=\"dashboard_button_set\" href=\"javascript:dashboard_setposition()\" title=\"Set the Position\"><span class=\"dashboard_button_icon dashboard_button_iconset\"></span>Set</a> </div>\n";
$ret .= " <div class=\"dashboard_button\"> <a id=\"dashboard_button_lock\" href=\"javascript:dashboard_tooglelock()\" title=\"Lock Dashboard\">Lock</a> </div>\n";
$ret .= " <div class=\"dashboard_button\"> <span class=\"dashboard_button_icon dashboard_button_icondetail\"></span> <a id=\"dashboard_button_detail\" href=\"/fhem?detail=$d\" title=\"Dashboard Details\">Detail</a> </div>\n";
$ret .= " <div class=\"dashboard_button\"> <a id=\"dashboard_button_detail\" href=\"/fhem?detail=$d\" title=\"Dashboard Details\"><span class=\"dashboard_button_icon dashboard_button_icondetail\"></span>Detail</a> </div>\n";
$ret .= "</div>\n";
}
}
return $ret;
}
sub BuildGroupWidgets($$$$$) {
my ($tab,$column,$id,$dbgroups, $dbsorting) = @_;
my $ret = "";
my $counter = 0;
my @storedsorting = split(":", $dbsorting);
my @dbgroup = split(",", $dbgroups);
my $widgetheader = "";
foreach my $singlesorting (@storedsorting) {
my @groupdata = split(",", $singlesorting);
if (index($dbsorting, "t".$tab."c".$column.",".$groupdata[1]) >= 0 && index($dbgroups, $groupdata[1]) >= 0 && $groupdata[1] ne "" ) { #gruppe auch für tab hinterlegt
if (index($dbsorting, "t".$tab."c".$column.",".$groupdata[1]) >= 0 && index($dbgroups, $groupdata[1]) >= 0 && $groupdata[1] ne "" ) { #group is set to tab
$widgetheader = $groupdata[1];
foreach my $strdbgroup (@dbgroup) {
my @groupicon = split(":", trim($strdbgroup));
if ($groupicon[0] eq $groupdata[1]) {
if ($#groupicon > 0) { $widgetheader = FW_makeImage($groupicon[1],$groupicon[1],"dashboard_tabicon") . "&nbsp;".$groupdata[1]; }
}
}
$ret .= " <div class=\"dashboard_widget\" data-groupwidget=\"".$singlesorting."\" id=\"".$id."t".$tab."c".$column."w".$counter."\">\n";
$ret .= " <div class=\"dashboard_widgetinner\">\n";
$ret .= " <div class=\"dashboard_widgetheader\">".$groupdata[1]."</div>\n";
$ret .= " <div class=\"dashboard_widgetheader\">".$widgetheader."</div>\n";
$ret .= " <div data-userheight=\"\" class=\"dashboard_content\">\n";
$ret .= BuildGroup($groupdata[1]);
$ret .= " </div>\n";
@ -396,21 +424,21 @@ sub BuildGroupWidgets($$$$$) {
$ret .= " </div>\n";
$counter++;
}
}
}
return $ret;
}
sub BuildGroupList($) {
my @dashboardgroups = split(",", $_[0]); #array for all groups to build an widget
my %group = ();
my $test;
foreach my $d (sort keys %defs) {
foreach my $grp (split(",", AttrVal($d, "group", ""))) {
$grp = trim($grp);
foreach my $g (@dashboardgroups){
$g = trim($g);
$group{$grp}{$d} = 1 if($g eq $grp);
my ($gtitle, $iconName) = split(":", trim($g));
$group{$grp}{$d} = 1 if($gtitle eq $grp);
}
}
}
@ -469,10 +497,6 @@ sub BuildGroup($)
####if ($helper == 1) {$txtreturn .= "<tr class=\"dashboard_editreadinggroups\"><td><div class=\"devType\"><div class=\"dashboard_button\"><span class=\"dashboard_button_icon dashboard_button_icondetail\"></span>$linkreturn Detail</a></div></div></td></tr>";}
$ret .= "<td>$txtreturn</td>";
} else { $ret .= "<td informId=\"$d\">$txt</td>"; }
#$ret .= "<td informId=\"$d\">$txt</td>";
###########################################################
###### Commands, slider, dropdown
@ -872,23 +896,33 @@ sub Dashboard_attr($$$) {
</li><br>
<a name="dashboard_tab1groups"></a>
<li>dashboard_tab1groups<br>
Comma-separated list of the names of the groups to be displayed in Tab 1.
Comma-separated list of the names of the groups to be displayed in Tab 1.<br>
Each group can be given an icon for this purpose the group name, the following must be completed ":&lt;icon&gt;@&lt;color&gt;"<br>
Example: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab2groups"></a>
<li>dashboard_tab1groups<br>
Comma-separated list of the names of the groups to be displayed in Tab 2.
Comma-separated list of the names of the groups to be displayed in Tab 2.<br>
Each group can be given an icon for this purpose the group name, the following must be completed ":&lt;icon&gt;@&lt;color&gt;"<br>
Example: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab3groups"></a>
<li>dashboard_tab1groups<br>
Comma-separated list of the names of the groups to be displayed in Tab 3.
Comma-separated list of the names of the groups to be displayed in Tab 3.<br>
Each group can be given an icon for this purpose the group name, the following must be completed ":&lt;icon&gt;@&lt;color&gt;"<br>
Example: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab4groups"></a>
<li>dashboard_tab1groups<br>
Comma-separated list of the names of the groups to be displayed in Tab 4.
Comma-separated list of the names of the groups to be displayed in Tab 4.<br>
Each group can be given an icon for this purpose the group name, the following must be completed ":&lt;icon&gt;@&lt;color&gt;"<br>
Example: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab5groups"></a>
<li>dashboard_tab1groups<br>
Comma-separated list of the names of the groups to be displayed in Tab 5.
Comma-separated list of the names of the groups to be displayed in Tab 5.<br>
Each group can be given an icon for this purpose the group name, the following must be completed ":&lt;icon&gt;@&lt;color&gt;"<br>
Example: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab1icon"></a>
<li>dashboard_tab1icon<br>
@ -1112,23 +1146,33 @@ sub Dashboard_attr($$$) {
</li><br>
<a name="dashboard_tab1groups"></a>
<li>dashboard_tab1groups<br>
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 1 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 1 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.<br>
Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":&lt;icon&gt;@&lt;farbe&gt;"ergänzt werden<br>
Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab2groups"></a>
<li>dashboard_tab2groups<br>
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 2 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 2 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.<br>
Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":&lt;icon&gt;@&lt;farbe&gt;"ergänzt werden<br>
Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab3groups"></a>
<li>dashboard_tab3groups<br>
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 3 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 3 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.<br>
Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":&lt;icon&gt;@&lt;farbe&gt;"ergänzt werden<br>
Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab4groups"></a>
<li>dashboard_tab4groups<br>
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 4 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 4 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.<br>
Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":&lt;icon&gt;@&lt;farbe&gt;"ergänzt werden<br>
Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab5groups"></a>
<li>dashboard_tab5groups<br>
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 5 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 5 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.<br>
Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":&lt;icon&gt;@&lt;farbe&gt;"ergänzt werden<br>
Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
</li><br>
<a name="dashboard_tab1icon"></a>
<li>dashboard_tab1icon<br>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 761 B

After

Width:  |  Height:  |  Size: 829 B

View File

@ -12,6 +12,7 @@
// 2.02: Tabs can set on top, bottom or hidden
// 2.03: Fix showhelper Bug on lock/unlock. The error that after a trigger action the curren tab is changed to the "old" activetab tab has
// been fixed.
// 2.04: Dashboard position near Top in showfullsize-mode. Restore ActiveTab funktion
//
// Known Bugs/Todo's
// See 95_Dashboard.pm
@ -93,7 +94,7 @@ function restoreOrder() {
//-------------------------------- Height of an Group. | Min. Height if need ---------------------------
if (height == 0) { height = $(this).outerHeight();}
if ($(this).outerHeight() > height) {$(this).outerHeight(height); } //set heigh only if > group min. height
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
$(this).find(".dashboard_content").data("userheight", height-5);
if (params[2] == 1) { $(this).addClass("dashboard_widgethelper"); } else { $(this).removeClass("dashboard_widgethelper"); }//Show Widget-Helper Frame
@ -105,8 +106,9 @@ function restoreOrder() {
.addClass( "dashboard_button_iconplus" );
}
$(this).find(".dashboard_content").hide();
$(this).height($(this).find(".dashboard_widgetinner").height()+5);
}
$(this).height($(this).find(".dashboard_widgetinner").height()+5);
$(this).find(".dashboard_widgetheader").addClass("dashboard_widgetmin");
} else {$(this).find(".dashboard_widgetheader").addClass("dashboard_widgetmax"); }
}
});
}
@ -189,10 +191,10 @@ function dashboard_setposition(){
document.getElementById("dashboard_button_set").classList.remove('dashboard_button_changed');
//---------------------------------------------------------------------
//--------------------- 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);
// }
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);
}
//---------------------------------------------------------------------
}
@ -233,6 +235,8 @@ $(document).ready( function () {
if (params[13] == 1){ //disable roomlist and header
$("#menuScrollArea").remove();
$("#hdr").remove();
$(".roomoverview:first").remove();
$("br:first").remove();
$("#content").css({position: 'inherit'});
}
@ -255,12 +259,17 @@ $(document).ready( function () {
.prepend('<span class="dashboard_button_icon dashboard_button_iconminus"></span>')
.end();
$(".dashboard_widgetheader .dashboard_button_icon").click(function(event) {
$(".dashboard_widgetheader .dashboard_button_icon").click(function(event) {
if ($(this).hasClass("dashboard_button_iconplus")) {
$(this).removeClass( "dashboard_button_iconplus" );
$(this).addClass( "dashboard_button_iconminus" );
$(this).parents(".dashboard_widget:first").find(".dashboard_content").show();
var newHeigth = $(this).parents(".dashboard_widget:first").find(".dashboard_content").data("userheight");
var newHeigth = $(this).parents(".dashboard_widget:first").find(".dashboard_content").data("userheight");
$(this).parent().removeClass("dashboard_widgetmin");
$(this).parent().addClass("dashboard_widgetmax");
//-------- set heigh only if > group min. height -------------
if ($(this).parents(".dashboard_widgetinner").outerHeight() > newHeigth) {
$(this).parents(".dashboard_widget:first").outerHeight($(this).parents(".dashboard_widgetinner").outerHeight()+10);
@ -274,6 +283,9 @@ $(document).ready( function () {
$(this).parents(".dashboard_widget:first").find(".dashboard_content").hide();
var newHeigth = $(this).parents(".dashboard_widget:first").find(".dashboard_widgetinner").height()+5;
$(this).parents(".dashboard_widget:first").height(newHeigth);
$(this).parent().removeClass("dashboard_widgetmax");
$(this).parent().addClass("dashboard_widgetmin");
}
saveOrder();
event.stopImmediatePropagation();
@ -290,10 +302,10 @@ $(document).ready( function () {
activate: function (event, ui) {
restoreOrder();
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);
}
//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);
// }
}
});
if ($("#dashboard_tabnav").hasClass("dashboard_tabnav_bottom")) { $(".dashboard_tabnav").appendTo(".dashboard_tabs"); } //set Tabs on the Bottom

View File

@ -13,10 +13,13 @@
.dashboard_widget { border-radius: 8px; float: left; padding: 0.2em;}
.dashboard_widgethelper { background-color: #111111; }
.dashboard_widgetheader { background: none repeat scroll 0 0 #333333; border: 1px solid #FFFFFF;
box-shadow: 5px 5px 5px #000000; border-radius: 8px; margin: 0.2em;
box-shadow: 5px 5px 5px #000000; border-radius: 8px 8px 8px 8px; margin: 0.2em;
padding-bottom: 4px; padding-top: 3px; padding-left: 0.7em; }
.dashboard_content { padding: 0.2em; }
.dashboard_content.table { box-shadow: none !important; border-radius: 0 0 8px 8px !important; border: 1px none #FFFFFF!important;
border-left: 1px solid #FFFFFF !important; border-right: 1px solid #FFFFFF !important; border-bottom: 1px solid #FFFFFF !important;}
.dashboard_button_icon { width: 13px; height: 14px; background-repeat: no-repeat;
float: left; background-image: url(../images/default/dashboardicons.png); }
.dashboard_button_iconplus { margin: 0.1em 0.4em; float: right; background-position: -65px 0px; }
@ -25,6 +28,7 @@
.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; }
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; font-size: 0.1px; }
@ -48,7 +52,7 @@
.dashboard_tab_bottom { border: 1px solid #cccccc; border-top-width: 0; border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px; margin: 0 .5em -1px 0; float: left; padding: .5em 1em; }
.dashboard_tab_bottom.ui-tabs-active { background-color: #333333; font-weight: bold; }
.dashboard_tabicon {width: 16px; height: 16px; vertical-align: top; margin-left: -0.5em; }
.dashboard_tabicon {width: 16px; height: 16px; vertical-align: top; margin-left: -0.5em; margin-top: 0.1em; }
.dashboard_tabcontent { width: 100%; padding: 0; margin: 0; }
.dashboard_row { width: 100%; height: inherit; }
@ -58,3 +62,4 @@

View File

@ -21,18 +21,19 @@ a,li { outline: none; }
.dashboard_button_icon { width: 13px; height: 14px; background-repeat: no-repeat;
float: left; background-image: url(../images/default/dashboardicons.png); }
.dashboard_button_iconplus { margin: 0.1em 0.4em; float: right; background-position: -154px 0px; }
.dashboard_button_iconminus { margin: 0.1em 0.4em; float: right; background-position: -140px 0px; }
.dashboard_button_iconset { background-position: -116px 0px; }
.dashboard_button_iconlock { background-position: -103px 0px; }
.dashboard_button_iconunlock { background-position: -91px 0px; }
.dashboard_button_icondetail { background-position: -128px 0px; }
.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; }
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; font-size: 0.1px; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px;
bottom: 1px; background-image: url(../images/default/dashboardicons.png);
background-position: -170px 0px; background-repeat: no-repeat; }
background-position: -78px -16px; background-repeat: no-repeat; }
.ui-sortable-placeholder { border: 1px dotted #d9d9d9; visibility: visible !important;
height: 25px !important; width: 150px; }
@ -50,7 +51,7 @@ a,li { outline: none; }
.dashboard_tab_bottom a { color:#929292; }
.dashboard_tab_bottom.ui-tabs-active { }
.dashboard_tab_bottom.ui-tabs-active a { color:#147bff; }
.dashboard_tabicon {width: 16px; height: 16px; vertical-align: top; margin-left: -0.5em; }
.dashboard_tabicon {width: 16px; height: 16px; vertical-align: top; margin-left: -0.5em; margin-top: 0.1em; }
svg.dashboard_tabicon { fill:#929292; }
.ui-tabs-active svg { fill:#147bff; }
.dashboard_tabcontent { width: 100%; padding: 0; margin: 0; }

View File

@ -19,18 +19,19 @@
.dashboard_button_icon { width: 13px; height: 14px; background-repeat: no-repeat;
float: left; background-image: url(../images/default/dashboardicons.png); }
.dashboard_button_iconplus { margin: 0.1em 0.4em; float: right; background-position: -154px 0px; }
.dashboard_button_iconminus { margin: 0.1em 0.4em; float: right; background-position: -140px 0px; }
.dashboard_button_iconset { background-position: -116px 0px; }
.dashboard_button_iconlock { background-position: -103px 0px; }
.dashboard_button_iconunlock { background-position: -91px 0px; }
.dashboard_button_icondetail { background-position: -128px 0px; }
.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; }
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; font-size: 0.1px; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px;
bottom: 1px; background-image: url(../images/default/dashboardicons.png);
background-position: -170px 0px; background-repeat: no-repeat; }
background-position: -78px -16px; background-repeat: no-repeat; }
.ui-sortable-placeholder { border: 1px dotted #808080; visibility: visible !important;
height: 25px !important; width: 150px; }
@ -48,7 +49,7 @@
.dashboard_tab_bottom { border: 1px solid #cccccc; border-top-width: 0; border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px; margin: 0 .5em -1px 0; float: left; padding: .5em 1em; }
.dashboard_tab_bottom.ui-tabs-active { background-color: #F0F0D8; font-weight: bold; }
.dashboard_tabicon {width: 16px; height: 16px; vertical-align: top; margin-left: -0.5em; }
.dashboard_tabicon {width: 16px; height: 16px; vertical-align: top; margin-left: -0.5em; margin-top: 0.1em;}
.dashboard_tabcontent { width: 100%; padding: 0; margin: 0; }
.dashboard_row { width: 100%; height: inherit; }