SolutionModel

(solutionModel)

Overview

SolutionModel provides runtime access to design-time objects in Servoy, enabling dynamic application modifications without recompilation. Developers can retrieve and modify forms, relations, media, and methods using methods like getForm(name), newForm(name), and getRelation(name). New components, forms, and relations can also be created or cloned dynamically.

Global methods and variables are managed with methods like newGlobalMethod(scopeName, code) and newGlobalVariable(scopeName, name, type). Existing ones can be removed using corresponding remove methods. Forms can be created with specific layouts and styles, made responsive, or reverted to their original configurations with revertForm(name).

The API supports argument wrapping for event handling with wrapMethodWithArguments(method, args) and allows management of value lists, media, and relations.

Returned Types

DEFAULTS,FONTSTYLE,SCROLLBAR,JSForm,JSDataSourceNode,JSCalculation,JSLayoutContainer,JSComponent,JSMethod,JSPart,JSRelation,JSRelationItem,JSMedia,JSValueList,JSVariable,JSPart,JSPart,JSComponent,JSResponsiveLayoutContainer,

Methods Summarized

Type
Name
Summary

Makes an exact copy of the given component (JSComponent/JSField/JSLabel) and gives it a new name.

Makes an exact copy of the given component (JSComponent/JSField/JSLabel), gives it a new name and moves it to a new parent form, specified as a parameter.

Makes an exact copy of the given form and gives it the new name.

Gets an array of all relations.

Gets the specified data source node and returns information about the form (see JSDataSourceNode node).

Gets the specified form object and returns information about the form (see JSForm node).

Get an array of all forms.

Get an array of forms, that are all based on datasource/servername.

Get an array of forms, that are all based on datasource/servername and tablename.

Gets an existing global method by the specified name.

The list of all global methods.

The list of all global methods.

Gets an existing global variable by the specified name.

Gets an array of all global variables.

Gets an array of all global variables.

Gets the specified media object; can be assigned to a button/label.

Gets the list of all media objects.

Retrieves an element by its uuid.

Gets an existing relation by the specified name and returns a JSRelation Object.

Gets an array of all relations; or an array of all global relations if the specified table is NULL.

Gets an array of all relations; or an array of all global relations if the specified table is NULL.

Gets an array of all scope names used.

Gets an existing valuelist by the specified name and returns a JSValueList Object that can be assigned to a field.

Gets an array of all valuelists for the currently active solution.

Creates a new JSForm Object.

Create a responsive form:

Creates a new form with the given JSForm as its super form.

Creates a new form with the given JSForm as its super form.

Creates a new global method with the specified code in a scope.

Creates a new global variable with the specified name and number type.

Creates a new media object that can be assigned to a label or a button.

Creates a new media object for things like a CSS or LESS file that can be set as the clients solution style.

Creates a new JSRelation Object with a specified name; includes the primary datasource, foreign datasource and the type of join for the new relation.

Creates a new valuelist with the specified name and number type.

Removes the specified form during the persistent connected client session.

Removes the specified global method.

Removes the specified global variable.

Removes the media item specified by name.

Removes the relation specified by name.

Removes the specified valuelist.

Reverts the specified form to the original (blueprint) version of the form; will result in an exception error if the form is not an original form.

Get a JSMethod instance with arguments to be assigned to an event.

Methods Detailed

cloneComponent(newName, component)

Makes an exact copy of the given component (JSComponent/JSField/JSLabel) and gives it a new name.

Parameters

  • String newName the new name of the cloned component

  • JSComponent component the component to clone

Returns: JSComponent the exact copy of the given component

Sample

cloneComponent(newName, component, newParentForm)

Makes an exact copy of the given component (JSComponent/JSField/JSLabel), gives it a new name and moves it to a new parent form, specified as a parameter.

Parameters

  • String newName the new name of the cloned component

  • JSComponent component the component to clone

  • JSForm newParentForm the new parent form

Returns: JSComponent the exact copy of the given component

Sample

cloneForm(newName, jsForm)

Makes an exact copy of the given form and gives it the new name.

Parameters

  • String newName the new name for the form clone

  • JSForm jsForm the form to be cloned

Returns: JSForm a JSForm

Sample

getAllRelations()

Gets an array of all relations.

Returns: Array an array of all relations (all elements in the array are of type JSRelation)

Sample

getDataSourceNode(dataSource)

Gets the specified data source node and returns information about the form (see JSDataSourceNode node). The JSDataSourceNode holds all calculations and foundset methods.

Parameters

  • String dataSource table data source

Returns: JSDataSourceNode a JSDataSourceNode

Sample

getForm(name)

Gets the specified form object and returns information about the form (see JSForm node).

Parameters

  • String name the specified name of the form

Returns: JSForm a JSForm

Sample

getForms()

Get an array of all forms.

Returns: Array an array of JSForm type elements

