2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-12 16:46:35 +00:00

Dashboard files added

git-svn-id: https://svn.fhem.de/fhem/trunk@4423 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2013-12-20 14:42:19 +00:00
parent 6c2fabf8e6
commit 4dd20c78e5
18 changed files with 408 additions and 1 deletions

View File

@ -1575,6 +1575,7 @@ FW_iconTable($$$$)
next if(!$FW_icons{$style}{$imgName}); # Dont cut it twice: FS20.on.png
next if($FW_icons{$style}{$imgName} !~ m/$imgName/); # Skip alias
next if($imgName=~m+^(weather/|shutter.*big|fhemicon|favicon|ws_.*_kl)+);
next if($imgName=~m+^(dashboardicons)+);
$icoList{$imgName} = 1;
}
}

View File

@ -207,6 +207,7 @@ contrib/YAF/* danielweisensee http://forum.fhem.de Frontends
www/gplot/* rudolfkoenig http://forum.fhem.de Frontends
www/images/* ulimaass http://forum.fhem.de Frontends
www/pgm2/dashboard* svenson08 http://forum.fhem.de Frontends
www/pgm2/* rudolfkoenig http://forum.fhem.de Frontends
www/jscolor/* justme1968 http://forum.fhem.de Frontends
www/frontend/* johannnes http://forum.fhem.de Frontends

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

View File

@ -1,3 +1,5 @@
@import url("dashboard_darkstyle.css");
/* Author: Bernd auf Basis der Vorlage von Till*/
body { background-color: #444444; background-image:url(../images/default/fhemicon_darksmall.png); background-repeat:no-repeat; color: #CCCCCC; font-family:Arial, Helvetica, sans-serif; font-size:13px;}
#logo { position:absolute; top:10px; left:20px; width:78px; visibility:hidden; }

View File

@ -1,3 +1,5 @@
@import url("dashboard_darkstyle.css");
/* Author: Till */
body { background-color: #444444; background-image:url(../images/default/fhemicon_dark.png); background-repeat:no-repeat; color: #CCCCCC; font-family:Arial, Helvetica, sans-serif; font-size:13px;}
#logo { position:absolute; top:10px; left:20px; width:140px; visibility:hidden; }

View File

@ -1 +1,3 @@
@import url("dashboard_darkstyle.css");
@import url("darkstyle.css");

269
fhem/www/pgm2/dashboard.js Normal file
View File

@ -0,0 +1,269 @@
//########################################################################################
// dashboard.js
//########################################################################################
// Released : 14.11.2013 @svenson08
// Version : 1.00
// Revisions:
// 0001: Released to testers
// 0002: Add DebugMsg. Fix independent Groupsize adjustment after set & siterefresh.
// First Release to FHEM SVN
//
//
// Known Bugs/Todo's
// See 95_Dashboard.pm
//########################################################################################
function saveOrder() {
var SaveResult = "";
//------------- Build new Position string ---------------
$(".dashboard_column").each(function(index, value){
var colid = value.id;
var order = $('#' + colid).sortable("toArray");
for ( var i = 0, n = order.length; i < n; i++ ) {
var v = $('#' + order[i]).find('.dashboard_content').is(':visible');
var w = $('#' + order[i]).outerWidth();
if ( $('#' + order[i]).find(".dashboard_content").data("userheight") == null ) {
var h = $('#' + order[i]).outerHeight();
} else {
var h = $('#' + order[i]).find(".dashboard_content").data("userheight");
if (h.length == 0) { var h = $('#' + order[i]).outerHeight(); }
}
order[i] = order[i]+","+v+","+h+","+w;
}
SaveResult = SaveResult + index+','+order+':';
//Result: <ColumNumber>,<portlet-1>,<status>,<height>,<width>,<portlet-n>,<status>,<height>,<width>:<columNumber.....
});
//-------------------------------------------------------
//------------ Set the new href String ------------------
document.getElementById("dashboard_currentsorting").value = SaveResult;
if (document.getElementById("dashboard_button_set")) {
document.getElementById("dashboard_button_set").classList.add('dashboard_button_changed'); //Mark that the Changes are not saved
}
//-------------------------------------------------------
}
function restoreOrder() {
$(".dashboard_column").each(function(index, value) {
var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration
var coldata = (document.getElementById("dashboard_currentsorting").value).split(":"); //get the position string from the hiddenfield
var rowwidth = params[7] * params[1];
//------------------------------------------------------------
$(".dashboard_column").width(params[1]); //Set Columwidth
$(".ui-row").width(rowwidth); //Set Rowwidth
if (value.id == "sortablecolumn100") { //Set RowHeight
$('#' + value.id).height(params[8]);
$('#' + value.id).width(rowwidth);
var widgetmaxwidth = rowwidth;
} else {
if (value.id == "sortablecolumn200") {
$('#' + value.id).height(params[9]);
$('#' + value.id).width(rowwidth);
var widgetmaxwidth = rowwidth;
} else {
$('#' + value.id).height(params[5]);
var widgetmaxwidth = params[1];
}
}
if (params[2] == 1) { $(".dashboard_column").addClass("dashboard_columnhelper"); } else { $(".dashboard_column").removeClass("dashboard_columnhelper"); }//set helperclass
for (var i = 0, n = coldata.length; i < n; i++ ) { //for each column (Value = 1,name1,state1,name2,state2)
var portletsdata = coldata[i].split(","); //protlet array / all portlets in this (=index) column
//alert("Load Event (1) \nColumn="+index+"\nSaveResult="+coldata+"\nColumndata=("+i+"/"+coldata.length+") "+portletsdata);
for (var j = 1, m = portletsdata.length; j < m; j += 4 ) {
//alert("Load Event (2) \nColumn="+index+"\nSaveResult="+coldata+"\nColumndata=("+i+"/"+coldata.length+"|"+j+"/"+portletsdata.length+") "+portletsdata+
//"\n\nPortletdata (ID)="+portletsdata[j]+"\nPortletdata (Visible)="+portletsdata[j+1]+"\nPortletheight (Height)="+portletsdata[j+2]+"\nPortletwidth (Width)="+portletsdata[j+3]);
if (portletsdata[0] == index && portletsdata[0] != '' && portletsdata[j] != '' && portletsdata[j+1] != '') {
var portletID = portletsdata[j];
var visible = portletsdata[j+1];
var height = portletsdata[j+2]-5; //( limited -5 by CSS)
var width = portletsdata[j+3]-5; //( limited -5 by CSS)
if (width > widgetmaxwidth) {width = widgetmaxwidth}; //Fix with ist widget width > current column width.
var portlet = $(".dashboard_column").find('#' + portletID);
portlet.appendTo($('#' + value.id));
portlet.outerHeight(height);
portlet.outerWidth(width);
if (params[2] == 1) { portlet.addClass("dashboard_widgethelper"); } else { portlet.removeClass("dashboard_widgethelper"); }//Show Widget-Helper Frame
if (visible === 'false') {
// Icon plus is not set on restore order, why?
if (portlet.find(".dashboard_widgetheader").find(".dashboard_button_icon").hasClass("dashboard_button_iconminus")) {
portlet.find(".dashboard_widgetheader").find(".dashboard_button_icon").removeClass( "dashboard_button_iconminus" );
portlet.find(".dashboard_widgetheader").find(".dashboard_button_icon").addClass( "dashboard_button_iconplus" );
}
var currHeigth = Math.round(portlet.height());
portlet.find(".dashboard_content").data("userheight", currHeigth);
portlet.find(".dashboard_content").hide();
var newHeigth = portlet.find(".dashboard_widgetinner").height()+5;
portlet.height(newHeigth);
}
}
}
}
});
}
//Only use vor debugging
function showdebugMessage(msg){
document.getElementById("dashboard_jsdebug").value = document.getElementById("dashboard_jsdebug").value+" "+msg;
}
function dashboard_tooglelock(){
var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration
if (params[3] == "lock"){ //current state lock, do unlock
params[3] = "unlock";
$("#dashboard_button_lock").button( "option", "label", "Lock" );
dashboard_unsetlock();
} else { //current state unlock, set lock
params[3] = "lock";
$("#dashboard_button_lock").button( "option", "label", "Unlock" );
dashboard_setlock();
}
document.getElementById("dashboard_attr").value = params;
FW_cmd(document.location.pathname+'?XHR=1&cmd.'+params[0]+'=attr '+params[0]+' dashboard_lockstate '+params[3]);
}
function dashboard_setlock(){
$("#dashboard_button_lock").prepend('<span class="dashboard_button_icon dashboard_button_iconlock"></span>');
//############################################################
$( ".dashboard_column" ).sortable( "option", "disabled", true );
$( ".dashboard_widget" ).removeClass("dashboard_widgethelper");
if ($( ".dashboard_widget" ).hasClass("ui-resizable")) { $( ".dashboard_widget" ).resizable("destroy"); };
$( ".dashboard_column" ).removeClass("dashboard_columnhelper");
//############################################################
}
function dashboard_unsetlock(){
var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration
$("#dashboard_button_lock").prepend('<span class="dashboard_button_icon dashboard_button_iconunlock"></span>');
//############################################################
$( ".dashboard_column" ).sortable( "option", "disabled", false );
if (params[2] == 1) { $( ".dashboard_widget" ).addClass("dashboard_widgethelper"); } else { $( ".dashboard_widget" ).removeClass("dashboard_widgethelper"); }//Show Widget-Helper Frame
if (params[2] == 1) { $( ".dashboard_column" ).addClass("dashboard_columnhelper"); } else { $( ".dashboard_column" ).removeClass("dashboard_columnhelper"); }//Show Widget-Helper Frame
dashboard_modifyWidget();
//############################################################
}
function dashboard_setposition(){
var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration
var sorting = document.getElementById("dashboard_currentsorting").value;
FW_cmd(document.location.pathname+'?XHR=1&cmd.'+params[0]+'=attr '+params[0]+' dashboard_sorting '+sorting);
document.getElementById("dashboard_button_set").classList.remove('dashboard_button_changed');
}
function dashboard_modifyWidget(){
$( ".dashboard_widget" ).resizable({
'grid': 1,
'minWidth': 150,
start: function(e, ui) {
var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration
//-------- Widgetbegrenzung festlegen -------------------
var rowid = $(this).parent().attr("id");
if (rowid == "sortablecolumn100") {
var widgetmaxwidth = (params[7] * params[1]) - 5;
var widgetmaxheight = params[8] - 5;
}
else { if (rowid == "sortablecolumn200") {
var widgetmaxwidth = (params[7] * params[1]) - 5;
var widgetmaxheight = params[9] -5 ;
}
else {
var widgetmaxwidth = params[1] - 5;
var widgetmaxheight = params[5] -5;
}
}
//-------------------------------------------------------
maxWidthOffset = widgetmaxwidth;
$(this).resizable("option","maxWidth",widgetmaxwidth);
$(this).resizable("option","maxHeight",widgetmaxheight);
},
resize: function(e, ui) {
minHeightOffset = $(this).find(".dashboard_widgetinner").height()+5;
ui.size.width = Math.round(ui.size.width);
if (ui.size.width > (maxWidthOffset)) { $(this).resizable("option","maxWidth",maxWidthOffset); }
if (ui.size.height < (minHeightOffset)) { $(this).resizable("option","minHeight",minHeightOffset); }
},
stop: function() {
minHeightOffset = $(this).find(".dashboard_widgetinner").height()+5;
$(this).resizable("option","minHeight",minHeightOffset);
saveOrder();
}
});
}
$(document).ready( function () {
var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration
$(".dashboard_column").sortable({
connectWith: ['.dashboard_column', '.ui-row'],
stop: function() { saveOrder(); }
});
if (params[4] == 0){ //set if buttonbar not show
dashboard_modifyWidget();
dashboard_setlock();
}
restoreOrder();
if (params[6] == 1){ //ToogleButton show/hide
$(".dashboard_widget")
.addClass( "dashboard_widget dashboard_content ui-corner-all" )
.find(".dashboard_widgetheader")
.addClass( "dashboard_widgetheader ui-corner-all" )
.prepend('<span class="dashboard_button_icon dashboard_button_iconminus"></span>')
.end();
$(".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");
} else {
$(this).removeClass( "dashboard_button_iconminus" );
$(this).addClass( "dashboard_button_iconplus" );
var currHeigth = Math.round($(this).parents(".dashboard_widget:first").height());
$(this).parents(".dashboard_widget:first").find(".dashboard_content").data("userheight", currHeigth);
$(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);
saveOrder();
event.stopImmediatePropagation();
});
}
$("#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_button_lock").button({
create: function( event, ui ) {
dashboard_modifyWidget();
if (params[3] == "lock") {
$(this).button( "option", "label", "Unlock" );
dashboard_setlock();
} else {
$(this).button( "option", "label", "Lock" );
dashboard_unsetlock();
}
}
});
});

