Skip to main content

Example

Step-by-step JDito RecordContainer implementation

  1. Create table MYTEST:

    • MYTESTID: char(36)
    • MYNUMBERFIELD: int
    • MYTEXTFIELD: varchar(50)
  2. Update the Alias Definition.

  3. Create Context MyTest and Entity MyTest_entity:

    • UID
    • MYNUMBERFIELD (number)
    • MYTEXTFIELD
  4. Add a FilterView, PreviewView, and EditView.

  5. Add the Context to the Global Menu.

  6. Create a JDitoRecordContainer named jDito:

    • jDitoRecordAlias: Data_alias

    • recordFieldMappings:

      • UID.value
      • MYNUMBERFIELD.value
      • MYTEXTFIELD.value
    • isFilterable: true

    • contentProcess:

import { result, vars } from "@aditosoftware/jdito-types";
import { FilterSqlTranslator } from "FilterSqlTranslator_lib";
import { newSelect, SqlBuilder } from "SqlBuilder_lib";

let query = newSelect("MYTESTID, MYNUMBERFIELD, MYTEXTFIELD")
.from("MYTEST")
.whereIfSet("MYTEST.MYTESTID", vars.get("$local.idvalues"), SqlBuilder.IN());

if (vars.get("$local.filters"))
{
let filterCondition = new FilterSqlTranslator(vars.get("$local.filters"), "MYTEST");
query.andIfSet(filterCondition.getSqlCondition());
}

let data = query.table();
result.object(data);
  1. Example onInsert implementation:
let rowdata = vars.get("$local.rowdata");
let columns = ["MYTESTID", "MYNUMBERFIELD", "MYTEXTFIELD"];
let values = [rowdata["UID.value"], rowdata["MYNUMBERFIELD.value"], rowdata["MYTEXTFIELD.value"]];

new SqlBuilder().insertData("MYTEST", columns, null, values);
  1. Example onUpdate implementation:
let changedFields = vars.get("$local.changed");
let rowData = vars.get("$local.rowdata");

let fieldValues = {};

changedFields.forEach(fieldName =>
{
// removes the ".value"/".displayValue" postfix
let dbFieldName = fieldName.split(".")[0];
fieldValues[dbFieldName] = rowData[fieldName];
});

newWhere("MYTEST.MYTESTID", vars.get("$local.uid"))
.updateFields(fieldValues);
  1. Example onDelete implementation:
newWhere("MYTEST.MYTESTID", vars.get("$local.uid"))
.deleteData();