Skip to main content
Pentaho Documentation

Type

pentaho.type. Type

The root class of types that can be represented by the Pentaho Type API.

For additional information, see the associated instance class, pentaho.type.Instance.

Constructor

Name Description
new Type(spec, keyArgs)

Initializes the type's singleton object.

Members

Name Description
_isLabelSet :  boolean
Protected

Gets a value that indicates if the label is locally set.

alias :  nonEmptyString

Gets the alias for the identifier of this type.

ancestor :  pentaho.type.Type

Gets the parent type in the current type hierarchy, if any, or null.

application :  object

Gets or sets the application attribute of this type.

category :  nonEmptyString

Gets or sets the category associated with this type.

description :  nonEmptyString

Gets or sets the description of this type.

elementType :  pentaho.type.Type

Gets the element type of this type.

hasDescendants :  boolean

Gets a value that indicates if this type has any descendant types.

helpUrl :  nonEmptyString

Gets or sets a URL pointing to documentation associated with this type.

id :  nonEmptyString

Gets the identifier of this type.

instance :  pentaho.type.Instance

Gets the prototype of the instances of this type.

isAbstract :  boolean

Gets a value that indicates if this type is abstract.

isAdvanced :  boolean

Gets or sets the isAdvanced attribute of this type.

isBrowsable :  boolean

Gets or sets the isBrowsable attribute of this type.

isComplex :  boolean

Gets a value that indicates if this type is a complex type.

isContainer :  boolean

Gets a value that indicates if this type is a list or a complex type.

isContinuous :  boolean

Gets a value that indicates if this is a continuous type.

isElement :  boolean

Gets a value that indicates if this type is an element type.

isList :  boolean

Gets a value that indicates if this type is a list type.

isProperty :  boolean

Gets a value that indicates if this type is a property type.

isRoot :  boolean

Gets a value that indicates if this type is the root of its type hierarchy.

isSimple :  boolean

Gets a value that indicates if this type is a simple type.

isValue :  boolean

Gets a value that indicates if this type is a value type.

label :  nonEmptyString

Gets or sets the label of this type.

mixins :  Array.<pentaho.type.Type>

Gets or sets the mixin types that are locally mixed into this type.

ordinal :  number

Gets or sets the ordinal associated with this type.

root :  pentaho.type.Type

Gets the root type of this type hierarchy.

shortId :  nonEmptyString

Gets the short identifier of this type.

sourceId :  nonEmptyString

Gets the source module identifier of this type.

uid :  number

Gets the unique identifier of this type.

Methods

Name Description
_assertNoSubtypesAttribute(attributeName)
Protected

Asserts that the type has no subtypes and that as such the given attribute can be set.

_fillSpecInContext(spec, keyArgs) : boolean
Protected

Fills the given specification with this type's attributes' local values, and returns whether any attribute was actually added.

_getLabelDefault() : string
Protected

Gets the default label to use when the label is not set.

_init(spec, keyArgs) : object
Protected

Performs initialization tasks that take place before the instance is extended with its specification.

_postInit(spec, keyArgs)
Protected

Performs initialization tasks that take place after the instance is extended with its specification.

_toSpecInContextCore(keyArgs) : pentaho.type.spec.IType
Protected

Called to actually create a specification of this anonymous type, when it is the first time that this type occurs in the ambient specification context.

create(instSpec, instKeyArgs) : pentaho.type.Instance

Creates or resolves an instance of this type given an instance reference.

createAsync(instSpec, instKeyArgs) : Promise.<pentaho.type.Instance>

Creates or resolves an instance of this type, asynchronously, given an instance reference.

is(value) : boolean

Determines if a value is an instance of this type.

isSubtypeOf(superType) : boolean

Determines if this is a subtype of another.

to(value, keyArgs) : pentaho.type.Instance

Converts a value to an instance of this type, if it is not one already.

toJSON() : JsonValue

Creates a JSON specification that describes this type.

toSpec(keyArgs) : pentaho.type.spec.TypeReference

