Tipy a triky: Řazení textů obsahujících číslice
30.11.2015
Dnešní tip je o způsobu řazení číselných hodnot v nečíselném tvaru. Konkrétně se podíváme na příklad řazení verzí komponent - např.: "1.4.0.1". Takto zadané hodnoty se neřadí číselně, ale textově. V případě, že některé číslo je dvou- a víceznakové, pak se seřadí jinak než bychom si přáli:
1.1.0.0
1.12.0.1
1.3.0.0
1.4.0.0
Hodnota 12 se zařadí pod 1. Očekávali bychom toto řazení:
1.1.0.0
1.3.0.0
1.4.0.0
1.12.0.1
ObjectGears nabízí řešení v podobě funkce, která z těchto "tečkovaných" čísel vytvoří regulérní celé číslo. Funkce rozdělí text dle oddělovače, podle parametru maxNumberLength každé číslo doplní zleva nulami a vše spojí.
OG.TextUtils.CreateDottedText() a OG.TextUtils.CreateDottedText(minNumbers, maxNumbers, maxNumberLength)
Příklad:
var dt = OG.TextUtils.CreateDottedText(4, 4, 2);
var l = dt.ParseLong("1.12.4.1");
Výsledek:
l = 1120401;
Nyní stačí jen vytvořit ve třídě nový sloupec typu celé číslo a vytvořit pravidlo před uložením záznamu, ve kterém načtete ze sloupce textové číslo verze, skriptem vytvoříte celočíselnou verzi a uložíte do nového sloupce.
Následně na třídě zadáte řazení podle nového sloupce.
Podívejte se také do dokumentace.