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í.

Skripty na dynamických řádcích není potřeba upravovat, zde pořád funguje vše po staru.
Hlavní změna je, že se do verze TAS 5.3 již nedá používat v dynamických podmínkách odkaz na kontext úkolu this. Je potřeba využít funkci getCurrentTask().

Ú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ů.

  1. Odstranit var self = this;
    Není potřeba používat, jelikož se na self pak již nikde neodkazuje.
  2. currentTask je potřeba nově zadefinovat na začátku úkolu jako:
//Na začátek podmínek přidat
const currentTask = getCurrentTask();
  1. 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("");
  1. 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
  1. 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
  1. 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]
  1. 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);
  1. 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');
  1. Nahrazení self. při použití items
//Starý zápis
self['items']

//Nový zápis
currentTask['items']
  1. 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
  1. 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,
},
};

Anna Gernát Updated by Anna Gernát

Úprava tisku pdf

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)