View File

@ -0,0 +1,33 @@
/* Author: svenson08*/
.dashboard_buttonbar { background: none repeat scroll 0 0 #333333; border: 1px solid #FFFFFF;
box-shadow: 5px 5px 5px #000000; padding: 4px; border-radius: 8px 8px 8px 8px; float: left;}
.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; }
.dashboard_widget { border-radius: 8px; float: left; }
.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;
padding-bottom: 4px; padding-top: 3px; padding-left: 0.7em; }
.dashboard_content { padding: 0.2em; }
.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; }
.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; }
.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: -78px 0px; background-repeat: no-repeat; }
.ui-sortable-placeholder { border: 1px dotted #FFFFFF; visibility: visible !important;
height: 25px !important; width: 150px; }

View File

@ -0,0 +1,35 @@
/* Author: svenson08*/
.dashboard_buttonbar { background: none repeat scroll 0 0 #cbcbcb; border: 1px solid #d9d9d9;
padding: 4px; float: left;}
.dashboard_button { float: left; background-color: #fff; 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; }
.dashboard_widget { float: left; }
.dashboard_widgethelper { background-color: #cbcbcb; }
.dashboard_widgetheader { background: none repeat scroll 0 0 #fff; border: 1px solid #d9d9d9;
margin: 0.2em;
padding-bottom: 2px; padding-top: 3px; padding-left: 0.2em; }
.dashboard_content { padding: 0.2em; }
.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; }
.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; }
.ui-sortable-placeholder { border: 1px dotted #d9d9d9; visibility: visible !important;
height: 25px !important; width: 150px; }

