From 4ea0c4b514eed8d65849647955bfffa97559194a Mon Sep 17 00:00:00 2001 From: Anjali walsatwar Date: Fri, 17 Aug 2018 11:03:43 +0530 Subject: Add sorting capability to property assignment Change-Id: I74cbebac6cfe76f4334fcb46813c98686de55822 Issue-ID: SDC-1516 Signed-off-by: Anjali walsatwar --- .../src/app/ng2/pipes/global-pipes.module.ts | 28 +++++++++++++++-- catalog-ui/src/app/ng2/pipes/orderBy.pipe.ts | 35 ++++++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 catalog-ui/src/app/ng2/pipes/orderBy.pipe.ts (limited to 'catalog-ui/src/app/ng2/pipes') diff --git a/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts b/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts index 758a7e886c..c44d71b30d 100644 --- a/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts +++ b/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts @@ -1,3 +1,24 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2018 Huawei Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + import {ContentAfterLastDotPipe} from "./contentAfterLastDot.pipe"; import {SearchFilterPipe} from "./searchFilter.pipe"; import {KeysPipe} from "./keys.pipe"; @@ -5,6 +26,7 @@ import {GroupByPipe} from "./groupBy.pipe"; import {ResourceNamePipe} from "./resource-name.pipe"; import {NgModule} from "@angular/core"; import {SafeUrlSanitizerPipe} from "./safeUrlSanitizer.pipe"; +import {OrderByPipe} from "./orderBy.pipe"; @NgModule({ declarations: [ @@ -13,7 +35,8 @@ import {SafeUrlSanitizerPipe} from "./safeUrlSanitizer.pipe"; KeysPipe, SafeUrlSanitizerPipe, SearchFilterPipe, - ResourceNamePipe + ResourceNamePipe, + OrderByPipe ], exports: [ ContentAfterLastDotPipe, @@ -21,7 +44,8 @@ import {SafeUrlSanitizerPipe} from "./safeUrlSanitizer.pipe"; KeysPipe, SafeUrlSanitizerPipe, SearchFilterPipe, - ResourceNamePipe + ResourceNamePipe, + OrderByPipe ] }) diff --git a/catalog-ui/src/app/ng2/pipes/orderBy.pipe.ts b/catalog-ui/src/app/ng2/pipes/orderBy.pipe.ts new file mode 100644 index 0000000000..4edbd60f60 --- /dev/null +++ b/catalog-ui/src/app/ng2/pipes/orderBy.pipe.ts @@ -0,0 +1,35 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 Huawei Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ name: 'orderBy' }) +export class OrderByPipe implements PipeTransform { + transform(records: Array, args?: any): any { + if (!records || !args.path) return records; + let len = args.path.length; + return records.sort((itemIdx1, itemIdx2) => { + var i = 0; + while (i < len) { itemIdx1 = itemIdx1[args.path[i]]; itemIdx2 = itemIdx2[args.path[i]]; i++; } + // Order * (-1): We change our order + return itemIdx1 + "" > itemIdx2 + "" ? args.direction : args.direction * (- 1); + }) + }; +} -- cgit 1.2.3-korg