2023-03-01 09:39:41 -06:00
|
|
|
/**
|
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
|
|
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
*/
|
|
|
|
|
|
2020-09-02 13:29:20 -04:00
|
|
|
import Controller from '@ember/controller';
|
|
|
|
|
import { inject as service } from '@ember/service';
|
|
|
|
|
|
|
|
|
|
export default class ScopesScopeGroupsGroupAddMembersController extends Controller {
|
|
|
|
|
// =services
|
|
|
|
|
|
|
|
|
|
@service intl;
|
|
|
|
|
|
|
|
|
|
// =attributes
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Translated new group breadcrumb
|
|
|
|
|
* @type {string}
|
|
|
|
|
*/
|
|
|
|
|
get breadCrumb() {
|
2020-09-25 13:09:16 -04:00
|
|
|
return this.intl.t('resources.group.messages.add-members.title');
|
2020-09-02 13:29:20 -04:00
|
|
|
}
|
2022-07-28 17:34:03 -07:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a flat array of scopes, sorted and "grouped by" parent scope,
|
|
|
|
|
* beginning with global.
|
|
|
|
|
*/
|
|
|
|
|
get flatSortedScopes() {
|
|
|
|
|
const { scopes } = this.model;
|
|
|
|
|
const global = scopes.find((scope) => scope.isGlobal);
|
|
|
|
|
const orgsAndProjects = scopes
|
|
|
|
|
.filter((scope) => scope.isOrg)
|
|
|
|
|
.map((org) => [
|
|
|
|
|
org,
|
|
|
|
|
...scopes.filter((scope) => scope.scopeID === org.id),
|
|
|
|
|
]);
|
|
|
|
|
const sorted = [global, ...orgsAndProjects].flat();
|
|
|
|
|
return sorted;
|
|
|
|
|
}
|
2020-09-02 13:29:20 -04:00
|
|
|
}
|