Sample

getForms(datasource)

Get an array of forms, that are all based on datasource/servername.

Parameters

  • String datasource the datasource or servername

Returns: Array an array of JSForm type elements

Sample

getForms(server, tablename)

Get an array of forms, that are all based on datasource/servername and tablename.

Parameters

  • String server the datasource or servername

  • String tablename the tablename

Returns: Array an array of JSForm type elements

Sample

getGlobalMethod(scopeName, name)

Gets an existing global method by the specified name.

Parameters

  • String scopeName the scope in which the method is searched

  • String name the name of the specified global method

Returns: JSMethod a JSMethod

Sample

getGlobalMethods()

The list of all global methods.

Returns: Array an array of JSMethod type elements

Sample

getGlobalMethods(scopeName)

The list of all global methods.

Parameters

  • String scopeName limit to global methods of specified scope name

Returns: Array an array of JSMethod type elements

Sample

getGlobalVariable(scopeName, name)

Gets an existing global variable by the specified name.

Parameters

  • String scopeName the scope in which the variable is searched

  • String name the specified name of the global variable

Returns: JSVariable a JSVariable

Sample

getGlobalVariables()

Gets an array of all global variables.

Returns: Array an array of JSVariable type elements

Sample

getGlobalVariables(scopeName)

Gets an array of all global variables.

Parameters

  • String scopeName limit to global vars of specified scope name

Returns: Array an array of JSVariable type elements

Sample

getMedia(name)

Gets the specified media object; can be assigned to a button/label.

Parameters

  • String name the specified name of the media object

Returns: JSMedia a JSMedia element

Sample

getMediaList()

Gets the list of all media objects.

Returns: Array a list with all the media objects.

Sample

getObjectByUUID(uuid)

Retrieves an element by its uuid.

Parameters

Returns: Object found element

Sample

getRelation(name)

Gets an existing relation by the specified name and returns a JSRelation Object.

Parameters

  • String name the specified name of the relation

Returns: JSRelation a JSRelation

Sample

getRelations(datasource)

Gets an array of all relations; or an array of all global relations if the specified table is NULL.

Parameters

  • String datasource the specified name of the datasource for the specified table

Returns: Array an array of all relations (all elements in the array are of type JSRelation)

Sample

getRelations(servername, tablename)

Gets an array of all relations; or an array of all global relations if the specified table is NULL.

Parameters

  • String servername the specified name of the server for the specified table

  • String tablename the specified name of the table

Returns: Array an array of all relations (all elements in the array are of type JSRelation)

Sample

getScopeNames()

Gets an array of all scope names used.

Returns: Array an array of String scope names

Sample

getValueList(name)

Gets an existing valuelist by the specified name and returns a JSValueList Object that can be assigned to a field.

NOTE: Changes to valuelist should be done before showing any form that has component using the valuelist.

Parameters

  • String name the specified name of the valuelist

Returns: JSValueList a JSValueList object

Sample

getValueLists()

Gets an array of all valuelists for the currently active solution.

NOTE: Changes to valuelist should be done before showing any form that has component using the valuelist.

Returns: Array an array of JSValueList objects

Sample

newForm(name)

Creates a new JSForm Object.

Parameters

  • String name the specified name of the form

Returns: JSForm a new JSForm object

Sample

newForm(name, isResponsive)

Create a responsive form:

Parameters

  • String name The name of the new form, must be a valid javascript identifier

  • Boolean isResponsive if true will create an responsive form, otherwise an absolute layout form

Returns: JSForm a new JSForm object

Sample

newForm(name, superForm)

Creates a new form with the given JSForm as its super form.

Parameters

  • String name The name of the new form

  • JSForm superForm the super form that will extended from, see JSform.setExtendsForm();

Returns: JSForm a new JSForm object

Sample

newForm(name, superForm, isResponsive)

Creates a new form with the given JSForm as its super form. Use this function in the case when the super form is a logical form (no parts/UI).

Parameters

  • String name The name of the new form, must be a valid javascript identifier

  • JSForm superForm the super form that will extended from, see JSform.setExtendsForm();

  • Boolean isResponsive ;

Returns: JSForm a new JSForm object

Sample

newForm(name, dataSource, isResponsive)

Create a responsive form:

Parameters

  • String name The name of the new form, must be a valid javascript identifier

  • String dataSource the form datasource

  • Boolean isResponsive if true will create an responsive form, otherwise an absolute layout form

Returns: JSForm a new JSForm object

Sample

newForm(name, dataSource, styleName, show_in_menu, width, height)

Creates a new JSForm Object.

NOTE: See the JSForm node for more information about form objects that can be added to the new form.

Parameters

  • String name the specified name of the form, must be a valid javascript identifier

  • String dataSource the specified name of the datasource for the specified table

  • String styleName the specified style

  • Boolean show_in_menu if true show the name of the new form in the menu; or false for not showing

  • Number width the width of the form in pixels

  • Number height the height of the form in pixels

