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.