re base code
[sdc.git] / catalog-ui / src / app / ng2 / pages / automated-upgrade / automated-upgrade-ui-components / list-item-order-pipe / list-item-order-pipe.ts
1 import {Pipe, PipeTransform} from "@angular/core";
2 import {ServiceContainerToUpgradeUiObject} from "../../automated-upgrade-models/ui-component-to-upgrade";
3
4 /*
5  This filter needs to return all not upgraded components sorted by name first, after that all upgraded components sorted by name
6  And in the end all the locked components sorted by name
7  */
8
9 @Pipe({
10     name: 'upgradeListItemOrderBy'
11 })
12 export class UpgradeListItemOrderPipe implements PipeTransform {
13
14     private orderByName = (firstName:string, secondName:string):number => {
15         var textA = firstName.toLocaleLowerCase();
16         var textB = secondName.toLocaleLowerCase();
17         return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
18     }
19
20     transform(array:Array<ServiceContainerToUpgradeUiObject>):Array<ServiceContainerToUpgradeUiObject> {
21         array.sort((first:ServiceContainerToUpgradeUiObject, second:ServiceContainerToUpgradeUiObject) => {
22             if (first.isLock && second.isLock) {
23                 return this.orderByName(first.name, second.name);
24             } else if (first.isLock) {
25                 return 1;
26             } else if (second.isLock) {
27                 return -1;
28             } else {
29                 if (first.isAlreadyUpgrade && second.isAlreadyUpgrade) {
30                     return this.orderByName(first.name, second.name);
31                 } else if (first.isAlreadyUpgrade) {
32                     return 1;
33                 } else if (second.isAlreadyUpgrade) {
34                     return -1;
35                 } else {
36                     return this.orderByName(first.name, second.name);
37                 }
38             }
39         });
40         return array;
41     }
42 }