Creates a specification that describes this type.

toSpecInContext(keyArgs) : pentaho.type.spec.TypeReference

Creates a specification that describes this type.

toString() : string

Returns a textual representation suitable to identify this type in an error message.

Constructor Details

new Type(spec, keyArgs)

Initializes the type's singleton object.

Source: javascript/web/pentaho/type/InstanceType.js, line 51

Parameters:
Name Default Value Summary
spec : object

The specification of this type.

keyArgs : object

Keyword arguments.

Parameters:
Name Default Value Summary
instance : pentaho.type.Instance

The prototype of the Instance class associated with this type.

isRoot : boolean
Optional
false

Indicates if the type is a root type.

Members Details

_isLabelSet:  boolean
Protected

Gets a value that indicates if the label is locally set.

Source: javascript/web/pentaho/type/InstanceType.js, line 652

alias:  nonEmptyString

Gets the alias for the identifier of this type.

The alias of a type can only be specified when extending the ancestor type.

This attribute is not inherited.

When unspecified, defaults to null.

Source: javascript/web/pentaho/type/InstanceType.js, line 515

See also: pentaho.type.Type#id

ancestor:  pentaho.type.Type

Gets the parent type in the current type hierarchy, if any, or null.

The root type returns null.

Source: javascript/web/pentaho/type/InstanceType.js, line 265

See also: pentaho.type.Type#root , pentaho.type.Type#hasDescendants

application:  object

Gets or sets the application attribute of this type.

The application property serves as a collection of properties specific to the container application that can be modified via the Configuration Service.

Setting this to a Nully value will have no effect.

Source: javascript/web/pentaho/type/InstanceType.js, line 670

category:  nonEmptyString

Gets or sets the category associated with this type.

The category is used primarily to group similar types (or instances of) in a user interface.

Attempting to set to a non-string value type implicitly converts the value to a string before assignment.

Setting this to undefined causes this attribute to use the inherited value, except for the root type, Instance.type (which has no ancestor), where the attribute is null.

Setting this to null or to an empty string clears the attribute and sets it to null, thus ignoring any inherited value.

Source: javascript/web/pentaho/type/InstanceType.js, line 739

See also: pentaho.type.Type#isBrowsable , pentaho.type.Type#ordinal

description:  nonEmptyString

Gets or sets the description of this type.

Attempting to set to a non-string value type implicitly converts the value to a string before assignment.

Setting this to undefined causes this attribute to use the inherited value, except for the root type, Instance.type (which has no ancestor), where this attribute is null.

Setting this to null or to an empty string clears the attribute and sets it to null, ignoring any inherited value.

Source: javascript/web/pentaho/type/InstanceType.js, line 699

elementType:  pentaho.type.Type

Gets the element type of this type.

If this type is a list type, returns its of attribute. Otherwise, this type is an element type, and it returns itself.

Source: javascript/web/pentaho/type/InstanceType.js, line 420

See also: pentaho.type.Type#isList , pentaho.type.Type#isElement , pentaho.type.ListType#of

hasDescendants:  boolean

Gets a value that indicates if this type has any descendant types.

Source: javascript/web/pentaho/type/InstanceType.js, line 278

See also: pentaho.type.Type#ancestor

helpUrl:  nonEmptyString

Gets or sets a URL pointing to documentation associated with this type.

Attempting to set to a non-string value type implicitly converts the value to a string before assignment.

Setting this to undefined causes this attribute to use the inherited value, except for the root type, Instance.type (which has no ancestor), where the attribute is null.

Setting this to null or to an empty string clears the attribute and sets it to null, ignoring any inherited value.

Source: javascript/web/pentaho/type/InstanceType.js, line 775

id:  nonEmptyString

Gets the identifier of this type.

The identifier of a type can only be specified when extending the ancestor type.

The identifier is only defined for types which have an associated AMD/RequireJS module. However, note that all have a pentaho.type.Type#uid.

This attribute is not inherited.

When unspecified, defaults to the value of sourceId.

