new Ord()
- Description:
Object Resolution Descriptor.
An ORD is how we can access Objects in the Server from BajaScript. It's
similar to a URI but is much more powerful and extensible. For more
information, please see the Niagara developer documentation on ORDs and how
they're used.If more than one ORD needs to be resolved then use a baja.BatchResolve.
This Constructor shouldn't be invoked directly. Please use the
make()
methods to create an instance of an ORD.
- Source:
- See:
Example
Resolve an ORD
baja.Ord.make("station:|slot:/Folder/NumericWritable").get({ lease: true })
.then(function (numericWritable) {
baja.outln(numericWritable.getOutDisplay());
});
Extends
Members
(static) DEFAULT :baja.Ord
- Description:
Default ORD instance.
- Source:
Default ORD instance.
Type:
Methods
decodeAsync(str, batchopt) → {baja.Simple|Promise.<baja.Simple>}
- Description:
The string encoding of certain Simples may include Type information, or other data that may
require asynchronous operations to decode. For instance, some Simples may function as
"containers" for other Simples, and may include that Type information in the string encoding.
That Simple would then need to import those Types before it could be fully decoded in the
browser.baja.Facets is a great example of this. A Facets may contain FrozenEnum values that are
defined by Types, such asbaja:Weekday. For a Facets containing a Weekday to be fully
constructed in the browser, thebaja:WeekdayType must be imported first. Since importing
a Type may require a network call, this Facets instance might not be able to be constructed
synchronously, using onlydecodeFromString(). baja.Facets has itself implemented
decodeAsync()to import any necessary Types.When implementing a Type Extension for a Simple, if your Simple references arbitrary Types that
need to be imported when decoding your Simple, implementdecodeAsync()and perform any Type
imports (or other asynchronous operations) there.If you are writing code that decodes Simples from strings - that is, when you have a type spec
and string encoding, and you need to be able to decode any kind of Simple - favor the use of
decodeAsync, as it gives the individual Simple a chance to perform async operations to ensure
that the decoded Simple is fully correct.The default implementation just returns
decodeFromStringdirectly.Prior to Niagara 4.14,
decodeAsync()was only used in field editors. In 4.14 and later,
decodeAsync()will be used by BajaScript itself to support asynchronous decoding of Simples
when resolving ORDs and retrieving other data from the station.(Note:
decodeAsync()cannot be used by the framework to decode frozen slots. If you
have a frozen slot, whose definition is a Simple that would require the use of
decodeAsync()to construct it, it will not work. The best approach would be to implement a
Type Extension that would use thebaja!plugin to preload all the types referenced by the
default value of that frozen slot, so thatdecodeFromStringwould have all the information
it needed to construct it synchronously.)
- Source:
- Inherited From:
Example
return Promise.resolve(baja.$(simpleTypeSpec).decodeAsync(stringEncoding))
.then((simpleInstance) => {});
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
str |
string | ||
batch |
baja.comm.Batch |
<optional> |
optional batch to use |
Returns:
may return the Simple instance
directly, or a Promise resolving to same - so wrap in Promise.resolve()
if unsure.
- Type
- baja.Simple | Promise.<baja.Simple>
decodeFromString(str) → {baja.Ord}
- Description:
Decode an ORD from a
String.
- Source:
- Overrides:
Parameters:
| Name | Type | Description |
|---|---|---|
str |
String | the ORD String. |
Returns:
the decoded ORD.
- Type
- baja.Ord
encodeToString() → {String}
- Description:
Encode an ORD to a
String.
- Source:
- Overrides:
Returns:
the ORD encoded to a String.
- Type
- String
equals(obj) → {Boolean}
- Description:
Equality test.
- Source:
- Inherited From:
Parameters:
| Name | Type | Description |
|---|---|---|
obj |
Returns:
- Type
- Boolean
equivalent(obj) → {Boolean}
- Description:
Equivalence test.
equivalent()is used to compare if two Objects have equivalent
state, but might not want to return true for equals since it
it has implied semantics for many operations. The default
implementation returns the result of baja.Object#equals.
- Source:
- Inherited From:
Parameters:
| Name | Type | Description |
|---|---|---|
obj |
Returns:
- Type
- Boolean
get(objopt) → {Promise}
- Description:
Resolve the ORD and get the resolved Object from the ORD Target.
This method calls baja.Ord#resolve and calls
geton the ORD
Target to pass the object onto theokfunction callback.For more information on how to use this method please see
baja.Ord#resolve.
- Source:
- See:
-
- module:baja/ord/OrdTarget#resolve
Example
Resolve/get an ORD
baja.Ord.make("service:baja:UserService|slot:jack").get({ lease: true })
.then(function (user) {
baja.outln(user.get('fullName'));
})
.catch(function (err) {
baja.error('ORD failed to resolve: ' + err);
});
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
obj |
Object |
<optional> |
if no obj provided, this will call baja.Ord#resolve |
Returns:
a promise that will be resolved with the value specified
by the ORD.
- Type
- Promise
getAgents(isopt, batchopt) → {Promise}
- Description:
Returns a promise that resolves to the agent list for this Object.
- Source:
- Inherited From:
- See:
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
is |
Array.<String> |
<optional> |
An optional array of filters to add to the |
batch |
baja.comm.Batch |
<optional> |
An optional object used to batch network |
Returns:
A promise that will resolve with the Agent Info.
- Type
- Promise
getDataTypeSymbol() → {String}
- Description:
Return the data type symbol.
- Source:
Returns:
the Symbol used for encoding this data type (primarily
used for facets).
- Type
- String
getIcon() → {baja.Icon}
- Description:
Return the Object's Icon.
- Source:
- Inherited From:
Returns:
- Type
- baja.Icon
getType() → {Type}
- Description:
Get the type of this instance.
- Source:
- Inherited From:
Returns:
- Type
- Type
getTypeDisplayName(cxopt) → {Promise.<string>|string}
- Description:
Gets the friendly type display name for this object.
- Source:
- Since:
- Niagara 4.10
- Inherited From:
- See:
-
- baja.Type#getDisplayName
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
cx |
Object |
<optional> |
a context to be passed down to Type |
Returns:
If no context is provided, the type
display name is returned synchronously as a string. If context provided,
the type display name is resolved via a promise as a string.
- Type
- Promise.<string> | string
getVariables() → {Array.<string>}
- Source:
- Since:
- Niagara 4.10
Throws:
-
if a variable name is invalid or empty, or if a variable
declaration is malformed - Type
- Error
Returns:
an array of all variable names present in this ORD
- Type
- Array.<string>
hasVariables() → {boolean}
- Source:
- Since:
- Niagara 4.10
Throws:
-
if a variable name is invalid or empty, or if a variable
declaration is malformed - Type
- Error
Returns:
true if this ORD has any variables present
- Type
- boolean
isNull() → {boolean}
- Source:
- Since:
- Niagara 4.10
Returns:
if this represents the null ORD.
- Type
- boolean
make(ord) → {baja.Ord}
- Description:
Make an ORD.
- Source:
- Overrides:
- See:
Parameters:
| Name | Type | Description |
|---|---|---|
ord |
String | baja.Ord | Object |
Returns:
- Type
- baja.Ord
newCopy(exactopt)
- Description:
Every value may be cloned using the
newCopymethod.Please note that
Simples are immutable so they don't
allocate a new instance.
- Source:
- Inherited From:
- See:
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
exact |
Boolean |
<optional> |
true if an exact copy of the value should be |
Returns:
a copy of the value (or the same instance if the value is a
Simple).
normalize() → {baja.Ord}
- Description:
Return a normalized version of the ORD.
- Source:
Returns:
- Type
- baja.Ord
parse() → {baja.OrdQueryList}
- Description:
Parse an ORD to a number of ORD Query objects.
- Source:
Returns:
a list of ORDs to resolve.
- Type
- baja.OrdQueryList
relativizeToSession() → {baja.Ord}
- Description:
Relativize is used to extract the relative portion
of this ord within an session:- First the ord is normalized.
- Starting from the left to right, if any queries are
found which return true forisSession(), then remove
everything from that query to the left.
- Source:
- See:
Returns:
- Type
- baja.Ord
resolve(objopt) → {Promise.<Object>}
- Description:
Resolve an ORD.
Resolving an ORD consists of parsing and processing it to get a result.
The result is an ORD Target.Any network calls that result from processing an ORD are always
asynchronous.The
resolvemethod requires anokfunction callback or an object
literal that contains the method's arguments.Please note that unlike other methods that require network calls, no
batch object can be specified!
- Source:
- See:
Example
Resolve an ORD
baja.Ord.make("station:|slot:/").resolve({
lease: true // ensure any resolved Components are leased
})
.then(function (target) {
// process the ORD Target
})
.catch(function (err) {
// ORD failed to resolve
});
Parameters:
| Name | Type | Attributes | Description | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
obj |
Object |
<optional> |
the object literal that contains the method's Properties
|
Returns:
a promise that will be resolved with an
OrdTarget when the ORD has been resolved.
- Type
- Promise.<Object>
substitute(variables) → {baja.Ord}
- Description:
Substitute all variables in the ORD from the given variable map.
- Source:
- Since:
- Niagara 4.10
Parameters:
| Name | Type | Description |
|---|---|---|
variables |
baja.Facets | Object | a Facets or object literal containing |
Throws:
-
if a variable name is invalid or empty, or if a variable
declaration is malformed - Type
- Error
Returns:
an ORD with the variables substituted in
- Type
- baja.Ord
toString() → {String}
- Description:
Return an
Stringrepresentation of the object.
- Source:
- Overrides:
Returns:
a String representation of an ORD.
- Type
- String
toUri() → {String}
- Description:
Return the ORD as a URI that can be used in a browser.
- Source:
Returns:
- Type
- String
valueOf() → {String}
- Description:
Return the inner value of this
Object.
- Source:
- Overrides:
Returns:
a String representation of an ORD.
- Type
- String
(static) make(ord) → {baja.Ord}
- Description:
Make an ORD.
The argument can be a
String,Ordor anObject.If an
Objectis passed in then if there's abaseandchildproperty,
this will be used to construct the ORD. (If onlybaseis present, and
childis omitted or null, then just thebasewill be used.)
OtherwisetoStringwill be called on theObjectfor the ORD.
- Source:
Example
Resolve an ORD
baja.Ord.make("station:|slot:/Folder/NumericWritable").get({ lease: true })
.then(function (numericWritable) {
baja.outln(numericWritable.getOutDisplay());
});
Parameters:
| Name | Type | Description |
|---|---|---|
ord |
String | baja.Ord | Object |
Returns:
- Type
- baja.Ord
(static) replaceBackups(ord) → {baja.Ord}
- Description:
Slot and file path ord queries may contain "../" to do relative traversal up the tree. If
there is more than one backup, the ord will contain "/../", which will be replaced by the
browser within a URL by removing other sections. For example, https://127.0.0.1/a/b/c/d/../e/f
is converted to https://127.0.0.1/a/b/c/e/f and https://127.0.0.1/a/b/c/d/../../e/f is
converted to https://127.0.0.1/a/b/c/f. This will result in unintended behavior in subsequent
ord resolution with that URL. Therefore, all but the last "../" is replaced with {@code
":..|"}. This function replicates the behavior of BOrdUtil#replaceBackups.
- Source:
- Since:
- Niagara 4.3U1
Parameters:
| Name | Type | Description |
|---|---|---|
ord |
baja.Ord | ord that is searched for "../" backups |
Returns:
the original ord if no changes are necessary or an updated ord with the
necessary replacements
- Type
- baja.Ord