Migrace dynamických podmínek
Migrace dynamických podmínek při upgradu na TAS 5.3
V TASu 5.3 došlo ke změně dynamických podmínek hlavně z důvodu lepší performance, ale i pro lepší maintenance v budoucnu a kvůli zabezpečení.
Úprava dynamických podmínek
Ve své podstatě stačí přidat na začátek dynamických podmínek const currentTask = getCurrentTask(); a poté vyhledat pomocí ctr+f "this" a poté "self" a provést nahrazení dle následujících bodů.
- Odstranit var self = this;
Není potřeba používat, jelikož se na self pak již nikde neodkazuje. - currentTask je potřeba nově zadefinovat na začátku úkolu jako:
//Na začátek podmínek přidat
const currentTask = getCurrentTask();
- V rámci this.references mohu použít buď novou funkci getReferences() nebo využít references v rámci currentTask.
//Starý zápis
this.references
//Nový zápis
const references = getReferences();
//Nebo
currentTask.references
Stejně tak pro self.references použiji currentTask:
//Starý zápis
self.references['additionalInfo'].setValue("");
//Nový zápis
currentTask.references['additionalInfo'].setValue("");
- V rámci this.language mohu použít buď novou funkci getLanguage() nebo využít references v rámci currentTask.
//Starý zápis
this.language
//nebo
self.language
//Nový zápis
const language = getLanguage();
//Nebo
currentTask.language
- V rámci this.state.items mohu použít buď:
//Starý zápis
this.state.items
//Nový zápis
currentTask.items
//Nebo
currentTask.state.items
- Odstranění this. u funkce getDynTable()
//Varianta 1
//Starý zápis//
this.getDynTable(39, 1)
//Nový zápis - odstranění this//
getDynTable(39, 1)
//Varianta 2
//Starý zápis//
this.dynTable[39]
//Nový zápis - odstranění this//
dynTable[39]
Případně pokud mám self.dyntable:
//Starý zápis//
self.dynTable[_nazevDynTable1]
//Nový zápis - odstranění self//
dynTable[_nazevDynTable1]
- Nahrazení this.props.parent.state pomocí currentTask
//Starý zápis
create_pdf_preview(true, this.props.parent.state.iprocId);
//Nový zápis
create_pdf_preview(true, currentTask.iprocId);
- Změna ivar_lov pomocí varDefOn
//Starý zápis
const lovsVar = _.find(this.state.items, 'tvar_name', 'lovs');
//Nový zápis - Nově je potřeba brát z immutableItems
const lovsVar = _.find(currentTask.immutableItems, 'tvar_name', 'lovs');
- Nahrazení self. při použití items
//Starý zápis
self['items']
//Nový zápis
currentTask['items']
- U dynamických řádků potřeba upravit volání takto
//Starý zápis
this.currentTask.taskInfo.headerCode
//Nový zápis
this.currentTask.state.taskInfo.headerCode
- Získání pole názvů vybraných hodnot v proměnné dynamická tabulka multichoice
//Starý zápis
const multiDTTitles = self.references['multiDT'].state.rightValues;
//Nový zápis
const multiDTArray = currentTask.references['multiDT'].getValueObjArray();
const multiDTTitles = multiDTArray.map(multiDTArray => multiDTArray.title);
Zkrácená verze migrace
Zkrácená verze bez vysvětlení vhodná k jednoduchému kopírování je zde:
this.getDynTable(39, 1) -> getDynTable(39, 1)
this.dynTable[39] -> dynTable[39]
self.dynTable[_nazevDynTable1] -> dynTable[_nazevDynTable1]
currentTask -> const currentTask = getCurrentTask();
this.references -> getReferences() nebo currentTask.references
this.language -> getLanguage() nebo currentTask.language
this.state.items -> currentTask.items nebo currentTask.state.items
self['items'] -> currentTask['items']
self.references['additionalInfo'].setValue("") -> currentTask.references['additionalInfo'].setValue("")
create_pdf_preview(true, this.props.parent.state.iprocId) -> create_pdf_preview(true, currentTask.iprocId)
this.props.parent.state.iprocId -> currentTask.iprocId
//Změna ivar_lov pomocí varDefOn
//Původně
const lovsVar = _.find(this.state.items, 'tvar_name', 'lovs');
const lovsClone = _.clone(lovsVar, true);
const filtered = _.filter(lovsClone.ivar_lov …
//Nově je potřeba brát z immutableItems
const lovsVar = _.find(currentTask.state.items, 'tvar_name', 'lovs');
const filtered = _.filter(lovsVar.ivar_lov …
funkce getCurrentTask();
Všechny hodnoty, které lze získat v dynamických podmínkách pomocí getCurrentTask()
getCurrentTask
return {
id,
iprocId,
language,
refs,
references,
items,
processVars,
immutableItems,
taskHeading,
taskHeadingTranslated,
state: {
buttonsStatus,
taskInfo,
items,
processVars,
immutableItems,
},
};
Updated
by Anna Gernát