?/*
* Copyright © Aleksey Nemiro, 2016. 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.
*/
module SmallServerAdmin.Filters {
/**
* Filter to sort the list of groups.
*/
export class OrderGroups implements Nemiro.IFilter {
Name: string = 'OrderGroups';
Filter: ng.IFilterService;
constructor(filter: ng.IFilterService) {
this.Filter = filter;
}
public Execution(groups: Array<Models.Group>, userGroups: Array<string>): any {
if (groups === undefined) {
return null;
}
var result = [];
var userInGroups = [];
if (userGroups !== undefined) {
angular.forEach(groups, function (group) {
if (userGroups.indexOf(group.Name) != -1) {
userInGroups.push(group);
} else {
result.push(group);
}
});
} else {
result = groups;
}
result.sort((a: Models.Group, b: Models.Group) => {
return a.Name.localeCompare(b.Name);
});
userInGroups.sort((a: Models.Group, b: Models.Group) => {
return a.Name.localeCompare(b.Name);
});
return userInGroups.concat(result);
}
}
}
|