summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/automated-upgrade/automated-upgrade-ui-components/list-item-order-pipe/list-item-order-pipe.ts
blob: abebe0bdd8d4517bc16f47c2cedeada12c33e055 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import {Pipe, PipeTransform} from "@angular/core";
import {ServiceContainerToUpgradeUiObject} from "../../automated-upgrade-models/ui-component-to-upgrade";

/*
 This filter needs to return all not upgraded components sorted by name first, after that all upgraded components sorted by name
 And in the end all the locked components sorted by name
 */

@Pipe({
    name: 'upgradeListItemOrderBy'
})
export class UpgradeListItemOrderPipe implements PipeTransform {

    private orderByName = (firstName:string, secondName:string):number => {
        var textA = firstName.toLocaleLowerCase();
        var textB = secondName.toLocaleLowerCase();
        return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
    }

    transform(array:Array<ServiceContainerToUpgradeUiObject>):Array<ServiceContainerToUpgradeUiObject> {
        array.sort((first:ServiceContainerToUpgradeUiObject, second:ServiceContainerToUpgradeUiObject) => {
            if (first.isLock && second.isLock) {
                return this.orderByName(first.name, second.name);
            } else if (first.isLock) {
                return 1;
            } else if (second.isLock) {
                return -1;
            } else {
                if (first.isAlreadyUpgrade && second.isAlreadyUpgrade) {
                    return this.orderByName(first.name, second.name);
                } else if (first.isAlreadyUpgrade) {
                    return 1;
                } else if (second.isAlreadyUpgrade) {
                    return -1;
                } else {
                    return this.orderByName(first.name, second.name);
                }
            }
        });
        return array;
    }
}