API Documentation

Classes

Lookup

Functions

createLookup(dataSource)Lookup

Creates a lookup object which can be used to show a pop-up form

createQueryLookup(qbSelect, [dsName], [overrideData])Lookup

Creates a read only, in-memory datasource from the given query and creates a Lookup for that

createValueListLookup(valuelistName, [titleText])Lookup

Creates a lookup object from a valuelist which can be used to show a pop-up form or a modal window

NOTE: Valuelist cannot be based on a database relation or a global method. Custom Valuelists can show up to 500 items in lookup.

Lookup


lookup.addField(dataProvider) ⇒ LookupField

Adds a field to the lookup object

Example

var lookupObj = scopes.svyLookup.createLookup(datasources.db.example_data.products.getDataSource());

lookupObj.addField('productname').setTitleText('Product');
lookupObj.addField('products_to_suppliers.companyname').setTitleText('Supplier');
lookupObj.addField('unitprice')
	.setSearchable(false)
	.setTitleText('Price')
	.setFormat('#,###.00')

lookup.addParam(param)

Add a params to be added into the onSelect callback arguments

Example

// create lookup object
var lookupObj = scopes.svyLookup.createLookup(datasources.db.example_data.products.getDataSource());
lookupObj.setLookupDataProvider("productname");

// custom param, define to which dataprovider the lookup result should be assigned
lookupObj.addParam({resultDataProvider: "productfk"});
lookupObj.showPopUp(onSelect, elements.productfk);

function onSelect(records, values, lookup) {
	if (values && values.length) {
		var resultDataProvider = lookup.getParams()[0].resultDataProvider;
		foundset[resultDataProvider] = values[0];
	}
}

lookup.addSelectedRecord(record)

Adds the given record to the list of selected records


lookup.clearParams()

Clear the params


lookup.clearSelectedRecords()

Clears the selection of this Lookup


lookup.createPopUp(callback, [initialValue]) ⇒ plugins.window.FormPopup

Creates and returns a Popup Form to be used to show the lookup


lookup.createWindow([x], [y], [width], [height], [jsWindowType]) ⇒ JSWindow

Returns: JSWindow - returns a JSWindow which can be used to show the lookup in it using lookup.showWindow(window)


lookup.getDataSource() ⇒ String

Gets the data source for this Lookup object


lookup.getField(index) ⇒ LookupField

Gets the field at the specified index


lookup.getFieldCount() ⇒ Number

Gets the number of fields in the lookup object


lookup.getFoundSet() ⇒ JSFoundSet

Gets the foundset for this Lookup object.


lookup.getLookupDataProvider() ⇒ String

Gets the lookup dataprovider


lookup.getLookupForm() ⇒ [ 'RuntimeForm' ].<AbstractLookup>

Returns the Lookup form instance used


lookup.getParams() ⇒ Array

Example

// create lookup object
var lookupObj = scopes.svyLookup.createLookup(datasources.db.example_data.products.getDataSource());
lookupObj.setLookupDataProvider("productname");

// custom param, define to which dataprovider the lookup result should be assigned
lookupObj.addParam({resultDataProvider: "productfk"});
lookupObj.showPopUp(onSelect, elements.productfk);

function onSelect(records, values, lookup) {
	if (values && values.length) {
		var resultDataProvider = lookup.getParams()[0].resultDataProvider;
		foundset[resultDataProvider] = values[0];
	}
}

lookup.getSelectedRecords() ⇒ [ 'Array' ].<JSRecord>

Returns the selected records for the lookup object Can be used to know which records have been previously selected by the user for this lookup


lookup.getSelectedValues() ⇒ [ 'Array' ].<JSRecord>

Returns the selected values based on the lookupDataProvider based on the lookupFormProvider. Can be used to know which values have been previously selected by the user for this lookup.

throws an exception if the lookupDataProvider has not been set


lookup.removeField(index)

Removes a field at the specified index


lookup.removeParam(index)

Removes a param at the specified index


lookup.removeSelectedRecord(record)

Removes the given record from the list of selected records


lookup.setLookupDataProvider(dataProvider)

Sets the lookup dataprovider Has to be a dataprovider or a related dataprovider of the lookup dataSource Setting the lookup dataprovider will return the selected dataprovider values in the lookup callback

Example

var lookupObj = scopes.svyLookup.createLookup(datasources.db.example_data.products.getDataSource());
// set the lookup dataprovider to productid
lookupObj.setLookupDataProvider("productid");

// add fields
lookupObj.addField('productname').setTitleText('Product');
lookupObj.addField('products_to_suppliers.companyname').setTitleText('Supplier');
lookupObj.addField('unitprice')
	.setSearchable(false)
	.setTitleText('Price')
	.setFormat('#,###.00')
		
// show pop-up
lookupObj.showPopUp(onSelect, elements.setProduct, controller.getFormWidth()/2, 412);

//because i have set the lookupDataProvider as productid values contains the selected productid (if any selected)
function onSelect(record, values, lookup){
  if (values && values.length) {
	  foundset.productid = values[0];
  }
}