Source: javascript/web/pentaho/type/InstanceType.js, line 449

See also: pentaho.type.Type#sourceId

instance:  pentaho.type.Instance

Gets the prototype of the instances of this type.

Source: javascript/web/pentaho/type/InstanceType.js, line 290

isAbstract:  boolean

Gets a value that indicates if this type is abstract.

This attribute can only be set once, upon the type definition.

Source: javascript/web/pentaho/type/InstanceType.js, line 538

Default Value: false

isAdvanced:  boolean

Gets or sets the isAdvanced attribute of this type.

Types with isAdvanced attributes set to false are typically immediately accessible to the user. An advanced type typically escapes the expected flow of utilization, yet it is sufficiently relevant to be shown in a user interface.

Setting this to a Nully value causes this attribute to use the inherited value, except for the root type, Instance.type (which has no ancestor), where the attribute is false.

Source: javascript/web/pentaho/type/InstanceType.js, line 842

See also: pentaho.type.Type#isBrowsable

isBrowsable:  boolean

Gets or sets the isBrowsable attribute of this type.

Browsable types are exposed to the end user. Set this attribute to false to prevent exposing the type in a user interface.

Setting this to a Nully value causes this attribute to use the inherited value, except for the root type, Instance.type (which has no ancestor), where the attribute is true.

Source: javascript/web/pentaho/type/InstanceType.js, line 808

isComplex:  boolean

Gets a value that indicates if this type is a complex type.

Source: javascript/web/pentaho/type/InstanceType.js, line 374

isContainer:  boolean

Gets a value that indicates if this type is a list or a complex type.

Source: javascript/web/pentaho/type/InstanceType.js, line 339

isContinuous:  boolean

Gets a value that indicates if this is a continuous type.

A non-continuous type is said to be categorical.

The default implementation returns false.

The types pentaho.type.Number and pentaho.type.Date are known to be continuous.

Source: javascript/web/pentaho/type/InstanceType.js, line 402

isElement:  boolean

Gets a value that indicates if this type is an element type.

Source: javascript/web/pentaho/type/InstanceType.js, line 363

isList:  boolean

Gets a value that indicates if this type is a list type.

Source: javascript/web/pentaho/type/InstanceType.js, line 351

isProperty:  boolean

Gets a value that indicates if this type is a property type.

Source: javascript/web/pentaho/type/InstanceType.js, line 326

isRoot:  boolean

Gets a value that indicates if this type is the root of its type hierarchy.

Source: javascript/web/pentaho/type/InstanceType.js, line 249

See also: pentaho.type.Type#root

isSimple:  boolean

Gets a value that indicates if this type is a simple type.

Source: javascript/web/pentaho/type/InstanceType.js, line 386

isValue:  boolean

Gets a value that indicates if this type is a value type.

Source: javascript/web/pentaho/type/InstanceType.js, line 314

label:  nonEmptyString

Gets or sets the label of this type.

When set to a non-Nully and non-String value, the value is first replaced by the result of calling its toString method.

When set to an empty string or a nully value, the attribute value is reset.

When reset, the attribute assumes its default value (except on the top-root type, Instance.type, in which case it has no effect).

The default value is the inherited value.

The initial value of the attribute on the top-root type is "instance".

Source: javascript/web/pentaho/type/InstanceType.js, line 613

mixins:  Array.<pentaho.type.Type>

Gets or sets the mixin types that are locally mixed into this type.

Can be set to either type identifiers, instance classes or type instances and arrays thereof.

The attributes defined by the added mixin types become available for extension/configuration on this type. When extending, mixins are always applied first.

When set to a Nully value, nothing is done.

Source: javascript/web/pentaho/type/InstanceType.js, line 557

ordinal:  number

Gets or sets the ordinal associated with this type.

The ordinal is used to disambiguate the order with which a type (or an instance of it) is shown in a user interface.

Setting this to a Nully value causes this attribute to use the inherited value, except for the root type, Instance.type (which has no ancestor), where the attribute is 0.

