MyMobileWeb Certification Part III


Published on

Advanced MyMobileWeb

Published in: Business, Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

MyMobileWeb Certification Part III

  1. 1. MyMobileWeb “Authoring adaptive Mobile Web Applications with MyMobileWeb” FIT-350405-2007-1 FIT-350401-2006-2
  2. 2. Part III Advanced MyMobileWeb
  3. 3. Contents <ul><li>Exploiting the Delivery Context </li></ul><ul><ul><li>Device Description Repositories </li></ul></ul><ul><ul><li>DDR Simple API </li></ul></ul><ul><ul><li>DevInfo Simple API </li></ul></ul><ul><ul><li>The MyMobileWeb DDR REST Service </li></ul></ul><ul><ul><li>Device Clustering </li></ul></ul><ul><ul><li>Convenience Functions for the Delivery Context </li></ul></ul><ul><li>Internationalization </li></ul><ul><li>Media Sets and Content Selection </li></ul><ul><li>The Mobile Web Client Runtime </li></ul>
  4. 4. Device Description Repositories <ul><li>In the desktop Delivery Context, the number of different Properties that affect the usability is limited but in mobile Delivery Context this number is higher and affect the usability of the resulting content </li></ul><ul><li>Historically, it has been difficult or impossible to upgrade Web browser software on mobile devices or to add support for features not present in the Web browser originally shipped with de device </li></ul><ul><li>DDRs have become essential components of development of content targeted at the mobile Delivery Context </li></ul><ul><li>Screen size, markup language support or image format support information is stored in “ Device Description Repositories ” (DDRs) </li></ul>
  5. 5. DDR Simple API (I) <ul><li>Minimal API for retrieving device properties needed for content and application adaptation. </li></ul><ul><ul><li> </li></ul></ul><ul><li>Promote the development of Web content that adapts to its Delivery Context. </li></ul><ul><li>From the point of view of the DDR Simple API </li></ul><ul><ul><li>Aspect: represents a category of hardware or software that participates in delivering a Web experience. </li></ul></ul><ul><ul><li>Property : characteristic of an aspect that can affect the Web experience. </li></ul></ul><ul><ul><li>Vocabulary: set of properties and the aspects with which the properties are associated </li></ul></ul>
  6. 6. DDR Simple API (II) <ul><li>Interfaces : </li></ul><ul><ul><li>Evidence : information to determine the Delivery Context. </li></ul></ul><ul><ul><li>PropertyName : the name of a Property together with its namespace. </li></ul></ul><ul><ul><li>PropertyRef : the name of a Property together with its Aspect together with the namespace they are in. </li></ul></ul><ul><ul><li>PropertyValue : models a PropertyRef together with its value. </li></ul></ul><ul><ul><li>PropertyValues : a set of PropertyValues. </li></ul></ul><ul><ul><li>Service : the core of the DDR Simple API . </li></ul></ul><ul><ul><li>ServiceFactory : factory for instantiating Service with the supplied default namespace and configuration. </li></ul></ul><ul><ul><li>Several exceptions together with its codes ( DDRException , SystemException ,…) </li></ul></ul>
  7. 7. DDR Simple API (III)
  8. 8. DDR Core Vocabulary <ul><li>Essential vocabulary of properties for adaptation in the Mobile Web environment </li></ul><ul><ul><li> </li></ul></ul><ul><ul><li>Not intended to represent an exhaustive set of properties for content adaptation </li></ul></ul><ul><ul><li>DDR Implementations might require additional properties and vocabularies </li></ul></ul><ul><li>This vocabulary defines two aspects: </li></ul><ul><ul><li>device : apparatus through which user can interact with de Web (default aspect) </li></ul></ul><ul><ul><li>webBrowser : a User Agent for Web pages </li></ul></ul><ul><li>Properties: vendor, model, version, displayWidth, inputDevices , … </li></ul>
  9. 9. DevInfo Simple API <ul><li>Early implementation of W3C’s DDR Simple API Specification </li></ul><ul><li>The implementation is based on WURFL and UAProf </li></ul><ul><li>Supported vocabularies : </li></ul><ul><ul><li>W3C’s Core Vocabulary </li></ul></ul><ul><ul><li>MyMobileWeb’s Vocabulary (used by MyMobileWeb to adapt content and applications) </li></ul></ul><ul><ul><li>WURFL Vocabulary </li></ul></ul><ul><li>It is flexible enough to incorporate other data sources if available (e.g. DeviceAtlas) </li></ul><ul><li>MyMobileWeb is integrated with this API implementation </li></ul><ul><ul><li>The first open source adaptation tool that use this new API </li></ul></ul><ul><li>User Manual: </li></ul><ul><ul><li> </li></ul></ul>
  10. 10. Architecture Overview
  11. 11. Vocabulary Descriptors
  12. 12. Vocabulary Sources
  13. 13. Vocabulary Mappings
  14. 14. DDR REST Service <ul><li>Available a REST Service to access to DDR Repositories </li></ul><ul><ul><li>So thirds can know dynamically properties values </li></ul></ul><ul><ul><ul><li>E.g. from Javascript code </li></ul></ul></ul><ul><li>The REST Service is consisted of </li></ul><ul><ul><li>Meta Service </li></ul></ul><ul><ul><ul><li>It lists the combination of all known Properties and Aspects in all Vocabularies, and furthermore it provides the data type and default Aspect for each property </li></ul></ul></ul><ul><ul><li>Query Service </li></ul></ul><ul><ul><ul><li>It provides the property values passed as parameter property, aspect and vocabulary </li></ul></ul></ul><ul><li>MORFEO provides the following service: </li></ul><ul><ul><li> </li></ul></ul>
  15. 15. Meta Service <ul><li>URI Meta Service: </li></ul><ul><li>The format of interchange can be JSON or XML </li></ul><ul><ul><li>View syntax: </li></ul></ul><ul><ul><li>If the client supports JSON (' application/json ' in Accept HTTP Header), the Meta Service will send a JSON object as response </li></ul></ul>
  16. 16. Query Service <ul><li>URI Query Service: </li></ul><ul><ul><li>The request parameter is called request </li></ul></ul><ul><li>The format of interchange can be JSON or XML </li></ul><ul><ul><li>View syntax: </li></ul></ul>
  17. 17. DDR REST Service Installation <ul><li>Developers can install their own DDR REST Service </li></ul><ul><ul><li>Download from: </li></ul></ul><ul><ul><li>Uncompress the tar.gz </li></ul></ul><ul><ul><li>Copy the DDR Service application in your server </li></ul></ul><ul><ul><li>Configure the Installation_Path property ( web.xml ) </li></ul></ul><ul><ul><li>If you want use WURFL as data source you have to append to JVM parameters ' -Xms512m -Xmx512m ' </li></ul></ul>
  18. 18. MyMobileWeb - DevInfo Integration <ul><li>MyMobileWeb provides two ways to access to Device Description Repositories </li></ul><ul><ul><li>Local DDR </li></ul></ul><ul><ul><ul><li>Embedded DevInfo Simple API (previous MyMobileWeb versions) </li></ul></ul></ul><ul><ul><li>Remote DDR (DevInfo Simple API Connector - Based) </li></ul></ul><ul><ul><ul><li>Platform retrieves property values asking to the DDR REST Service </li></ul></ul></ul><ul><li>The DevInfo Simple Connector Library is licensed under LGPL 3.0 and the DevInfo Simple API is licensed under GPL 2 </li></ul><ul><ul><li>The LGPL does not propagate itself in the same way that the GPL does so if you need a commercial development you should user a remote DDR option </li></ul></ul>
  19. 19. Local DDR - Architecture
  20. 20. Local DDR - Configuration <ul><li>If you choose the local DDR option you should download the current DevInfo Simple API RI and copy the rest of libraries and configuration/descriptor files in your MyMobileWeb application </li></ul><ul><ul><li>Libraries </li></ul></ul><ul><ul><ul><li>DevInfo-Simple-1.1/build/*.jar (except devinfo-simple-connector-1.1.jar ) </li></ul></ul></ul><ul><ul><ul><li>DevInfo-Simple-1.1/lib/*.jar (except backport-util-concurrent-3.0.jar & ehcache-1.5.0.jar ) </li></ul></ul></ul><ul><ul><li>Configuration and descriptor files </li></ul></ul><ul><ul><ul><li>DevInfo-Simple-1.1/resources/**/* </li></ul></ul></ul>
  21. 21. Remote DDR - Architecture
  22. 22. Remote DDR - Configuration <ul><li>MyMobileWeb uses this option by default so distributes all needed libraries and configuration files </li></ul><ul><ul><li>Property data: absolute path to resources (ehcache configuration and device clustering) </li></ul></ul><ul><ul><li>Property url: remote DDR URI </li></ul></ul>
  23. 23. Device Clustering (I) <ul><li>DevInfo Simple API provides the device grouping proposes in the following W3C Working Draft </li></ul><ul><ul><li> </li></ul></ul><ul><li>The majority of handsets share common characteristics and can be grouped into families </li></ul><ul><ul><li>For example, all the devices made by a manufacturer or all the devices that provide certain functionalities </li></ul></ul><ul><li>Device Grouping is useful as it provides a higher level of abstraction avoiding to work with specific device instances or models </li></ul><ul><ul><li>This working draft proposes an XML format, a syntax for group expressions based on boolean conditions over the properties </li></ul></ul>
  24. 24. Device Clustering (II) <ul><li>MyMobileWeb describes a set of predefined device groups or families in the devinfo/device_groups_1.xml file </li></ul><ul><ul><li>Developers can add their groups in devinfo/device_groups.xml </li></ul></ul>
  25. 25. Delivery Context Management APIs <ul><li>Device (DDR Simple API Wrapper) </li></ul><ul><ul><li>getPropertyValues() </li></ul></ul><ul><ul><ul><li>Returns all property values </li></ul></ul></ul><ul><ul><li>getCapabilityValue (String property) </li></ul></ul><ul><ul><ul><li>Returns the value of the property for the caller device (only for DDR Core & MyMobileWeb Vocabularies) </li></ul></ul></ul><ul><ul><li>getCapabilityGroupValues (String property) </li></ul></ul><ul><ul><ul><li>Returns the value of the enumerated property for the caller device (only for DDR Core & MyMobileWeb Vocabularies) </li></ul></ul></ul><ul><ul><li>belongsTo (String family) </li></ul></ul><ul><ul><ul><li>Returns true if the device belongs to the device passed as parameter </li></ul></ul></ul>
  26. 26. Convenience Functions – Java API <ul><li>DeliveryContextFunctions is an utility class provides access to properties of DC </li></ul><ul><ul><li>deviceWidth(Context context) </li></ul></ul><ul><ul><ul><li>Physical width of the display associated with the device as a integer number </li></ul></ul></ul><ul><ul><li>deviceHeight(Context context) </li></ul></ul><ul><ul><ul><li>Physical height of the display associated with the device as a integer number </li></ul></ul></ul><ul><ul><li>width(Context context) </li></ul></ul><ul><ul><ul><li>Usable width of the display associated with the device as a integer number </li></ul></ul></ul><ul><ul><li>height(Context context) </li></ul></ul><ul><ul><ul><li>Usable height of the display associated with the device as a integer number </li></ul></ul></ul><ul><ul><li>charactersColumns(Context context) </li></ul></ul><ul><ul><ul><li>Number of columns </li></ul></ul></ul><ul><ul><li>charactersRows(Context context) </li></ul></ul><ul><ul><ul><li>Number of rows </li></ul></ul></ul><ul><ul><li>currentOrientation(Context context) </li></ul></ul><ul><ul><ul><li>Current orientation (0, 90, -90, 180) according to default orientation </li></ul></ul></ul><ul><ul><li>currentPosition(Context context) </li></ul></ul><ul><ul><ul><li>Current position as a string </li></ul></ul></ul><ul><ul><ul><ul><li>Eg: &quot;40.5143,-3.6637&quot;, latitude = '40.5143' and longitude = '-3.6637' </li></ul></ul></ul></ul><ul><ul><li>colors(Context context) </li></ul></ul><ul><ul><ul><li>Number of colors </li></ul></ul></ul>
  27. 27. Convenience Functions – E.L (I) <ul><li>Invoking convenience functions from authoring language </li></ul><ul><li>Asking to the DDR Service from authoring language </li></ul><ul><ul><li>namespace:propertyValue (String property, String localAspectName) </li></ul></ul><ul><ul><ul><li>Value of a specific property in the aspect and vocabulary specified by namespace and localAspectName respectively </li></ul></ul></ul><ul><ul><li>namespace:propertyValue (String property) </li></ul></ul><ul><ul><ul><li>Value of a specific property in its default aspect in the vocabulary specified by namespace </li></ul></ul></ul><ul><ul><li>propertyValue (String property, String localAspectName) </li></ul></ul><ul><ul><ul><li>Value of a specific property in the aspect specified by localAspectName (by default vocabulary, xmlns=&quot;&quot;) </li></ul></ul></ul><ul><ul><li>propertyValue (String property) </li></ul></ul><ul><ul><ul><li>Value of a specific property in its default aspect (default vocabulary, xmlns=&quot;&quot;) </li></ul></ul></ul>
  28. 28. Convenience Functions – E.L (II) <ul><li>Examples </li></ul>
  29. 29. Internationalization <ul><li>Two concepts are handled </li></ul><ul><ul><li>Literal . It is a &quot;tag&quot; information that appears in a presentation and that can be formed by more than one word </li></ul></ul><ul><ul><ul><li>Examples: “Type of Company&quot;, &quot;Enter&quot;, &quot;Search&quot; </li></ul></ul></ul><ul><ul><li>Message . It is a sentence with subject and predicate used to indicate something to the user. </li></ul></ul><ul><ul><ul><li>Usually the sentence is parameterized </li></ul></ul></ul><ul><ul><ul><ul><li>Example: &quot;We have found {0} products“ </li></ul></ul></ul></ul><ul><ul><ul><li>The messages have a type </li></ul></ul></ul><ul><ul><ul><ul><li>Information, Warning, Error, Question, .... </li></ul></ul></ul></ul><ul><ul><ul><li>They appear in presentations of the pseudo-OP 'Messages‘ </li></ul></ul></ul><ul><ul><ul><li>The platform solves the multilanguage </li></ul></ul></ul><ul><li>The platform handles the internationalization for both: literal and messages </li></ul>
  30. 30. Internationalization - Literals <ul><li>The platform makes possible to develop applications that are multilanguage “by definition” </li></ul><ul><li>Traditionally: An application designed for a single language, requires an effort of &quot;adaptation&quot; when it is translated into several languages </li></ul><ul><ul><li>All views should be modified to incorporate a indirection mechanism for resolving literals </li></ul></ul><ul><ul><li>Unnatural </li></ul></ul><ul><li>It is possible to do things in other way </li></ul><ul><ul><li>Each developer in their mother tongue </li></ul></ul><ul><ul><li>The multilanguage is transparent to developers </li></ul></ul><ul><ul><li>The tools of the platform, if the application is decided to deploy in several languages, are responsible for extracting the literal and outsourcing, by language, in XML files, which included translations </li></ul></ul><ul><ul><li>The platform runtime will make the translation at runtime </li></ul></ul><ul><ul><li>The literal in the mother tongue programming is the key translation </li></ul></ul>
  31. 31. Internationalization - Literals - Tools <ul><li>Literal Extractor </li></ul><ul><ul><li>Takes all presentations of an application and extracts the literals, leaving them in translation XML files, the same number as languages specified. </li></ul></ul><ul><ul><li>The translations for the language in which was development are left in place (they are the identity) </li></ul></ul><ul><ul><li>For all other languages they are leave prepared for sending to the translation department </li></ul></ul><ul><ul><li>It is managed the cleanup, updates, etc. </li></ul></ul><ul><li>There are application literal and platform literal </li></ul><ul><ul><li>Next, Previous, Select </li></ul></ul>
  32. 32. Internationalization -Literals -Redefinition <ul><li>Using the same translation mechanism we can redefine literals for different families of devices </li></ul><ul><li>Example: a literal too long destroying the layout in a terminal or family of terminals </li></ul><ul><li>Redefinition Mechanism </li></ul><ul><ul><li>A new translation will be created and it will be applied in runtime when a user connects with a terminal or family of devices that matches the specified </li></ul></ul>
  33. 33. Internationalization – Literals – Example <ul><li>Hierarchy of multilanguage literals files </li></ul>AppName_literals_en_US.xml AppName_literals_es_ES.xml
  34. 34. Internationalization - Messages <ul><li>Each message has an identifier, a type and the text message </li></ul><ul><li>It supports variable substitution involving both parameters 'local', and context variables (specified by EL) </li></ul><ul><li>Example </li></ul><ul><ul><li>&quot;The user ${ _MYMW_LOGIN} has {0} associated clients&quot; </li></ul></ul><ul><ul><ul><li>{_MYMW_LOGIN} refers to a context variable and {0} refers to a local parameter </li></ul></ul></ul><ul><li>The messages are displayed requesting the execution of an action showMessage in the flow </li></ul><ul><li>There are messages of the own application and messages of the platform </li></ul><ul><ul><li>Example: Error messages for automated validations </li></ul></ul>
  35. 35. Internationalization-Messages-Example <ul><li>Hierarchy of multilanguage messages files </li></ul>
  36. 36. Internationalization - Configuration <ul><li>Default language and the available languages </li></ul><ul><li>Language identifier: <LanguageCode>_<CountryCode> (ISO) </li></ul><ul><li>Literals directory configuration ( MyMobileWeb.Global.xml ) </li></ul><ul><li>Messages directory configuration ( MyMobileWeb.Global.xml ) </li></ul><ul><li>XML files should have this suffix: </li></ul><ul><ul><li>< LanguageCode>_<CountryCode>.xml (ISO) </li></ul></ul>
  37. 37. Internationalization - Runtime <ul><li>Each user has in its session a variable that indicates the language code </li></ul><ul><li>You can specify the language of a user in the object that represents the user's profile </li></ul><ul><li>For multilanguage portals provides a language changeover operation using the parameter _MYMW_LANG </li></ul><ul><li>The language of the user is stored in a cookie </li></ul><ul><li>In running time there are two components </li></ul><ul><ul><li>MessagesManager </li></ul></ul><ul><ul><ul><li>Given a message ID it solves for the user's language and replaces the variables </li></ul></ul></ul><ul><ul><ul><li>If it does not find the identifier the result is the identifier itself </li></ul></ul></ul><ul><ul><li>LiteralManager </li></ul></ul><ul><ul><ul><li>Given a literal it translates to the user language </li></ul></ul></ul><ul><ul><ul><li>If it does not find a translation the result is the literal itself </li></ul></ul></ul>
  38. 38. Media Sets & Content Selection (I) <ul><li>There are resources in applications, typically images, videos or audios, which rely heavily on the capabilities of devices </li></ul><ul><li>To meet the requirement of displaying or supporting the most appropriate resource for each terminal, it is handled the concept of abstract identifier of resource which has different instances </li></ul><ul><ul><li>Example: a ‘home’ resource, which it is available in jpg, gif and wbmp and with different sizes. </li></ul></ul><ul><li>It is responsibility of the developer provides resources for each of these instances, so MyMobileWeb can send the best resort to each terminal </li></ul>
  39. 39. Media Sets & Content Selection (II) <ul><li>Relative paths of media resources are configured in MyMobileWeb.Global.xml file </li></ul><ul><ul><li>Content selection on CMS is also implemented </li></ul></ul><ul><li>Multi-device instances are stored into resource directory or generic subdirectory </li></ul><ul><li>Redefined instances per markup, technology or family of devices are stored into directory whose name is the same as the technology or family name </li></ul>
  40. 40. Media Sets & Content Selection (III) <ul><li>MyMobileWeb supports content selection according to the language </li></ul><ul><li>For that it is needed to add a folder level with the concatenation of the country code and code language (ISO) </li></ul><ul><li>If there is a definition of family or technology: </li></ul><ul><ul><li>If within this subfolder are defined instances for the current language, the system will select only between them </li></ul></ul><ul><ul><li>Otherwise, it will be selected from the ones that hangs directly from the family and not language </li></ul></ul><ul><li>If there is no a definition of family or technology: </li></ul><ul><ul><li>With language definition (folder with country code) under the generic folder is chosen only by these instances </li></ul></ul><ul><ul><li>Without defining language select among all instances except from which are defined for other languages </li></ul></ul>
  41. 41. Media Sets & Content Selection (IV)
  42. 42. The Mobile Web Client Runtime (I) <ul><li>Common </li></ul><ul><ul><li>mymw-common </li></ul></ul><ul><li>AJAX </li></ul><ul><ul><li>mymw-ajax </li></ul></ul><ul><li>UI </li></ul><ul><ul><li>mymw-ui </li></ul></ul><ul><ul><li>mymw-tabview </li></ul></ul><ul><ul><li>Much more to come (sliders, calendar…) </li></ul></ul><ul><li>Other Modules </li></ul><ul><ul><li>XForms </li></ul></ul><ul><ul><li>DCCI, Context </li></ul></ul><ul><ul><li>Recommendation </li></ul></ul><ul><ul><li>Autocompletion </li></ul></ul><ul><ul><li>… </li></ul></ul>mymw-common mymw-ajax mymw-ui
  43. 43. The Mobile Web Client Runtime (II) <ul><li>The platform handles different device behaviours (including Windows Mobile 5) </li></ul><ul><li>The platform offers a minimized version of the scripts to reduce load times. </li></ul><ul><li>Scripts are located under script/ISO-8859-1/All/*.js </li></ul>
  44. 44. Common Module <ul><li>Source “script/ISO-8859-1/All/mymw-common_min.js” </li></ul><ul><li>Element $ (<String> elementId) </li></ul><ul><li>Gets an element by id </li></ul><ul><li>boolean isDefined (<Object> o) </li></ul><ul><li>Validates if an object is defined or not </li></ul><ul><li>boolean isFloat (<Object> str) </li></ul><ul><li>Validates if an string has a float format </li></ul><ul><li>boolean isInteger (<Object> str) </li></ul><ul><li>Validates whether an string has an integer format </li></ul><ul><li>String trim (<String> str) </li></ul><ul><li>Trims a String, removing every leading or tailing whitespace. </li></ul>
  45. 45. The Mobile AJAX Framework <ul><li>Source “script/ISO-8859-1/All/mymw-ajax_min.js” </li></ul><ul><li>Object mymw.ajax </li></ul><ul><li>void submit (<String> method, <String> url, <Object> params, <Object> callbacks) </li></ul><ul><li>Sends an HTTP request to the server. </li></ul><ul><li>method : HTTP method (“POST”, “GET”…) </li></ul><ul><li>url : remote URL </li></ul><ul><li>params : parameters to be sent </li></ul><ul><li>callbacks : “onerror” and “onsuccess” functions </li></ul><ul><li>String encode (<Object> params) </li></ul><ul><li>Encodes a list of parameters to be appended to the URL. </li></ul>
  46. 46. User Interface Module (I) <ul><li>Source “script/ISO-8859-1/All/mymw-ui_min.js” </li></ul><ul><li>Object mymw.ui </li></ul><ul><li>Modify page contents </li></ul><ul><ul><li>void addFragment (<String> id, <String> htmlContent) </li></ul></ul><ul><ul><li>Appends some content to a given element </li></ul></ul><ul><ul><li>void setFragment (<String> id, <String> htmlContent) </li></ul></ul><ul><ul><li>Modifies the inner contents of a given element </li></ul></ul>
  47. 47. User Interface Module (II) <ul><li>Modify styles </li></ul><ul><ul><li>void setClass (<String> id, <String> className) </li></ul></ul><ul><ul><li>Sets the class name for a given element, removing any previously assigned class names. </li></ul></ul><ul><ul><li>void addClass (<String> id, <String> className) </li></ul></ul><ul><ul><li>Adds the class name for a given element, not removing any previously assigned class names, if existing. </li></ul></ul><ul><ul><li>void removeClass (<String> id, <String> className) </li></ul></ul><ul><ul><li>Removes a class name for a given element </li></ul></ul><ul><ul><li>boolean hasClass (<String> id, <String> className) </li></ul></ul><ul><ul><li>Verifies whether an element has a given style class name </li></ul></ul><ul><ul><li>void setStyle (<String> id, <String> property, <String> value) </li></ul></ul><ul><ul><li>Modifies a style property in a given element </li></ul></ul><ul><ul><li>void show (<String> id) </li></ul></ul><ul><ul><li>Shows (toggles display on) the element with a given id </li></ul></ul><ul><ul><li>void hide (<String> id) </li></ul></ul><ul><ul><li>Hides (toggles display off) the element with a given id </li></ul></ul>
  48. 48. User Interface Module (III) <ul><li>Utilities </li></ul><ul><ul><li>void addOptions (<String> id, <Object> options) </li></ul></ul><ul><ul><li>Adds a set of options to a select element </li></ul></ul><ul><ul><li>void removeOptions (<String> id) </li></ul></ul><ul><ul><li>Removes all the options present in a select element </li></ul></ul>
  49. 49. How to use them in your POs (I) <ul><li>Add the required platform scripts </li></ul><ul><li>Add a reference to your script files </li></ul><ul><li>Add the listeners you need </li></ul>
  50. 50. How to use them in your POs (II)
  51. 51. Consortium