From efca5500d9e57ce5b7aaf5c941dc6b8560c58b70 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Fri, 9 Sep 2011 08:29:31 +0000 Subject: [PATCH] first try of a progress widget, not yet working :-( --- etemplate/js/et2_widget_progress.js | 120 +++++++++++++++++++ etemplate/js/test/et2_test_basic.json | 5 + etemplate/js/test/et2_test_basic_widgets.xet | 2 +- etemplate/js/test/test.css | 12 ++ etemplate/js/test/test_xml.html | 4 +- 5 files changed, 141 insertions(+), 2 deletions(-) create mode 100644 etemplate/js/et2_widget_progress.js create mode 100644 etemplate/js/test/et2_test_basic.json diff --git a/etemplate/js/et2_widget_progress.js b/etemplate/js/et2_widget_progress.js new file mode 100644 index 0000000000..10500976d6 --- /dev/null +++ b/etemplate/js/et2_widget_progress.js @@ -0,0 +1,120 @@ +/** + * EGroupware eTemplate2 - JS Progrss object + * + * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License + * @package etemplate + * @subpackage api + * @link http://www.egroupware.org + * @author Ralf Becker + * @version $Id$ + */ + +"use strict"; + +/*egw:uses + jquery.jquery; + et2_core_interfaces; + et2_core_baseWidget; +*/ + +/** + * Class which implements the "image" XET-Tag + */ +var et2_progress = et2_baseWidget.extend(/*et2_IDetachedDOM,*/ { + + attributes: { + "href": { + "name": "Link Target", + "type": "string", + "description": "Link URL, empty if you don't wan't to display a link." + }, + "extra_link_target": { + "name": "Link target", + "type": "string", + "default": "_self", + "description": "Link target descriptor" + }, + "extra_link_popup": { + "name": "Popup", + "type": "string", + "description": "widthxheight, if popup should be used, eg. 640x480" + }, + "label": { + } + }, + legacyOptions: ["href", "extra_link_target", "imagemap", "extra_link_popup", "id"], + + init: function() + { + this._super.apply(this, arguments); + + var outer = $j(document.createElement("div")).addClass("et2_progress"); + this.node = $j(document.createElement("div")).width(0).appendTo(outer); + + if (this.options.href) + { + outer.addClass('et2_clickable'); + } + if(this.options["class"]) + { + outer.addClass(this.options["class"]); + } + this.setDOMNode(outer[0]); +// gives error "this.node has no method width" +// this.set_value(50); + }, + + click: function() + { + if(this.options.href) + { + egw.call_link(this.options.href, this.options.extra_link_target, this.options.extra_link_popup); + } + }, + + // tried set_value and setValue, both get never called :-( + set_value: function(_value) + { + if (_value != "") _value = parseInt(_value)+"%"; // make sure we have percent attached + this.node.width(_value); + if (!this.options.label) this.set_label(_value); + }, + + // set's label as title of this.node + set_label: function(_value) + { + this.node.attr("title", _value); + } + + /** + * Implementation of "et2_IDetachedDOM" for fast viewing in gridview + */ +/* + getDetachedAttributes: function(_attrs) { + _attrs.push("src", "label"); + }, + + getDetachedNodes: function() { + return [this.node[0]]; + }, + + setDetachedAttributes: function(_nodes, _values) { + // Set the given DOM-Nodes + this.node = $j(_nodes[0]); + + this.transformAttributes(_values); + + // Set the attributes + if (_values["src"]) + { + this.set_value(_values["value"]); + } + + if (_values["label"]) + { + this.set_label(_values["label"]); + } + }*/ +}); + +et2_register_widget(et2_progress, ["progress"]); diff --git a/etemplate/js/test/et2_test_basic.json b/etemplate/js/test/et2_test_basic.json new file mode 100644 index 0000000000..1a71fadf55 --- /dev/null +++ b/etemplate/js/test/et2_test_basic.json @@ -0,0 +1,5 @@ +var basic_data = { + content: { + "progress": "50%", + } +} diff --git a/etemplate/js/test/et2_test_basic_widgets.xet b/etemplate/js/test/et2_test_basic_widgets.xet index b020347a83..cd273ecc3d 100644 --- a/etemplate/js/test/et2_test_basic_widgets.xet +++ b/etemplate/js/test/et2_test_basic_widgets.xet @@ -31,7 +31,7 @@ - + diff --git a/etemplate/js/test/test.css b/etemplate/js/test/test.css index d26d8237ee..46faf8216b 100644 --- a/etemplate/js/test/test.css +++ b/etemplate/js/test/test.css @@ -496,4 +496,16 @@ label input, label span, label div, label select, label textarea { .et2_clickable { cursor: pointer; +} + +div.et2_progress { + border: 1px solid black; + background-color: white; + width: 30px; + padding: 1px; + text-align: left; +} +div.et2_progress > div { + background-color: #D00000; + height: 5px; } \ No newline at end of file diff --git a/etemplate/js/test/test_xml.html b/etemplate/js/test/test_xml.html index cc9d07cc92..5aa894dc5f 100644 --- a/etemplate/js/test/test_xml.html +++ b/etemplate/js/test/test_xml.html @@ -33,6 +33,7 @@ + @@ -70,6 +71,7 @@ + @@ -95,7 +97,7 @@ Textbox test Text/URL test Description test - Basic widgits + Basic widgets Date/Time widgits Expression test HBox test