Source: javascript/web/pentaho/type/InstanceType.js, line 875

See also: pentaho.type.Type#isBrowsable , pentaho.type.Type#category

root:  pentaho.type.Type

Gets the root type of this type hierarchy.

Even though the ultimate type root of types defined in this system is Instance, the system is designed to represent multiple type hierarchies, each representing concrete, more meaningful concepts.

When deriving a type from Instance, it can be marked as the root of a type hierarchy, by specifying the isRoot keyword argument to extend.

Typically, root types are immediate subtypes of Instance. However, this is not enforced and it is up to the developer to decide at what level a practical, meaningful type root arises.

For example, Value is the root of value types. However, Property, also an immediate subtype of Instance, is not considered a root type. It is the immediate subtypes of Property (each root property within a complex type) which are considered roots. This aligns with users expectations of what an attribute named root in a property type should mean.

Source: javascript/web/pentaho/type/InstanceType.js, line 206

See also: pentaho.type.Type#isRoot , pentaho.type.Type#ancestor

shortId:  nonEmptyString

Gets the short identifier of this type.

The short identifier of a type is equal to its alias, provided it is defined. Otherwise, it is equal to the identifier.

Source: javascript/web/pentaho/type/InstanceType.js, line 492

See also: pentaho.type.Type#id , pentaho.type.Type#alias

sourceId:  nonEmptyString

Gets the source module identifier of this type.

The source identifier is the module identifier of the actual AMD/RequireJS module that provides the type and may be different from the identifier when an AMD package or custom mapping is configured for the module.

The source identifier is used to resolve module identifiers relative to the source module.

The source identifier of a type can only be specified when extending the ancestor type.

This attribute is not inherited.

When unspecified, defaults to the value of id.

Source: javascript/web/pentaho/type/InstanceType.js, line 477

See also: pentaho.type.Type#id

uid:  number

Gets the unique identifier of this type.

Unique type identifiers are auto-generated in each session.

