new bcdui.core.StaticModel(args)
Create a StaticModel and provide the data.
Name | Type | Description |
---|---|---|
args |
string | StaticModelParam | DomDocument | And XML string, which is parsed, an XML Document or a JSON object or any other kind of data |
Examples
// Provide data as a DataProvider
var myModel = new bcdui.core.StaticModel( " " );
myModel.execute();
var myAttr = myModel.getData().selectSingleNode("/Root/@myAttr").nodeValue;
// Provide data as a DataProvider with an id or use in a declarative context
var myModel = new bcdui.core.StaticModel({ id: "dayModel", data: " Mon Wed " });
myModel.execute();
bcdui.widgetNg.createSingleSelect({ targetHtml: "selectDayHtml", optionsModelXPath: "$dayModel/Values/V", targetModelXPath: "$guiStatus/guiStatus:Status/guiStatus:SelectedDay/@value" });
Extends
Members
-
constantidstring
-
A globally unique id of the object. DataProviders do also register themselves at bcdui.factory.objectRegistry when an id is provided to the constructor. This id is only needed in declarative contexts, like jsp or, when a DataProvider is accessed in a xPath like
. If not provided in the constructor, a random id starting with 'bcd' is set, but the object is not automatically registered. -
constantinitializedStatus
-
-
constantsavedStatus
-
Example
if( model.getStatus() === model.savedStatus ) ...
-
constantsaveFailedStatus
-
-
constanttransformedStatus
-
Methods
-
inherited addStatusListener(args)
-
Listen for any status to be reached. For use cases with the ready status (by far the most common), see onReady() and onceReady() convenience functions.
Name Type Description args
function | StatusListener | AddStatusListenerParam Either a function executed on all status transitions or a parameter map AddStatusListenerParam -
inherited debugIsWaitingFor(){string}
-
Returns:
Type Description string Human readable message, which DataProviders, this DataProvider depends on, are not currently in ready state -
inherited debugStatus(){string}
-
Returns:
Type Description string Human readable message about the current state state -
inherited execute(doesRefresh)
-
Executes the process implemented by the concrete sub-class.
Name Type Default Description doesRefresh
boolean true optional Set this parameter to "false" if this method should do nothing when the object is already in the ready status. The default is "true" meaning that the process is re-started when it is currently ready. -
inherited fetchData(){Promise}
-
asynchronously fetch data for this data provider.
Returns:
Type Description Promise resolving once data has been loaded, first argument is this instance Example
new bcdui.core.SimpleModel("data.xml").fetchData().then((dp)=>{ console.info(dp.getData()); })
-
inherited fire()
-
This informs modification listeners, registered via onChange(args), that a change set was completed and data is consistent again.
Example
// Use of data modification events var model = new bcdui.core.StaticModel({ data: { value: 3 } }); model.execute(); model.onChange( function(m) { console.log(m.getData().value); }); model.getData().value ++; model.fire(); // console prints '4'
-
getData(){DomDocument}
-
Returns:
Type Description DomDocument The data document provided in the constructor. -
inherited abstractgetFailedStatus(){Array.<bcdui.core.Status>}
-
Getter for the list of error statuses of this class. This implementation returns an empty list.
Returns:
Type Description Array.<bcdui.core.Status> The status objects corresponding to failures in the object's process. -
inherited getName(){string}
-
Getter for the name of the data provider. This name is for example used to set parameters names of a bcdui.core.TransformationChain.
Returns:
Type Description string The name of the data provider. This name should be unique within the scope it is used and is usually not globally unique (as the id). -
getReadyStatus(){bcdui.core.Status}
-
The status transitions of the class are as follows:
Initialized All variables have been initialized. RefreshingModelUpdaters ModelUpdaters are currently running. (execute) Transformed The data XML document has been generated. (ready) Returns:
Type Description bcdui.core.Status The ready state of the document. -
inherited getStatus(){bcdui.core.Status}
-
Getter for the status of this object. See bcdui.core.status for possible return values.
Returns:
Type Description bcdui.core.Status The current status. -
inherited hasFailed(){boolean}
-
Tests if the object has reached a failure status. These status codes are returned by the "getFailedStatus" method.
Returns:
Type Description boolean True, if the object's process has failed. -
inherited isClean(){boolean}
-
True, if DataProvider is ready and there are no uncommitted write transactions, see isReady() and fire().
Returns:
Type Description boolean -
inherited isReady(){boolean}
-
Tests if the current state is the readyStatus. This status is the same status as returned by "getReadyStatus".
Returns:
Type Description boolean True, if the object is ready. -
inherited onceReady(listenerObject)
-
Name Type Description listenerObject
function | OnceReadyParam Either a function to be called on ready status (i.e. onSuccess) or a parameter map OnceReadyParam. To listen for other states see addStatusListener() Example
myModel.onceReady({onSuccess: myCallback, executeIfNotReady: true})
-
inherited onChange(listenerObject, trackingXPath)
-
Name Type Description listenerObject
function | OnChangeParam Either a function to be called after changes or a parameter map OnChangeParam. Listeners can be removed with removeDataListener() trackingXPath
string optional xPath to monitor to monitor for changes -
inherited onReady(listenerObject)
-
Name Type Description listenerObject
function | OnReadyParam Either a function to be called on ready status (i.e. onSuccess) or a parameter map OnReadyParam. To listen for other states see addStatusListener() Example
myModel.onReady({onSuccess: function(){ console.log("ready") }, executeIfNotReady: true, onlyFuture: true})
-
inherited promptData()
-
Convenience method for debugging showing data in a prompt for copy-and-paste
-
inherited query(xPath, fillParams)
-
Reads a single node from a given xPath
Name Type Description xPath
string xPath to query fillParams
Object optional array or object holding the values for the dot placeholders in the xpath. Values with "'" get 'escaped' with a concat operation to avoid bad xpath expressions Returns:
single node or null if query fails -
inherited queryNodes(xPath, fillParams)
-
Get node list from a given xPath
Name Type Description xPath
string xPath to query fillParams
Object optional array or object holding the values for the dot placeholders in the xpath. Values with "'" get 'escaped' with a concat operation to avoid bad xpath expressions Returns:
node list or empty list if query fails -
inherited read(xPath, fillParams, defaultValue)
-
Reads the string value from a given xPath (or optionally return default value).
Name Type Description xPath
string xPath pointing to value (can include dot template placeholders which get filled with the given fillParams) fillParams
Object optional array or object holding the values for the dot placeholders in the xpath. Values with "'" get 'escaped' with a concat operation to avoid bad xpath expressions defaultValue
string optional default value in case xPath value does not exist Returns:
text value stored at xPath (or null if no text was found and no defaultValue supplied) -
inherited remove(xPath, fillParams, fire)
-
Deletes data at a given xPath from the model
Name Type Default Description xPath
string xPath pointing to the value fillParams
Object optional array or object holding the values for the dot placeholders in the xpath. Values with "'" get 'escaped' with a concat operation to avoid bad xpath expressions fire
boolean false optional if true a fire is triggered to notify data modification listener -
inherited removeDataListener(listenerObject)
-
Name Type Description listenerObject
string | function | RemoveDataListenerParam Either a listener function or id or a parameter map RemoveDataListenerParam. Listeners are added with onChange() -
inherited removeStatusListener(args)
-
Name Type Description args
function | StatusListener | RemoveStatusListenerParam The listener to be removed. This can either be a function or a StatusListener or a parameter map RemoveStatusListenerParam. -
inherited sendData()
-
Sends the current data to the original URL
-
inherited serialize()
-
Serialize dataprovider's data if available
Returns:
String containing the serialized data -
inherited setStatus(args)
-
Name Type Description args
Status -
toString(){string}
-
Debugging function showing a text for this model.
Returns:
Type Description string A summary of the model. -
inherited write(xPath, fillParams, value, fire)
-
Set a value to on a certain xPath and create the xPath where necessary. This combines Element.evaluate() for a single node with creating the path where necessary. It will prefer extending an existing start-part over creating a second one. After the operation the xPath (with the optional value) is guaranteed to exist (pre-existing or created or extended) and the addressed node is returned.
Name Type Default Description xPath
string xPath pointing to the node which is set to the value value or plain xPath to be created if not there. It tries to reuse all matching parts that are already there. If you provide for example "/n:Root/n:MyElem/@attr2" and there is already "/n:Root/n:MyElem/@attr1", then "/n:Root/n:MyElem" will be "re-used" and get an additional attribute attr2. Many expressions are allowed, for example "/n:Root/n:MyElem[@attr1='attr1Value']/n:SubElem" is also ok. By nature, some xPath expressions are not allowed, for example using '//' or "/n:Root/n:MyElem/[@attr1 or @attr2]/n:SubElem" is obviously not unambiguous enough and will throw an error. This method is Wrs aware, use for example '/wrs:Wrs/wrs:Data/wrs:*[2]/wrs:C[3]' as xPath and it will turn wrs:R[wrs:C] into wrs:M[wrs:C and wrs:O], see Wrs format. (can include dot template placeholders which get filled with the given fillParams) fillParams
Object optional array or object holding the values for the dot placeholders in the xpath. Values with "'" get 'escaped' with a concat operation to avoid bad xpath expressions Example: bcdui.wkModels.guiStatus.write("/guiStatus:Status/guiStatus:ClientSettings/guiStatus:Test[@caption='{{=it[0]}}' and @caption2='{{=it[1]}}']", ["china's republic", "drag\"n drop"]) value
string optional Optional value which should be written, for example to "/n:Root/n:MyElem/@attr" or with "/n:Root/n:MyElem" as the element's text content. If not provided, the xPath contains all values like in "/n:Root/n:MyElem[@attr='a' and @attr1='b']" or needs none like "/n:Root/n:MyElem" fire
boolean false optional If true a fire is triggered to inform data modification listeners Returns:
The xPath's node or null if dataProvider isn't ready