tuain-form-manager
Version:
Component library to perform operations on Tuain Development Framework forms to interchange information on web or mobile applications based on the data interchange of abstract forms making trnasformation on the data upon actions required on both sides (fr
76 lines (72 loc) • 2.96 kB
JavaScript
const DEFAULT_VERSION = 'TUAINEXCHANGE_1.0';
function importExchange(inputExchangeData, form) {
const exchangeDataVersion = inputExchangeData?.version ?? DEFAULT_VERSION;
if (exchangeDataVersion === 'TUAINEXCHANGE_1.0') {
const { formCode, currentMode, formSubject, actionCode, actionSubject, formData } = inputExchangeData;
form.setFormRequestAttributes(formCode, currentMode, formSubject, actionCode, actionSubject, exchangeDataVersion);
const immutableData = inputExchangeData?.immutableData;
const immutableKeys = Object.keys(immutableData ?? {});
for (let index = 0; index < immutableKeys?.length; index++) {
const name = immutableKeys[index];
const { value, signature } = immutableData[name];
if (signature) {
form.setImmutableElement(name, value, signature);
}
}
formData?.fields?.forEach((inputField) => {
const { fieldCode, fieldValue, editable, visible, required } = inputField;
const internalField = { fieldCode, fieldValue, editable, visible, required, fieldOptions: null };
form.addInputField(internalField);
});
formData?.tables?.forEach((inputTableRequest) => {
const { tableCode, visible, currentPage, requestedPage, recordsPerPage, currentFilter, sortingColumn, sortingDirection } =
inputTableRequest;
const tableRequest = {
tableCode,
visible,
currentPage,
requestedPage,
recordsPerPage,
currentFilter,
sortingColumn,
sortingDirection,
};
form.addTableRequest(tableRequest);
});
}
}
function exportExchange(form) {
const formExportData = form.responseData;
const exchangeFormInfo = {};
const { requestVersion } = form;
if (requestVersion === 'TUAINEXCHANGE_1.0') {
if (formExportData.formSubject) {
exchangeFormInfo.formSubject = formExportData.formSubject;
}
exchangeFormInfo.actions = formExportData.actions;
exchangeFormInfo.cookiesToSet = formExportData.cookiesToSet;
exchangeFormInfo.immutableData = formExportData.immutableData;
exchangeFormInfo.returnedFile = formExportData.returnedFile;
exchangeFormInfo.extraInfo = formExportData.extraInfo;
exchangeFormInfo.currentMode = formExportData.state;
exchangeFormInfo.fields = [];
const fieldNames = Object.keys(formExportData.fields);
for (let index = 0; index < fieldNames.length; index++) {
const code = fieldNames[index];
const field = formExportData.fields[code];
exchangeFormInfo.fields.push(field);
}
exchangeFormInfo.recordTables = [];
const tableNames = Object.keys(formExportData.recordTables);
for (let index = 0; index < tableNames.length; index++) {
const code = tableNames[index];
const table = formExportData.recordTables[code];
exchangeFormInfo.recordTables.push(table);
}
}
return exchangeFormInfo;
}
module.exports = {
importExchange,
exportExchange,
};