Returns: JSForm a new JSForm object

Sample

newForm(name, serverName, tableName, styleName, show_in_menu, width, height)

Creates a new JSForm Object.

NOTE: See the JSForm node for more information about form objects that can be added to the new form.

Parameters

  • String name the specified name of the form

  • String serverName the specified name of the server for the specified table

  • String tableName the specified name of the table

  • String styleName the specified style

  • Boolean show_in_menu if true show the name of the new form in the menu; or false for not showing

  • Number width the width of the form in pixels

  • Number height the height of the form in pixels

Returns: JSForm a new JSForm object

Sample

newGlobalMethod(scopeName, code)

Creates a new global method with the specified code in a scope.

Parameters

  • String scopeName the scope in which the method is created

  • String code the specified code for the global method

Returns: JSMethod a JSMethod object

Sample

newGlobalVariable(scopeName, name, type)

Creates a new global variable with the specified name and number type.

NOTE: The global variable number type is based on the value assigned from the SolutionModel-JSVariable node; for example: JSVariable.INTEGER.

Parameters

  • String scopeName the scope in which the variable is created

  • String name the specified name for the global variable

  • Number type the specified number type for the global variable

Returns: JSVariable a JSVariable object

Sample

newMedia(name, bytes)

Creates a new media object that can be assigned to a label or a button.

Parameters

  • String name The name of the new media

  • Array bytes The content

Returns: JSMedia a JSMedia object

Sample

newMedia(name, bytes)

Creates a new media object for things like a CSS or LESS file that can be set as the clients solution style. The stringContents is converted to bytes through the UTF-8 charset.

Parameters

  • String name The name of the new media

  • Object bytes The content

Returns: JSMedia a JSMedia object

Sample

newRelation(name, primaryDataSource, foreignDataSource, joinType)

Creates a new JSRelation Object with a specified name; includes the primary datasource, foreign datasource and the type of join for the new relation.

Parameters

  • String name the specified name of the new relation

  • String primaryDataSource the specified name of the primary datasource

  • String foreignDataSource the specified name of the foreign datasource

  • Number joinType the type of join for the new relation; JSRelation.INNER_JOIN, JSRelation.LEFT_OUTER_JOIN

Returns: JSRelation a JSRelation object

Sample

newValueList(name, type)

Creates a new valuelist with the specified name and number type.

Parameters

  • String name the specified name for the valuelist

  • Number type the specified number type for the valuelist; may be JSValueList.CUSTOM_VALUES, JSValueList.DATABASE_VALUES, JSValueList.EMPTY_VALUE_ALWAYS, JSValueList.EMPTY_VALUE_NEVER

Returns: JSValueList a JSValueList object

Sample

removeForm(name)

Removes the specified form during the persistent connected client session.

NOTE: Make sure you call history.remove first in your Servoy method (script).

Parameters

  • String name the specified name of the form to remove

Returns: Boolean true is form has been removed, false if form could not be removed

Sample

removeGlobalMethod(scopeName, name)

Removes the specified global method.

Parameters

  • String scopeName the scope in which the method is declared

  • String name the name of the global method to be removed

Returns: Boolean true if the removal was successful, false otherwise

Sample

removeGlobalVariable(scopeName, name)

Removes the specified global variable.

Parameters

  • String scopeName the scope in which the variable is declared

  • String name the name of the global variable to be removed

Returns: Boolean true if the removal was successful, false otherwise

Sample

removeMedia(name)

Removes the media item specified by name.

Parameters

  • String name the name of the media item to be removed

Returns: Boolean true if the removal was successful, false otherwise

Sample

removeRelation(name)

Removes the relation specified by name. You cannot remove the relation if it is touched within the application. So even if you remove all the ui elements using it, like tabs, it still can't be removed, because of underlying created and cached data.

Parameters

  • String name the name of the relation to be removed

Returns: Boolean true if the removal was successful, false otherwise

Sample

removeValueList(name)

Removes the specified valuelist.

Parameters

  • String name name of the valuelist to be removed

Returns: Boolean true if the removal was successful, false otherwise

Sample

revertForm(name)

Reverts the specified form to the original (blueprint) version of the form; will result in an exception error if the form is not an original form.

NOTE: Make sure you call history.remove first in your Servoy method (script) or call form.controller.recreateUI() before the script ends.

Parameters

  • String name the specified name of the form to revert

Returns: JSForm a JSForm object

Sample

wrapMethodWithArguments(method, args)

Get a JSMethod instance with arguments to be assigned to an event.

Parameters

  • JSMethod method JSMethod to be assigned to an event

  • Array args positional arguments

Returns: JSMethod a JSMethod

Sample


Last updated

Was this helpful?