Optimalizace volání api na dynamických podmínkách

Využitím cachedValue je možné docílit toho, že služby, které se ve formuláři používají vícekrát je možné zavolat pouze jednou.

Je třeba zajistit vynulování cachedValue ve chvíli, kdy se služba má znovu odeslat – například při změně hodnoty proměnné používané ve filtru.
let cachedRow = null;
const fetchData = () => {
if (cachedRow) {
return cachedRow;
}
cachedRow = new Promise((resolve, reject) => {
return Api.request.get(`/dyn-table/TAS-configCO/values`).then(data => {
resolve(data);
}).catch(error => {
console.error('There was a problem with the fetch operation:', error);
reject(error);
});
});
return cachedRow;
}
let cachedTableDepartments = null
const fetchDepartmentsTable = (table) => {
if (cachedTableDepartments) {
return cachedTableDepartments;
}
cachedTableDepartments = new Promise((resolve, reject) => {
return Api.request.get(`/dyn-table/${table}/values?total_count=false`).then(data => {
resolve(data);
}).catch(error => {
console.error('There was a problem with the fetch operation:', error);
reject(error);
});
});
return cachedTableDepartments;
}

Použití v podmínce:

let isCompanyRelationshipHidden = false;
let department = null;
hideVarOn('companyRelationship', () => {
if (vSync('contractDepartment') && department === vSync('contractDepartment')) return isCompanyRelationshipHidden;
department = vSync('contractDepartment')
return fetchData().then(payload => {
let {
items
} = payload;
items = items.filter(item => {
return item.dtv_index === id;
})
const dtDepartments = items[0]?.col_7;
const canRepresent = items[0]?.col_10
if (canRepresent !== 'True' || !vSync('contractDepartment')) {
isCompanyRelationshipHidden = true
return true;
}
const department = references.contractDepartment.getValue();
return fetchDepartmentsTable(dtDepartments).then(payload => {
const {
items
} = payload;
const canRepresent = items.find(item => item.dtv_index === department)?.col_2;
isCompanyRelationshipHidden = canRepresent !== 'True';
return canRepresent !== 'True'
})
})
})

Frantisek Brych Updated by Frantisek Brych

Vyhledání v dynamické tabulce podle hodnoty sloupce

Filtrování v dynamickém listu pomocí dynamických podmínek

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)