new UWA.Environment(options)
The Environment object provide base methods to run an UWA Widget execution Environment and load Widgets.
It's an abstract object, and must be extended to be useful. The object must fill <html> property with DOM elements (at least body), in the <onInit> or <onRegisterWidget> methods for example.
Run Stack:
var environment = new UWA.Environment();
// Periodical[init]: init 100ms (document.body && !that.inited)
this.dispatchEvent('onInit');
this.inited = true;
var widget = environment.getWidget();
-> this.registerWidget();
// Periodical[register]: register 100ms (that.inited && !that.registered)
this.dispatchEvent('onRegisterWidget');
this.registered = true;
environment.launchWidget();
// Periodical: launch 100ms (that.isDataReady() && that.registered)
this.widget.launch();
this.widget.dispatchEvent('beforeLoad');
this.widget.dispatchEvent('onLoad');
this.widget.dispatchEvent('afterLoad');
Parameters
| Name | Type | Description |
|---|---|---|
options |
Object | Options hash or a option/value pair. |
Mixes In
- UWA.Class.Timed
- UWA.Class.Events
- UWA.Class.Debug
- UWA.Class.Options
Index
Members
Methods
- onLoad
- onResize
- onKeyboardAction
- onSearch
- onResetSearch
- onUpdatePreferences
- dispatchInit
- hasFeature
- getWidget
- registerWidget
- launchWidget
- destroy
- registerMenus
- onUpdateMenu
- onMenuExecute
- isDataReady
- getAllData
- getData
- setData
- deleteData
- dispatchEvent
- loadWidget
- loadEmbeddedWidget
- fetchJsonWidget
- fetchXmlWidget
- filterExternalResources
- onRefresh
- onUpdateIcon
- onUpdateTitle
- onUpdateCounter
- onEdit
- onShowEdit
- endEdit
- onHideEdit
- onCloseEdit
- onOpenURL
- onViewChange
- onViewError
Members
-
name :String
-
Current platform name where environment running (e.g "netvibes").
Type
- String
-
registered :Boolean
-
Flag to know if a widget is registered. A widget is not registered until the environment is loaded
Type
- Boolean
-
launched :Boolean
-
Flag to know if a widget is launched. A widget is not launched until the environment is registered
Type
- Boolean
-
widget :UWA.Widget
-
Current widget registered in this environment.
Type
- UWA.Widget
-
html :Object
-
HTML Dom elements related to this environment
Type
- Object
Properties:
Name Type Description titleString Title HTML element
editString Edit HTML element
bodyString Body HTML element
iconString Icon HTML element
-
features :Object
-
Stores environment's available features. See module:UWA/Environment.UWA.Environment#hasFeature.
Type
- Object
-
loadInlinedWidget
-
Load a widget for inline use.
Example
var environment = new UWA.Environment(); // Load JSON Widget object environment.loadInlinedWidget('http://example.org/widget.html, { onComplete: function(widget, environment) { // Set widget data widget.setValues({ activeTab: 'tab8', my_text: 'my data...' }) // Manipulate widget object widget.setTitle('Updated Title'); widget.setIcon('http://example.org', '`true`'); // Launch the widget environment.launchWidget(); } }); // Load a widget using existent XHTML var myWidget = '<?xml version="1.0" encoding="utf-8"?>' + '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"' + ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' + '<html xmlns="http://www.w3.org/1999/xhtml"' + ' xmlns:widget="http://www.netvibes.com/ns/">' + ' <head>' + ' ' + ' <!-- Application Metas -->' + ' <title>Title of the Widget</title>' + ' <meta name="author" content="John Doe" />' + ' <meta name="description" content="A descriptive description" />' + ' ' + ' <!-- Application Standalone emulation files -->' + ' <link rel="stylesheet" type="text/css"' + ' href="http://uwa.netvibes.com/lib/c/UWA/assets/css/standalone.css" />' + ' <script type="text/javascript"' + ' src="http://uwa.netvibes.com/lib/c/UWA/js/UWA_Standalone_Alone.js">' + ' ' + ' </head>' + ' <body>' + ' <p>Hello world!</p>' + ' </body>' + '</html>'; var environment = new UWA.Environment(); // The first argument is only used as a key cache, it does not have // to be an URL environment.loadInlinedWidget('widget42', { fetcher: myWidget, onComplete: function (widget, Environment) { // same as above example } }); // Json Wigdet argument format var myWidget = { "title": "Hello World", "icon": "http://example.org/favicon.png", "richIcon": "http://example.org/richIcon.png", "metas": { "version": "1.0.0", "apiVersion": "1.3", "autoRefresh": "10", "description": "Display Hello World for UWA", "author": "Netvibes", "strictMode": "`false`", "debugMode": "`false`", "screenshot": "http://example.org/screenshot.png", "thumbnail": "http://example.org/thumbnail.png" }, "plugins": [], "preferences": [[ { "type": "text", "name": "my_text", "label": "My text pref", "defaultValue": "" }, { "type": "password", "name": "my_password", "label": "My password pref", "defaultValue": "" }, { "type": "boolean", "name": "my_checkbox", "label": "My checkbox pref", "defaultValue": "" }, { "type": "hidden", "name": "my_hidden", "defaultValue": "" }, { "type": "range", "name": "my_range", "label": "My range pref", "defaultValue": "10", "step": "5", "min": "5", "max": "15" }, { "type": "list", "name": "my_list", "label": "My list", "defaultValue": "Value1", "options": [ { "label": "Label1", "value": "Value1" }, { "label": "Label2", "value": "Value2" }, { "label": "Label3", "value": "Value3" } ] } ], "body": "<p>Loading...</p>", "script": "var MyWidget = { onLoad: function() { widget.body.setContent('Hello World!'); }; \n widget.onLoad = MyWidget.onLoad;", "style": ".myClassName { color: red; }" }; var environment = new UWA.Environment(); // The first argument is only used as a key cache, it does not have // to be an URL environment.loadInlinedWidget('widget42', { fetcher: myWidget, onComplete: function (widget, Environment) { // same as above example } }); -
onViewRequest
-
Try to change the widget view. This event can be triggered from the widget by <UWA.Widget.requestView> or manually within the environment.
Methods
-
onLoad()
-
Triggered when the widget is launched. This event MUST be declared in any widget, in order for any of the widget's JavaScript code to be executed. Implementations MUST trigger this event once the application is done loading.
-
onResize()
-
Triggered when the widget is resized (manually or programmatically). Implementations SHOULD trigger this event when the size of the application container is resized (for instance, when the user resizes the containing column, or changes the number of columns on the page).
-
onKeyboardAction(key)
-
Triggered when a key is pressed within the widget's area. Implementations may first require the user to click within the widget's area in order to limit the interaction to that widget only. Implementations SHOULD pass the key-code as first argument of the event.
Parameters
Name Type Description keyString The pressed key's code
-
onSearch(query)
-
Triggered when a search is performed from within the platform.
Implementing platforms that feature a search form MAY trigger this event, with the search query as first argument, so that the widget may use it to further perform a search with its own data, if such a thing is possible.
Parameters
Name Type Description queryString The search query
-
onResetSearch()
-
Triggered when a search is reseted from within the platform.
Implementing platforms that feature a search form MAY trigger this event, so that the widget may use it to further reset the last search, if such a thing is possible.
-
onUpdatePreferences(preferences)
-
Triggered when a widget's preference is added. Implementations SHOULD trigger this event when a preferences is added (manually or programmatically).
Parameters
Name Type Description preferencesArray An Array of preferences in their JSON serialization
-
dispatchInit()
-
Dispatch "onInit" event to setup the environment html elements and events, when container readyState is interactive.
-
hasFeature(name, options) → {Boolean}
-
Check if the environment supports a feature. Please see environments documentation for a list of supported features.
Parameters
Name Type Argument Description nameString the name of the feature
optionsObject <optional>
hash of key/value to check if the feature supports those options
Returns
true if the environment support it
- Type
- Boolean
-
getWidget() → {UWA.Widget}
-
Returns the widget currently registered in the Environment. If no widget is registered, the Environment creates one and registers it.
Returns
The UWA.Widget instance (maybe newly created) registered widget.
- Type
- UWA.Widget
-
registerWidget(widget)
-
Registers a Widget into the execution Environment. Once done, fire the
onRegisterWidgetcallback.Parameters
Name Type Description widgetObject The <UWA.Widget> instance to register
-
launchWidget(data, readOnly)
-
Launch the registered widget by fire the widget.launch method. If needed, wait until the environment is fully loaded and a widget registered.
Internal or advanced use only.
Parameters
Name Type Argument Default Description dataObject Widget's data values
readOnlyBoolean <optional>
false trueif the widget is currently read only for the viewer -
destroy()
-
Destroy the elements and its children of widgets. Remove all events and remove the elements from the dom. Clear all Delayeds and Periodicals timers. Remove current environment widget Instance from <UWA.Widgets.instances>.
-
registerMenus()
-
Register menus to be displayed in widget chrome.
Note: widgets can add specific menu items using
setMenumethods in their own code. -
onUpdateMenu(menus)
-
Called when a menu item has been added or removed through
widget.setMenuorwidget.removeMenu.The entire menu is rebuilt. This method can be overrided by derivated classes.
Parameters
Name Type Description menusArray Menu descriptors
-
onMenuExecute(menuItem)
-
Event fired when a menuItem is executed
Parameters
Name Type Description menuItemObject the menu item descriptor
-
isDataReady() → {Boolean}
-
Check if Environment Data Storage is ready.
Returns
trueif environment data storage is ready elsefalse.- Type
- Boolean
-
getAllData() → {Object}
-
Retuns all the widget data stored in the environment, used internally to launch the widget. The Environments implementations should override it if it does not use a Storage instance in the data property.
Returns
All the datas of the widget.
- Type
- Object
-
getData(key) → {Void}
-
Retrieve data key current value.
Parameters
Name Type Description keyString The key of value to get
Returns
Current key value.
- Type
- Void
-
setData(key, value) → {Void}
-
Set current data key value.
Parameters
Name Type Description keyString The key of value to get
valueString The value of value to store
Returns
Current key value.
- Type
- Void
-
deleteData(key) → {Void}
-
Delete data key from storage.
Parameters
Name Type Description keyString The key of value to get
Returns
Previous key value.
- Type
- Void
-
dispatchEvent(name, args, bind)
-
Executes the listeners method associated with the given event name.
Internal or advanced use only.
Parameters
Name Type Description nameString the event name (e.g. "onUpdateTitle");
argsArray Array of parameters that should be passed to each listener
bindObject Context on which listener will be executed (object that should represent the
thisvariable inside listener function)Returns
Nothing, but calls the listeners associated with the given event name.
-
loadWidget(url, options) → {this}
-
Asynchronously load an UWA widget from url source.
Internal or advanced use only.
Example
<div class="app" tabindex="1"> <script type="text/javascript"> (function () { var environment = new UWA.Environment(); environment.loadWidget('http://uwa.netvibes.com/apps/samples.php', { onComplete: function (widget, environment) { // Set widget data widget.setValues({ activeTab: 'tab8', my_text: 'my data...' }) // Manipulate widget object widget.setTitle('Updated Title'); widget.setIcon('http://example.org', '`true`'); // Launch the widget environment.launchWidget(); } }); }()); </script> </div>Parameters
Name Type Description urlString The URL of the UWA widget source
optionsObject Options hash or a option/value pair.
Properties
Name Type Argument Description onCompleteFunction <optional>
Called with the resulting Widget instance as first argument.
onFailureFunction <optional>
Called if an error occurs
onTimeoutFunction <optional>
Called if a timeout occurs while fetching widget informations
embeddedFunction <optional>
Used as a boolean to load the widget as embedded or inlined‡
Returns
- Type
- this
-
loadEmbeddedWidget(url, options) → {this}
-
Load widget from url and render it using <UWA.Embedded>.
Internal or advanced use only.
Parameters
Name Type Description urlString the URL of the UWA widget source
optionsObject a JavaScript object containing setting/value pairs This object can take a handful of settings, the only required one being 'onComplete', because you need to always set a callback method that will receive the widget and environment parameter. That method must have one parameter to receive the widget object returned by the environment.
Returns
- Type
- this
-
fetchJsonWidget(sourceURL, options)
-
Parameters
Name Type Description sourceURLString The widget URL
optionsObject Properties
Name Type Argument Default Description serverObject <optional>
UWA.hosts.exposition The exposition server to use
onCompleteFunction <optional>
The callback used to return the widget informations
-
fetchXmlWidget(sourceURL, options)
-
Asynchronously fetch <widget> from an XHTML widget raw source.
Internal or advanced use only.
Parameters
Name Type Description sourceURLString the widget URL
optionsObject Properties
Name Type Argument Description onCompleteFunction <optional>
The callback used to return the widget informations
onFailureFunction <optional>
The callback used when the request fails (see Data.request)
onTimeoutFunction <optional>
The callback used when the request timeouts (see Data.request)
cacheFunction <optional>
The cache time to pass to the widget server (see Data.request)
-
filterExternalResources(type, Array) → {Array}
-
Allow the environment to prevent loading some resources, or change resources URL. Override this method in an Environment implementation.
Parameters
Name Type Description typeString The resource type
ArrayArray of String resourges: the resources URL included in the widget
Returns
the resources to include.
- Type
- Array
-
onRefresh()
-
Triggered when the widget is refreshed (manually or programmatically). Implementations SHOULD trigger this event when preferences values are updated. If this event is not declared, the <UWA.Widget.onLoad> event will be triggered instead.
-
onUpdateIcon(url)
-
Triggered when the widget's icon is modified. Implementations MUST trigger it when widget.setIcon() is used. Implementations MAY also trigger for internal reasons.
Parameters
Name Type Description urlString The url of the icon. The URL should include the protocol (http://)
-
onUpdateTitle(title)
-
Triggered when the widget's title is modified. Implementations MUST trigger it when widget.setTitle() is used. Implementations MAY also trigger for internal reasons.
Parameters
Name Type Description titleString The title of the widget. Can contain HTML code
-
onUpdateCounter(count, type)
-
Triggered when the widget's counter is modified. Implementations MUST trigger it when widget.setCounter() is used. Implementations MAY also trigger for internal reasons.
Parameters
Name Type Argument Description countNumber | Boolean | String The number of results or status for the current search/unread items
typeString <optional>
The number of results type (e.g 'search').
-
onEdit()
-
Triggered when edition of preferences begin.
-
onShowEdit()
-
Triggered when preferences showing.
-
endEdit()
-
Triggered when edition of preferences ending.
-
onHideEdit()
-
Triggered when preferences hiding.
-
onCloseEdit()
-
Triggered when preferences is closed (even by cliking on 'Done' or by clicking on the cross icon).
-
onOpenURL(url) → {Boolean}
-
Open an url into a new environment browser window.
Implementation can differ between environments.
Behavior differ between execution environments: - open the page in an iframe on the same screen - open the page in a new window/tab - open the page in a new browser window (desktop widgets)
Parameters
Name Type Description urlString The url to open in a new window
Returns
trueif it successfully opens the url (according to the subprotocol)- Type
- Boolean
-
onViewChange(view)
-
Triggered when the view changed, it saves the view is the widget.
Parameters
Name Type Description viewObject Wiew parameters, like for <onViewRequest>
-
onViewError(view)
-
Triggered when the view fails to change.
Parameters
Name Type Description viewObject view parameters, like for <onViewRequest>, with one additional parameter 'error' representing the error message.