View File

@ -0,0 +1,33 @@
/* Author: svenson08*/
.dashboard_buttonbar { background: none repeat scroll 0 0 #F0F0D8; border: 1px solid #808080;
padding: 4px; border-radius: 8px 8px 8px 8px; float: left;}
.dashboard_button { border-radius: 8px; float: left; background-color: #FFFFE7; 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; }
.dashboard_widget { border-radius: 8px; float: left; }
.dashboard_widgethelper { background-color: #A0FFFF; }
.dashboard_widgetheader { background: none repeat scroll 0 0 #F0F0D8; border: 1px solid #808080;
border-radius: 8px; margin: 0.2em;
padding-bottom: 2px; padding-top: 3px; padding-left: 0.2em; }
.dashboard_content { padding: 0.2em; }
.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; }
.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; }
.ui-sortable-placeholder { border: 1px dotted #808080; visibility: visible !important;
height: 25px !important; width: 150px; }

View File

@ -1,3 +1,5 @@
@import url("dashboard_ios7.css");
/*
Edit: fhainz
*/

View File

@ -1,3 +1,5 @@
@import url("dashboard_ios7.css");
/*
Edit: fhainz
*/

View File

@ -1,4 +1,5 @@
@import url("dashboard_ios7.css");
@import url("ios7style.css");
body { width: 1024px; }
table.block, table.FileList { width:760px; }
table.block, table.FileList { width:760px; }

12
fhem/www/pgm2/jquery-ui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
fhem/www/pgm2/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,5 @@
@import url("dashboard_style.css");
body { background-color: #FFFFE7;
font-family:Arial, sans-serif; }
textarea { font-family:Arial, sans-serif; font-size:16px;}

View File

@ -1,3 +1,5 @@
@import url("dashboard_style.css");
body { background-color: #FFFFE7;
font-family:Arial, sans-serif; font-size:16px;}
input { font-family:Arial, sans-serif; font-size:16px; }

View File

@ -1,3 +1,5 @@
@import url("dashboard_style.css");
body { background-color: #FFFFE7;
font-family:Arial, sans-serif; font-size:18px; }
textarea { font-family:Arial, sans-serif; font-size:18px}