Note that even anonymous types (those whose pentaho.type.Type#id is null) have a unique identifier.

This attribute is not inherited.

Source: javascript/web/pentaho/type/InstanceType.js, line 200

Methods Details

_assertNoSubtypesAttribute(attributeName)
Protected

Asserts that the type has no subtypes and that as such the given attribute can be set.

Source: javascript/web/pentaho/type/InstanceType.js, line 1045

Parameters:
Name Default Value Summary
attributeName : string

The name of the attribute being set.

Throws:
Name Description
pentaho.lang.OperationInvalidError

When setting and the type already has subtypes.

_fillSpecInContext(spec, keyArgs) : boolean
Protected

Fills the given specification with this type's attributes' local values, and returns whether any attribute was actually added.

This method requires that there currently exists an ambient specification context.

This method does not add the special id and base attributes to the specification.

Source: javascript/web/pentaho/type/InstanceType.js, line 1248

Parameters:
Name Default Value Summary
spec : object

The specification to be filled.

keyArgs : object
Optional

The keyword arguments object. Passed to every type and instance serialized within this scope.

Please see the documentation of subclasses for information on additional, supported keyword arguments.

Returns:
Name Description
boolean

Returns true if any attribute was added; false, otherwise.

See also: pentaho.type.Instance#toSpecInContext

_getLabelDefault() : string
Protected

Gets the default label to use when the label is not set.

Source: javascript/web/pentaho/type/InstanceType.js, line 641

Returns:
Name Description
string | null

The default label or an empty value.

_init(spec, keyArgs) : object
Protected

Performs initialization tasks that take place before the instance is extended with its specification.

This method is typically overridden to block the inheritance of certain attributes.

Source: javascript/web/pentaho/type/InstanceType.js, line 164

Parameters:
Name Default Value Summary
spec : object

The specification of this type.

keyArgs : object

Keyword arguments.

Parameters:
Name Default Value Summary
instance : pentaho.type.Instance

The prototype of the Instance class associated with this type.

isRoot : boolean
Optional
false

If true, creates a root type.

Returns:
Name Description
object | null

A specification to use instead of the given spec argument to extend the type, or undefined, to use the given specification.

_postInit(spec, keyArgs)
Protected

Performs initialization tasks that take place after the instance is extended with its specification.

This method is typically overridden to validate or default the values of the attributes.

Source: javascript/web/pentaho/type/InstanceType.js, line 182

Parameters:
Name Default Value Summary
spec : object

The specification of this type.

keyArgs : object

Keyword arguments.

_toSpecInContextCore(keyArgs) : pentaho.type.spec.IType
Protected

Called to actually create a specification of this anonymous type, when it is the first time that this type occurs in the ambient specification context.

Source: javascript/web/pentaho/type/InstanceType.js, line 1197

Parameters:
Name Default Value Summary
keyArgs : object

The keyword arguments object. Passed to every type and instance serialized within this scope.

Please see the documentation of subclasses for information on additional, supported keyword arguments.

Returns:
Name Description
pentaho.type.spec.IType

A specification of this type.

See also: pentaho.type.Type#_toSpecInContextCore

create(instSpec, instKeyArgs) : pentaho.type.Instance

Creates or resolves an instance of this type given an instance reference.

This method delegates to InstancesContainer#get with this type as the typeBase argument.

Source: javascript/web/pentaho/type/InstanceType.js, line 977

Parameters:
Name Default Value Summary
instSpec : pentaho.type.Instance | pentaho.type.spec.Instance
Optional

An instance or instance specification.

instKeyArgs : object
Optional

The keyword arguments passed to the instance constructor, when one is created.

Returns:
Name Description
pentaho.type.Instance

The created instance or the resolved instance (possibly null).

Throws:
Name Description
Error

Other errors, as documented in: InstancesContainer#get.

See also: pentaho.type.Type#createAsync , pentaho.type.Type#to , pentaho.type.Type#is

Examples

Create a complex instance from a specification that contains the type inline.

require(["pentaho/type/Instance", "pentaho/type/standard"], function(Instance) {

 var product = Instance.type.create({
 _: {
 props: ["id", "name", {name: "price", valueType: "number"}]
 },

 id: "mpma",
 name: "Principia Mathematica",
 price: 1200
 });

 // ...

});

Create a list instance from a specification that contains the type inline.

require(["pentaho/type/Instance", "pentaho/type/standard"], function(Instance) {

 var productList = Instance.type.create({
 _: [{
 props: ["id", "name", {name: "price", valueType: "number"}]
 }],

 d: [
 {id: "mpma", name: "Principia Mathematica", price: 1200},
 {id: "flot", name: "The Laws of Thought", price: 500}
 ]
 });

 // ...

});

Create an instance from a specification that does not contain the type inline.

require(["pentaho/type/Instance", "pentaho/type/standard"], function(Instance) {

 var ProductList = Instance.type.create([{
 props: [
 "id",
 "name",
 {name: "price", valueType: "number"}
 ]
 }]);

 // Provide the default type, in case the instance spec doesn't provide one.
 var productList = ProductList.type.create([
 {id: "mpma", name: "Principia Mathematica", price: 1200},
 {id: "flot", name: "The Laws of Thought", price: 500}
 ]);

 // ...

});
createAsync(instSpec, instKeyArgs) : Promise.<pentaho.type.Instance>

Creates or resolves an instance of this type, asynchronously, given an instance reference.

This method delegates to InstancesContainer#getAsync with this type as the typeBase argument.

Source: javascript/web/pentaho/type/InstanceType.js, line 998

Parameters:
Name Default Value Summary
instSpec : pentaho.type.Instance | pentaho.type.spec.Instance
Optional

An instance or instance specification.

instKeyArgs : object
Optional

The keyword arguments passed to the instance constructor, when one is created.

Returns:
Name Description
Promise.<pentaho.type.Instance>

A promise to the created instance or resolved instance (possibly null).

See also: pentaho.type.Type#create

is(value) : boolean

Determines if a value is an instance of this type.

Source: javascript/web/pentaho/type/InstanceType.js, line 1059

Parameters:
Name Default Value Summary
value : *

The value to test.

Returns:
Name Description
boolean

true if the value is an instance of this type; false, otherwise.

isSubtypeOf(superType) : boolean

Determines if this is a subtype of another.

A type is considered a subtype of itself.

Source: javascript/web/pentaho/type/InstanceType.js, line 1071

Parameters:
Name Default Value Summary
superType : pentaho.type.Type

The candidate super-type.

Returns:
Name Description
boolean

true if this is a subtype of superType type; false, otherwise.

to(value, keyArgs) : pentaho.type.Instance

Converts a value to an instance of this type, if it is not one already.

If a Nully value is specified, null is returned.

Otherwise, if a given value is not already an instance of this type (checked using is), this method delegates the creation of an instance to create.

Source: javascript/web/pentaho/type/InstanceType.js, line 1092

Parameters:
Name Default Value Summary
value : *

The value to convert.

keyArgs : object
Optional

The keyword arguments passed to create, when a new instance is created.

Returns:
Name Description
pentaho.type.Instance | null

The converted value or null.

toJSON() : JsonValue

Creates a JSON specification that describes this type.

Attributes which do not have a JSON-compatible specification are omitted. Specifically, attributes with a function value are not supported.

This method simply calls pentaho.type.Instance#toSpec with argument keyArgs.isJson as true and exists for seamless integration with JavaScript's JSON.stringify method.

Source: javascript/web/pentaho/type/InstanceType.js, line 1223

Returns:
Name Description
JsonValue | null

A JSON-compatible specification.

See also: pentaho.type.Instance#toSpec

toSpec(keyArgs) : pentaho.type.spec.TypeReference

Creates a specification that describes this type.

If an ambient specification context, currently exists, it is used to manage the serialization process. Otherwise, one is created and set as current.

This method creates a new pentaho.type.SpecificationScope for describing this type, and any other instances and types it references, and then delegates the actual work to pentaho.type.Type#toSpecInContext.

This method returns a reference to this type that is appropriate to be the value of an inline type property that is included on a specification of an instance of this type.

When a type has an identifier, its id (or its alias) is returned.

For anonymous types, a temporary, serialization-only identifier is generated. In the first occurrence in the given scope, that identifier is returned, within a full specification of the type, obtained by calling toSpecInContext. In following occurrences, only the previously used temporary identifier is returned.

Source: javascript/web/pentaho/type/InstanceType.js, line 1137

Parameters:
Name Default Value Summary
keyArgs : object
Optional

The keyword arguments object. Passed to every type and instance serialized within this scope.

Please see the documentation of subclasses for information on additional, supported keyword arguments.

Parameters:
Name Default Value Summary
isJson : boolean
Optional
false

Generates a JSON-compatible specification. Attributes that do not have a JSON-compatible specification are omitted.

Returns:
Name Description
pentaho.type.spec.TypeReference

A reference to this type.

See also: pentaho.type.Type#toSpecInContext , pentaho.type.Type#_fillSpecInContext

toSpecInContext(keyArgs) : pentaho.type.spec.TypeReference

Creates a specification that describes this type.

This method requires that there currently exists an ambient specification context.

This method handles the cases where this type has an identifier or it does not but a temporary identifier has already been assigned in the ambient specification context. Otherwise, execution delegates to _toSpecInContextCore.

Source: javascript/web/pentaho/type/InstanceType.js, line 1166

Parameters:
Name Default Value Summary
keyArgs : object
Optional

The keyword arguments object. Passed to every type and instance serialized within this scope.

Please see the documentation of subclasses for information on additional, supported keyword arguments.

Returns:
Name Description
pentaho.type.spec.TypeReference

A reference to this type.

See also: pentaho.type.Type#toSpec

toString() : string

Returns a textual representation suitable to identify this type in an error message.

Source: javascript/web/pentaho/type/InstanceType.js, line 1293

Returns:
Name Description
string

A textual representation.