Ord

baja. Ord

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 as baja:Weekday. For a Facets containing a Weekday to be fully
    constructed in the browser, the baja:Weekday Type 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 only decodeFromString(). 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, implement decodeAsync() 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 decodeFromString directly.

    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 the baja! plugin to preload all the types referenced by the
    default value of that frozen slot, so that decodeFromString would 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 get on the ORD
    Target to pass the object onto the ok function 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
with lease true.

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
agent query.

batch baja.comm.Batch <optional>

An optional object used to batch network
calls together.

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 newCopy method.

    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
made (only valid in the Component architecture).

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:

    1. First the ord is normalized.
    2. Starting from the left to right, if any queries are
      found which return true for isSession(), 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 resolve method requires an ok function 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
arguments.

Properties
Name Type Attributes Description
ok function <optional>

(Deprecated: use Promise) the ok function called
once the ORD has been successfully resolved. The ORD Target is passed to
this function when invoked.

fail function <optional>

(Deprecated: use Promise) the fail function
called if the ORD fails to resolve. An error cause is passed to this
function when invoked.

base <optional>

the base Object to resolve the ORD against.

lease Boolean <optional>

if defined and true, any Components are
temporarily subscribed.

leaseTime Number | baja.RelTime <optional>

the amount of time in
milliseconds to lease for (lease argument must be true). As well as a
Number, this can also be a baja.RelTime. If undefined, BajaScript's
default lease time will be used.

subscriber baja.Subscriber <optional>

if defined the Component is
subscribed using this Subscriber.

cursor Object <optional>

if defined, this specifies parameters for
iterating through a Cursor (providing the ORD resolves to a Collection
or Table). For more information, please see
baja.coll.tableMixIn.cursor.

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
variable names and their values

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 String representation 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, Ord or an Object.

    If an Object is passed in then if there's a base and child property,
    this will be used to construct the ORD. (If only base is present, and
    child is omitted or null, then just the base will be used.)
    Otherwise toString will be called on the Object for 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