mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-13 17:26:34 +00:00
YAF: added generic widget + minor fixes and enhancements
* generic widget allows all types of devices in a basic fashion * several typos/formatting issues/dummy functions * pressing "space" toggles menu * save button in menu returns to fhem, executing "save" command git-svn-id: https://svn.fhem.de/fhem/trunk@3560 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
9727e39167
commit
d743e8b76b
@ -71,6 +71,8 @@ sub fht80_get_widgetcss() {
|
|||||||
sub fht80_get_widgetjs() {
|
sub fht80_get_widgetjs() {
|
||||||
|
|
||||||
my $output = '
|
my $output = '
|
||||||
|
function fht80_on_click(view_id, widget_id) {
|
||||||
|
}
|
||||||
function fht80_update_widget(view_id, widget_id) {
|
function fht80_update_widget(view_id, widget_id) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -70,8 +70,10 @@ sub fhttk_get_widgetcss() {
|
|||||||
|
|
||||||
sub fhttk_get_widgetjs() {
|
sub fhttk_get_widgetjs() {
|
||||||
my $output = '
|
my $output = '
|
||||||
function endsWith(str, suffix) {
|
function fhttk_endsWith(str, suffix) {
|
||||||
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
||||||
|
}
|
||||||
|
function fhttk_on_click(view_id, widget_id) {
|
||||||
}
|
}
|
||||||
function fhttk_update_widget(view_id, widget_id) {
|
function fhttk_update_widget(view_id, widget_id) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@ -83,7 +85,7 @@ sub fhttk_get_widgetjs() {
|
|||||||
success: function(get_state) {
|
success: function(get_state) {
|
||||||
var widget = $("#widget_"+view_id+"_"+widget_id);
|
var widget = $("#widget_"+view_id+"_"+widget_id);
|
||||||
$("#widget_"+view_id+"_"+widget_id).attr("title",get_state);
|
$("#widget_"+view_id+"_"+widget_id).attr("title",get_state);
|
||||||
if (endsWith(get_state,"Open")) {
|
if (fhttk_endsWith(get_state,"Open")) {
|
||||||
if (widget.hasClass("widget_fhttk_closed")) {
|
if (widget.hasClass("widget_fhttk_closed")) {
|
||||||
widget.removeClass("widget_fhttk_closed");
|
widget.removeClass("widget_fhttk_closed");
|
||||||
}
|
}
|
||||||
@ -92,7 +94,7 @@ sub fhttk_get_widgetjs() {
|
|||||||
}
|
}
|
||||||
widget.html("<span />");
|
widget.html("<span />");
|
||||||
}
|
}
|
||||||
else if (endsWith(get_state,"Closed")) {
|
else if (fhttk_endsWith(get_state,"Closed")) {
|
||||||
if (!widget.hasClass("widget_fhttk_closed")) {
|
if (!widget.hasClass("widget_fhttk_closed")) {
|
||||||
widget.addClass("widget_fhttk_closed");
|
widget.addClass("widget_fhttk_closed");
|
||||||
}
|
}
|
||||||
|
296
fhem/contrib/YAF/FHEM/YAF/widgets/generic/generic.pm
Normal file
296
fhem/contrib/YAF/FHEM/YAF/widgets/generic/generic.pm
Normal file
@ -0,0 +1,296 @@
|
|||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# generic.pm
|
||||||
|
#
|
||||||
|
# YAF - Yet Another Floorplan
|
||||||
|
# FHEM Projektgruppe Hochschule Karlsruhe, 2013
|
||||||
|
# Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning
|
||||||
|
#
|
||||||
|
# generic Widget: Marc Pro
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
package main;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
my $yaf_version = 0.41;
|
||||||
|
|
||||||
|
use vars qw(%_GET);
|
||||||
|
use vars qw(%defs);
|
||||||
|
|
||||||
|
#######################################################################################
|
||||||
|
#
|
||||||
|
# generic_get_widgetcss - Create the CSS code for this widget
|
||||||
|
#
|
||||||
|
# no parameter
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
sub generic_get_widgetcss() {
|
||||||
|
my $output = "
|
||||||
|
.widget_generic {
|
||||||
|
width: 200px;
|
||||||
|
height: 50px;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-position:center center;
|
||||||
|
opacity:1 !important;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
";
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# generic_get_widgetjs - Create the javascript code for this widget
|
||||||
|
#
|
||||||
|
# no parameter
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
|
||||||
|
sub generic_get_widgetjs() {
|
||||||
|
|
||||||
|
my $output = '
|
||||||
|
function generic_endsWith(str, suffix) {
|
||||||
|
if(!str) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
||||||
|
}
|
||||||
|
function generic_on_click(view_id, widget_id) {
|
||||||
|
}
|
||||||
|
function generic_update_widget(view_id, widget_id) {
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
async: true,
|
||||||
|
url: "../../ajax/widget/generic/get_state",
|
||||||
|
data: "view_id="+view_id+"&widget_id="+widget_id,
|
||||||
|
context: document.body,
|
||||||
|
success: function(get_state) {
|
||||||
|
var data = jQuery.parseJSON(get_state);
|
||||||
|
var label = data[0];
|
||||||
|
var icon = data[1];
|
||||||
|
var statesave = $("#widget_generic_state_"+view_id+"_"+widget_id);
|
||||||
|
var state = data[2];
|
||||||
|
var statespan = data[3];
|
||||||
|
var fhemname = data[4];
|
||||||
|
var widget = $("#widget_"+view_id+"_"+widget_id);
|
||||||
|
|
||||||
|
if (!statesave.hasClass("widget_generic_"+state)) {
|
||||||
|
if(generic_endsWith(icon,"png")) {
|
||||||
|
var iconstring = label+"<br /><img src="+icon+" title="+label+" "+fhemname+" "+ state +" />"+statespan;
|
||||||
|
widget.html(iconstring);
|
||||||
|
} else {
|
||||||
|
var textstring = "<span title="+fhemname+" >"+label+"</span><br />" + state;
|
||||||
|
widget.html(textstring+" "+statespan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}';
|
||||||
|
|
||||||
|
# $output .='
|
||||||
|
# function generic_get_reading_keys() {
|
||||||
|
# $.ajax({
|
||||||
|
# type: "GET",
|
||||||
|
# async: true,
|
||||||
|
# url: "../../ajax/widget/generic/get_reading_keys",
|
||||||
|
# data: "fhemname="+$("#combobox").val(),
|
||||||
|
# context: document.body,
|
||||||
|
# success: function(dataarr) {
|
||||||
|
# var data = jQuery.parseJSON(dataarr);
|
||||||
|
# //alert(data[0]);
|
||||||
|
# var mySelect = $("#generic_combobox_readings");
|
||||||
|
# mySelect
|
||||||
|
# .find("option")
|
||||||
|
# .remove()
|
||||||
|
# .end()
|
||||||
|
# ;
|
||||||
|
# ;
|
||||||
|
# $.each(data, function(val,text) {
|
||||||
|
# mySelect.append(
|
||||||
|
# $("<option></option>").val(text).html(text)
|
||||||
|
# );
|
||||||
|
# });
|
||||||
|
# }
|
||||||
|
# });
|
||||||
|
# }
|
||||||
|
# ';
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# generic_getwidgethtml - HTML code for this widget
|
||||||
|
#
|
||||||
|
# no parameter
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
|
||||||
|
sub generic_get_widgethtml() {
|
||||||
|
my $output = " ";
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# generic_get_addwidget_setup_html - Create the selection of devices for this widget
|
||||||
|
#
|
||||||
|
# no parameter
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
|
||||||
|
sub generic_get_addwidget_setup_html() {
|
||||||
|
my $output = "";
|
||||||
|
$output = "<script src='js/combobox.js'></script>";
|
||||||
|
$output .="<select name='generic_combobox' id='combobox' onClick=generic_get_reading_keys()>";
|
||||||
|
my @list = (keys %defs);
|
||||||
|
|
||||||
|
foreach my $d (sort @list) {
|
||||||
|
my $type = $defs{$d}{TYPE};
|
||||||
|
my $name = $defs{$d}{NAME};
|
||||||
|
if(defined $name) {
|
||||||
|
$output .= "<option value='$name'>$name</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$output .= "</select>";
|
||||||
|
# $output .= "<br />Use Reading as state: <select name='generic_combobox_readings' id ='generic_combobox_readings' />";
|
||||||
|
# $output .= "<span onClick=generic_get_reading_keys('FHT_1b1b')>TEST</span>";
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
# sub generic_get_reading_keys() {
|
||||||
|
# my $fhemname = $_GET{"fhemname"};
|
||||||
|
|
||||||
|
# my @ret = ();
|
||||||
|
# Log 3, "Loading Shit";
|
||||||
|
# foreach my $r (keys %{$defs{$fhemname}{READINGS}}) {
|
||||||
|
# Log 3,$r;
|
||||||
|
# push(@ret,$r);
|
||||||
|
# }
|
||||||
|
|
||||||
|
# return encode_json(\@ret);
|
||||||
|
# }
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# generic_get_addwidget_prepare_attributes -
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# no parameter
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
|
||||||
|
sub generic_get_addwidget_prepare_attributes() {
|
||||||
|
my $output = '
|
||||||
|
var temp_array = new Array();
|
||||||
|
temp_array[0] = "fhemname";
|
||||||
|
temp_array[1] = $("#combobox option:selected").val()
|
||||||
|
attributes_array[0] = temp_array;
|
||||||
|
';
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# generic_getwidget_html - HTML code for this widget. DO WE NEED THIS ? SEE ABOVE
|
||||||
|
# DO WE NEED IT? WHO KNOWS. (It looks like this one fills the initial html of the
|
||||||
|
# widget, so let's keep it for science.)
|
||||||
|
#
|
||||||
|
# no parameter
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
|
||||||
|
sub generic_getwidget_html() {
|
||||||
|
my $output = " ";
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
#
|
||||||
|
# generic_get_lamp_status - return the state of the lamp
|
||||||
|
#
|
||||||
|
# no parameter
|
||||||
|
#
|
||||||
|
########################################################################################
|
||||||
|
|
||||||
|
sub generic_get_state() {
|
||||||
|
my $fhemname = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "fhemname");
|
||||||
|
my $labeltype = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "labeltype","");
|
||||||
|
my $statetype = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "statetype","");
|
||||||
|
my $showlabel = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "showlabel","1");
|
||||||
|
my $showicon = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "showicon","1");
|
||||||
|
|
||||||
|
my $d = $defs{$fhemname};
|
||||||
|
my $state = $d->{STATE};
|
||||||
|
my $iconpath = "/fhem/images/default/";
|
||||||
|
my @ret = ();
|
||||||
|
|
||||||
|
if(!defined $state) {
|
||||||
|
$state = "no-state-defined";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(defined $d) {
|
||||||
|
my $devStateIcon = AttrVal($fhemname,"devStateIcon",undef);
|
||||||
|
if(defined $devStateIcon) {
|
||||||
|
foreach my $entry (split (/ /,$devStateIcon)) {
|
||||||
|
my @keyval = split(/:/,$entry);
|
||||||
|
if($keyval[0] =~ $state) {
|
||||||
|
$iconpath .= $keyval[1] . ".png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$ret[1] = $iconpath;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($labeltype ne "") {
|
||||||
|
$ret[0] = AttrVal($fhemname,$labeltype,$fhemname);
|
||||||
|
} else {
|
||||||
|
$ret[0] = $fhemname;
|
||||||
|
}
|
||||||
|
$ret[0] =~ s/( )/ /g;
|
||||||
|
|
||||||
|
if($statetype ne "") {
|
||||||
|
$ret[2] = generic_isdef($defs{$fhemname}{READINGS}{$statetype}{VAL}, "no-reading");
|
||||||
|
} else {
|
||||||
|
$ret[2] = $state;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ret[3] = "<span id=widget_generic_state_".$_GET{"view_id"}."_".$_GET{"widget_id"}." class=widget_generic_".$ret[2]." />";
|
||||||
|
|
||||||
|
if($showlabel==0) {
|
||||||
|
$ret[0] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($showicon==0) {
|
||||||
|
$ret[1] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
$ret[4] = $fhemname;
|
||||||
|
|
||||||
|
return encode_json(\@ret);
|
||||||
|
} else {
|
||||||
|
return "Widget not found. Maybe reload this page?";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub generic_isdef() {
|
||||||
|
return ((defined $_[0]) ? $_[0] : $_[1]);
|
||||||
|
}
|
||||||
|
1;
|
||||||
|
|
@ -73,14 +73,14 @@ function init_RefreshWidgets() {
|
|||||||
// Läd die Sichten über AJAX vom Server.
|
// Läd die Sichten über AJAX vom Server.
|
||||||
// callback: wird aufgerufen, wenn der Server geantwortet hat
|
// callback: wird aufgerufen, wenn der Server geantwortet hat
|
||||||
function load_views(callback) {
|
function load_views(callback) {
|
||||||
console.log("called load_views()");
|
//console.log("called load_views()");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
async: true,
|
async: true,
|
||||||
url: "../../ajax/global/getViews",
|
url: "../../ajax/global/getViews",
|
||||||
context: document.body,
|
context: document.body,
|
||||||
success: function (jsondata) {
|
success: function (jsondata) {
|
||||||
views = jQuery.parseJSON(jsondata);
|
views = jQuery.parseJSON(jsondata);
|
||||||
console.log(views);
|
//console.log(views);
|
||||||
if (callback) {
|
if (callback) {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
@ -93,7 +93,7 @@ function load_views(callback) {
|
|||||||
// id: Id der Sicht
|
// id: Id der Sicht
|
||||||
// name: Name der Sicht
|
// name: Name der Sicht
|
||||||
function add_tab(id, name) {
|
function add_tab(id, name) {
|
||||||
console.log("called add_tab()");
|
//console.log("called add_tab()");
|
||||||
// Neues Div nur erzeugen, wenn es noch keins mit der entsprechenden Id gibt
|
// Neues Div nur erzeugen, wenn es noch keins mit der entsprechenden Id gibt
|
||||||
if ($("#tabs-" + id).length <= 0) {
|
if ($("#tabs-" + id).length <= 0) {
|
||||||
$("#tabs").append("<div id=\"tabs-" + id + "\" class=\"loaded tab\"></div>");
|
$("#tabs").append("<div id=\"tabs-" + id + "\" class=\"loaded tab\"></div>");
|
||||||
@ -108,7 +108,7 @@ function add_tab(id, name) {
|
|||||||
// id: Id der zu löschenden Sicht
|
// id: Id der zu löschenden Sicht
|
||||||
function delete_tab(id) {
|
function delete_tab(id) {
|
||||||
// Kann noch optimiert werden!
|
// Kann noch optimiert werden!
|
||||||
console.log("called delete_tab()");
|
//console.log("called delete_tab()");
|
||||||
$("#tabs-" + id).remove();
|
$("#tabs-" + id).remove();
|
||||||
$("#tabs_li-" + id).remove();
|
$("#tabs_li-" + id).remove();
|
||||||
load_views(show_views);
|
load_views(show_views);
|
||||||
@ -118,7 +118,7 @@ function delete_tab(id) {
|
|||||||
// Zeigt alle Tabs neu an.
|
// Zeigt alle Tabs neu an.
|
||||||
// Zuerst werden alle Tabs gelöscht und anschließend neu anzeigen.
|
// Zuerst werden alle Tabs gelöscht und anschließend neu anzeigen.
|
||||||
function show_views() {
|
function show_views() {
|
||||||
console.log("called show_views()");
|
//console.log("called show_views()");
|
||||||
$("#views").html("");
|
$("#views").html("");
|
||||||
|
|
||||||
if (views.length == 0) {
|
if (views.length == 0) {
|
||||||
@ -159,7 +159,7 @@ function add_background_image(view_id, file, x_pos, y_pos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function update_widget(name, view_id, widget_id) {
|
function update_widget(name, view_id, widget_id) {
|
||||||
console.log("update_widget " + name);
|
//console.log("update_widget " + name);
|
||||||
try {
|
try {
|
||||||
eval(name + "_update_widget(" + view_id + ", " + widget_id + ")");
|
eval(name + "_update_widget(" + view_id + ", " + widget_id + ")");
|
||||||
}
|
}
|
||||||
@ -236,7 +236,7 @@ function add_widget(view_id, widget_id, name, x_pos, y_pos, attr_array) {
|
|||||||
y_pos = parseInt(ui.position.top);
|
y_pos = parseInt(ui.position.top);
|
||||||
widget_id = $(event.target).attr("id").split("_")[2];
|
widget_id = $(event.target).attr("id").split("_")[2];
|
||||||
view_id = $(event.target).attr("id").split("_")[1];
|
view_id = $(event.target).attr("id").split("_")[1];
|
||||||
console.log("view-id: " + get_current_view_id() + " widget-id: " + widget_id + " x-pos: " + x_pos + " y-pos: " + y_pos);
|
//console.log("view-id: " + get_current_view_id() + " widget-id: " + widget_id + " x-pos: " + x_pos + " y-pos: " + y_pos);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
async: true,
|
async: true,
|
||||||
@ -244,7 +244,7 @@ function add_widget(view_id, widget_id, name, x_pos, y_pos, attr_array) {
|
|||||||
data: "view_id=" + view_id + "&widget_id=" + widget_id + "&x_pos=" + x_pos + "&y_pos=" + y_pos,
|
data: "view_id=" + view_id + "&widget_id=" + widget_id + "&x_pos=" + x_pos + "&y_pos=" + y_pos,
|
||||||
context: document.body,
|
context: document.body,
|
||||||
success: function (jsondata) {
|
success: function (jsondata) {
|
||||||
console.log("Widget Position geändert: " + jsondata)
|
//console.log("Widget Position geändert: " + jsondata)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -261,8 +261,8 @@ function add_widget(view_id, widget_id, name, x_pos, y_pos, attr_array) {
|
|||||||
function activate_tab(view_id) {
|
function activate_tab(view_id) {
|
||||||
if (! $("#tabs-" + view_id).hasClass("isLoaded")) {
|
if (! $("#tabs-" + view_id).hasClass("isLoaded")) {
|
||||||
current_view_id = view_id;
|
current_view_id = view_id;
|
||||||
console.log("activate tab: " + view_id);
|
//console.log("activate tab: " + view_id);
|
||||||
console.log("load widgets");
|
//console.log("load widgets");
|
||||||
$("#tabs-" + view_id).html("");
|
$("#tabs-" + view_id).html("");
|
||||||
// Speichern, dass view bereits geladen wurde
|
// Speichern, dass view bereits geladen wurde
|
||||||
$("#tabs-" + view_id).addClass("isLoaded");
|
$("#tabs-" + view_id).addClass("isLoaded");
|
||||||
@ -294,13 +294,13 @@ function activate_tab(view_id) {
|
|||||||
// Aktueller View Mode für alle Widgets aktualisiert
|
// Aktueller View Mode für alle Widgets aktualisiert
|
||||||
switch_mode(view_mode);
|
switch_mode(view_mode);
|
||||||
} else {
|
} else {
|
||||||
console.log("keine widgets vorhanden!");
|
console.log("keine Widgets vorhanden!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
current_view_id = view_id;
|
current_view_id = view_id;
|
||||||
console.log("switch to activated tab: " + view_id);
|
//console.log("switch to activated tab: " + view_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -374,6 +374,12 @@ function init_menue() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$("#button_editview").buttonset();
|
$("#button_editview").buttonset();
|
||||||
|
|
||||||
|
$("#button_saveconfig").button({
|
||||||
|
icons: {
|
||||||
|
secondary: "ui-icon-pencil"
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialisiert die Handler
|
// Initialisiert die Handler
|
||||||
@ -415,6 +421,11 @@ function init_handlers() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#button_saveconfig").click(function () {
|
||||||
|
window.location.href = "../../../../fhem?cmd=save";
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
$("#widget_menue_delete").click(function () {
|
$("#widget_menue_delete").click(function () {
|
||||||
$("#label_deletewidget").html(get_current_widget_id());
|
$("#label_deletewidget").html(get_current_widget_id());
|
||||||
$("#dialog_deletewidget").dialog("open");
|
$("#dialog_deletewidget").dialog("open");
|
||||||
|
@ -34,7 +34,7 @@ function init_dialogs() {
|
|||||||
modal: true,
|
modal: true,
|
||||||
buttons: {
|
buttons: {
|
||||||
"Hinzufügen": function (event) {
|
"Hinzufügen": function (event) {
|
||||||
console.log("before: " + views);
|
//console.log("before: " + views);
|
||||||
$("#dialog_addview_loading").show();
|
$("#dialog_addview_loading").show();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
@ -46,7 +46,7 @@ function init_dialogs() {
|
|||||||
$("#dialog_addview").dialog("close");
|
$("#dialog_addview").dialog("close");
|
||||||
load_views(show_views);
|
load_views(show_views);
|
||||||
$("#dialog_addview_loading").hide();
|
$("#dialog_addview_loading").hide();
|
||||||
console.log("after: " + views);
|
//console.log("after: " + views);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$(this).dialog("close");
|
$(this).dialog("close");
|
||||||
@ -93,7 +93,7 @@ function init_dialogs() {
|
|||||||
modal: true,
|
modal: true,
|
||||||
buttons: {
|
buttons: {
|
||||||
"Speichern": function (ui) {
|
"Speichern": function (ui) {
|
||||||
console.log("before: " + views);
|
//console.log("before: " + views);
|
||||||
$("#dialog_editview_loading").show();
|
$("#dialog_editview_loading").show();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
@ -167,7 +167,7 @@ function init_dialogs() {
|
|||||||
$("#dialog_addwidget_setup_loading").hide();
|
$("#dialog_addwidget_setup_loading").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
console.log("widget hinzufügen: " + add_widget_name)
|
//console.log("widget hinzufügen: " + add_widget_name)
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -203,7 +203,7 @@ function init_dialogs() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
console.log(JSON.stringify(attributes_array));
|
//console.log(JSON.stringify(attributes_array));
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
async: false,
|
async: false,
|
||||||
@ -226,7 +226,7 @@ function init_dialogs() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
open: function (event, ui) {
|
open: function (event, ui) {
|
||||||
console.log("dialog widget hinzufügen geöffnet => inhalt laden");
|
//console.log("dialog widget hinzufügen geöffnet => inhalt laden");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -240,7 +240,7 @@ function init_dialogs() {
|
|||||||
"Löschen": function (ui) {
|
"Löschen": function (ui) {
|
||||||
var view_id = get_current_view_id();
|
var view_id = get_current_view_id();
|
||||||
var widget_id = get_current_widget_id();
|
var widget_id = get_current_widget_id();
|
||||||
console.log("delete view " + view_id + " widget " + widget_id);
|
//console.log("delete view " + view_id + " widget " + widget_id);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
async: false,
|
async: false,
|
||||||
@ -248,7 +248,7 @@ function init_dialogs() {
|
|||||||
data: "view_id=" + view_id + "&widget_id=" + widget_id,
|
data: "view_id=" + view_id + "&widget_id=" + widget_id,
|
||||||
context: document.body,
|
context: document.body,
|
||||||
success: function (jsondata) {
|
success: function (jsondata) {
|
||||||
console.log("widget deleted");
|
//console.log("widget deleted");
|
||||||
$("#dialog_deletewidget").dialog("close");
|
$("#dialog_deletewidget").dialog("close");
|
||||||
$("#widget_menue").hide();
|
$("#widget_menue").hide();
|
||||||
$("#widget_" + view_id + "_" + widget_id).remove();
|
$("#widget_" + view_id + "_" + widget_id).remove();
|
||||||
@ -333,7 +333,7 @@ function init_dialogs() {
|
|||||||
buttons: {
|
buttons: {
|
||||||
"Speichern": function () {
|
"Speichern": function () {
|
||||||
$("#dialog_settings_loading").show();
|
$("#dialog_settings_loading").show();
|
||||||
console.log("update widget refresh interval");
|
//console.log("update widget refresh interval");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
async: true,
|
async: true,
|
||||||
@ -353,7 +353,7 @@ function init_dialogs() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
open: function (event, ui) {
|
open: function (event, ui) {
|
||||||
console.log("dialog settings opened");
|
//console.log("dialog settings opened");
|
||||||
$("#dialog_settings_loading").show();
|
$("#dialog_settings_loading").show();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -73,6 +73,9 @@
|
|||||||
init_handlers();
|
init_handlers();
|
||||||
load_views(show_views);
|
load_views(show_views);
|
||||||
init_RefreshWidgets();
|
init_RefreshWidgets();
|
||||||
|
if(window.location != window.parent.location) {
|
||||||
|
$('#menue').toggle();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +85,13 @@
|
|||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
init();
|
init();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).keydown(function(e){
|
||||||
|
if (e.keyCode == 32) {
|
||||||
|
$('#menue').toggle();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
###widget_css###
|
###widget_css###
|
||||||
@ -108,6 +118,9 @@
|
|||||||
<input type="radio" id="button_switchmode_0" name="radio" checked="checked"/><label for="button_switchmode_0" style="width: 118px;">Live</label>
|
<input type="radio" id="button_switchmode_0" name="radio" checked="checked"/><label for="button_switchmode_0" style="width: 118px;">Live</label>
|
||||||
<input type="radio" id="button_switchmode_1" name="radio"/><label for="button_switchmode_1" style="width: 118px;">Bearbeiten</label>
|
<input type="radio" id="button_switchmode_1" name="radio"/><label for="button_switchmode_1" style="width: 118px;">Bearbeiten</label>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="menue_block">
|
||||||
|
<button id="button_saveconfig" class="menue_button">Config speichern</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
@ -176,6 +189,5 @@
|
|||||||
<p>Einstellungen</p>
|
<p>Einstellungen</p>
|
||||||
<label>Refresh-Intervall: </label><input id="dialog_settings_intervall" name="dialog_settings_intervall" value="" />
|
<label>Refresh-Intervall: </label><input id="dialog_settings_intervall" name="dialog_settings_intervall" value="" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -8,6 +8,8 @@ DIR FHEM/YAF/widgets/fht80
|
|||||||
DIR FHEM/YAF/widgets/fht80/www
|
DIR FHEM/YAF/widgets/fht80/www
|
||||||
DIR FHEM/YAF/widgets/fhttk
|
DIR FHEM/YAF/widgets/fhttk
|
||||||
DIR FHEM/YAF/widgets/fhttk/www
|
DIR FHEM/YAF/widgets/fhttk/www
|
||||||
|
DIR FHEM/YAF/widgets/generic
|
||||||
|
DIR FHEM/YAF/widgets/generic/www
|
||||||
DIR FHEM/YAF/www
|
DIR FHEM/YAF/www
|
||||||
DIR FHEM/YAF/www/css
|
DIR FHEM/YAF/www/css
|
||||||
DIR FHEM/YAF/www/smoothness
|
DIR FHEM/YAF/www/smoothness
|
||||||
@ -17,19 +19,20 @@ DIR FHEM/YAF/www/js
|
|||||||
DIR FHEM/YAF/xml
|
DIR FHEM/YAF/xml
|
||||||
UPD 2013-07-23_20:45:00 11477 FHEM/01_YAF.pm
|
UPD 2013-07-23_20:45:00 11477 FHEM/01_YAF.pm
|
||||||
UPD 2013-05-15_20:00:00 6590 FHEM/YAF/widgets/fs20st/fs20st.pm
|
UPD 2013-05-15_20:00:00 6590 FHEM/YAF/widgets/fs20st/fs20st.pm
|
||||||
UPD 2013-07-28_17:00:00 7498 FHEM/YAF/widgets/fht80/fht80.pm
|
UPD 2013-07-31_15:30:00 7548 FHEM/YAF/widgets/fht80/fht80.pm
|
||||||
UPD 2013-07-28_17:00:00 6460 FHEM/YAF/widgets/fhttk/fhttk.pm
|
UPD 2013-07-31_15:30:00 6534 FHEM/YAF/widgets/fhttk/fhttk.pm
|
||||||
|
UPD 2013-07-31_15:30:00 8834 FHEM/YAF/widgets/generic/generic.pm
|
||||||
UPD 2013-05-15_20:00:00 6617 FHEM/YAF/widgets/fs20easylamp/fs20easylamp.pm
|
UPD 2013-05-15_20:00:00 6617 FHEM/YAF/widgets/fs20easylamp/fs20easylamp.pm
|
||||||
UPD 2013-05-15_20:00:00 2608 FHEM/YAF/www/img/loading.gif
|
UPD 2013-05-15_20:00:00 2608 FHEM/YAF/www/img/loading.gif
|
||||||
UPD 2013-05-15_20:00:00 766 FHEM/YAF/www/img/lamp_off.png
|
UPD 2013-05-15_20:00:00 766 FHEM/YAF/www/img/lamp_off.png
|
||||||
UPD 2013-05-15_20:00:00 19226 FHEM/YAF/www/img/background.png
|
UPD 2013-05-15_20:00:00 19226 FHEM/YAF/www/img/background.png
|
||||||
UPD 2013-05-15_20:00:00 831 FHEM/YAF/www/img/lamp_on.png
|
UPD 2013-05-15_20:00:00 831 FHEM/YAF/www/img/lamp_on.png
|
||||||
UPD 2013-05-15_20:00:00 7146 FHEM/YAF/www/yaf.htm
|
UPD 2013-07-31_15:30:00 11957 FHEM/YAF/www/js/yaf-basics.js
|
||||||
UPD 2013-07-20_16:00:00 14672 FHEM/YAF/www/js/yaf-dialogs.js
|
UPD 2013-07-31_15:30:00 10727 FHEM/YAF/www/js/yaf-dialogs.js
|
||||||
|
UPD 2013-07-31_15:30:00 7512 FHEM/YAF/www/yaf.htm
|
||||||
UPD 2013-05-15_20:00:00 3433 FHEM/YAF/www/js/combobox.js
|
UPD 2013-05-15_20:00:00 3433 FHEM/YAF/www/js/combobox.js
|
||||||
UPD 2013-05-15_20:00:00 4593 FHEM/YAF/www/js/jquery.ui.touch-punch.min.js
|
UPD 2013-05-15_20:00:00 4593 FHEM/YAF/www/js/jquery.ui.touch-punch.min.js
|
||||||
UPD 2013-05-15_20:00:00 237176 FHEM/YAF/www/js/jquery-ui-1.9.1.custom.min.js
|
UPD 2013-05-15_20:00:00 237176 FHEM/YAF/www/js/jquery-ui-1.9.1.custom.min.js
|
||||||
UPD 2013-07-20_16:00:00 13913 FHEM/YAF/www/js/yaf-basics.js
|
|
||||||
UPD 2013-05-15_20:00:00 448301 FHEM/YAF/www/js/jquery-ui-1.9.1.custom.js
|
UPD 2013-05-15_20:00:00 448301 FHEM/YAF/www/js/jquery-ui-1.9.1.custom.js
|
||||||
UPD 2013-05-15_20:00:00 265218 FHEM/YAF/www/js/jquery-1.8.2.js
|
UPD 2013-05-15_20:00:00 265218 FHEM/YAF/www/js/jquery-1.8.2.js
|
||||||
UPD 2013-05-15_24:00:00 2313 FHEM/YAF/www/css/yaf.css
|
UPD 2013-05-15_24:00:00 2313 FHEM/YAF/www/css/yaf.css
|
||||||
|
Loading…
x
Reference in New Issue
Block a user