lookup.setLookupForm(lookupForm)

Sets the lookup form used as template for the lookup popup/dialog The lookup form must extend the abstract form AbstractLookup

Example

var lookupObj = scopes.svyLookup.createLookup(datasources.db.example_data.products.getDataSource());
// lookup template with NG Table
lookupObj.setLookupForm(forms.svyLookupNGTable);

var lookupObjMulti = scopes.svyLookup.createLookup(datasources.db.example_data.products.getDataSource());
lookupObjMulti.setMultiSelect(true);
// lookup template with NG Table
lookupObjMulti.setLookupForm(forms.svyLookupNGTableMulti);

lookup.setMultiSelect(multiSelect) ⇒ Lookup

Allows this Lookup to multi select records The lookup form used will be changed when the instance set does not match the multi select setting


lookup.setSelectedPks(pks)

Sets the selected records of this Lookup from the given primary keys Can be used to restore the user's selection from a previous user's session


lookup.setSelectedRecords(records)

Sets the selected records of this Lookup Can be used to restore the user's selection from a previous user's session


lookup.setSelectedValues(values)


lookup.showModalWindow([callback], [x], [y], [width], [height], [initialValue]) ⇒ Array.<JSRecord> | Array.<(String|Date|Number)>

Shows the lookup in a modal Window

Returns: Array.<JSRecord> | Array.<(String|Date|Number)> - returns the selected records; if the lookupDataprovider has been set instead it returns the lookupDataprovider values on the selected records. Returns null if the window is closed without a selection or an empty selection


lookup.showPopUp(callback, target, [width], [height], [initialValue])

Shows the lookup as a Popup Form


lookup.showWindow(win, [callback], [initialValue]) ⇒ Array.<JSRecord> | Array.<(String|Date|Number)>

Shows the lookup in a Window

Returns: Array.<JSRecord> | Array.<(String|Date|Number)> - returns the selected records; if the lookupDataprovider has been set instead it returns the lookupDataprovider values on the selected records. Returns null if the window is closed without a selection or an empty selection


new Lookup(datasource)


createLookup(dataSource) ⇒ Lookup

Creates a lookup object which can be used to show a pop-up form

Example

function onActionAddProducts(event) {
	var lookupObj = scopes.svyLookup.createLookup(datasources.db.example_data.products.getDataSource());

 // allow multi-selection
	lookupObj.setMultiSelect(true);
	
	// add searchable fields 
	lookupObj.addField('productname').setTitleText('Product');
	lookupObj.addField('products_to_suppliers.companyname').setTitleText('Supplier');
	lookupObj.addField('unitprice')
		.setSearchable(false)
		.setTitleText('Price')
		.setFormat('#,###.00')
	
	// show pop-up
	lookupObj.showPopUp(onSelect, elements.btnNewProduct, controller.getFormWidth()/2, 412);
}

// lookup callback. Add products into current order 
function onSelect(records, values, lookup){
	if(records){
		records.forEach(function(rec){
			
			if(foundset.selectRecord(foundset.orderid,rec.productid)) {
				// increase quantity if product already in order
				foundset.quantity = foundset.quantity + 1;
			} else {
				// create a new order line for each product selected in lookup
				var newRec = foundset.getRecord(foundset.newRecord())
				newRec.discount = 0;
				newRec.quantity = 1;
				newRec.unitprice = rec.unitprice;
				newRec.productid = rec.productid;
			}
		})
	 }
}

createQueryLookup(qbSelect, [dsName], [overrideData]) ⇒ Lookup

Creates a read only, in-memory datasource from the given query and creates a Lookup for that

Example

  //distinct query for the value
  var qbSelect = datasources.db.example_data.order_details.createSelect();
  qbSelect.result.add(qbSelect.joins.order_details_to_products.columns.productname, "productname");
  qbSelect.result.add(qbSelect.columns.productid, "productid");
  qbSelect.result.distinct = true;
  qbSelect.sort.add(qbSelect.joins.order_details_to_products.columns.productname);

  //create lookup and set form provider
  var lookupObj = scopes.svyLookup.createQueryLookup(qbSelect, 'ordered_products');
  
  //set proper header title for field
  var lookupField = lookupObj .getField(0);
  lookupField.setTitleText("Product");
  
  // show the lookup
  lookupObj.showPopUp(onSelect, elements.productid);

  // handle selection
  function onSelect(records, values, lookup) {
	    var selectedLookupValues = records.length ? records[0].productid : null;
  }

createValueListLookup(valuelistName, [titleText]) ⇒ Lookup

Creates a lookup object from a valuelist which can be used to show a pop-up form or a modal window

NOTE: Valuelist cannot be based on a database relation or a global method. Custom Valuelists can show up to 500 items in lookup.

Example

// create the lookup using the valuelist productsTable
var lookupObj = scopes.svyLookup.createValueListLookup("productsTable", "Product");

// show the lookup
lookupObj .showPopUp(onSelect, elements.productid);

// handle selection
function onSelect(records, values, lookup) {
	 var selectedLookupValues = values.length ? values[0] : null;
}

Last updated