PHP Classes
elePHPant
Icontem

File: FrontEndScripts/Filters/OrderGroups.ts

Recommend this page to a friend!
  Classes of Aleksey Nemiro  >  PHP Small Server Administrator  >  FrontEndScripts/Filters/OrderGroups.ts  >  Download  
File: FrontEndScripts/Filters/OrderGroups.ts
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP Small Server Administrator
Web panel for small Debian and Ubuntu servers
Author: By
Last change:
Date: 3 years ago
Size: 1,723 bytes
 

 

Contents

Class file image Download
?/*
 * 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);
    }

  }

}