src/app/group/group.component.ts
| encapsulation | ViewEncapsulation.None |
| host | { |
| selector | app-group |
| styleUrls | ./group.component.scss |
| templateUrl | ./group.component.html |
Properties |
|
Methods |
|
constructor(sasService: SasService, helperService: HelperService, router: Router, location: Location, route: ActivatedRoute)
|
||||||||||||||||||
|
Defined in src/app/group/group.component.ts:36
|
||||||||||||||||||
|
Parameters :
|
| Public groupListOnFilter |
groupListOnFilter()
|
|
Defined in src/app/group/group.component.ts:156
|
|
Returns :
void
|
| Public groupOnClick | ||||||
groupOnClick(group: any)
|
||||||
|
Defined in src/app/group/group.component.ts:165
|
||||||
|
Parameters :
Returns :
void
|
| ngOnInit |
ngOnInit()
|
|
Defined in src/app/group/group.component.ts:53
|
|
Returns :
void
|
| Public groupDesc |
Type : string
|
Default value : ''
|
|
Defined in src/app/group/group.component.ts:30
|
| Public groupMemberCount |
Type : number | undefined
|
|
Defined in src/app/group/group.component.ts:25
|
| Public groupMembers |
Type : Array<any> | undefined
|
|
Defined in src/app/group/group.component.ts:24
|
| Public groupName |
Type : string
|
Default value : ''
|
|
Defined in src/app/group/group.component.ts:29
|
| Public groups |
Type : Array<any> | undefined
|
|
Defined in src/app/group/group.component.ts:22
|
| Public groupSearch |
Type : string
|
Default value : ''
|
|
Defined in src/app/group/group.component.ts:23
|
| Public groupUri |
Type : string
|
Default value : ''
|
|
Defined in src/app/group/group.component.ts:28
|
| Public isViya |
Type : boolean
|
Default value : false
|
|
Defined in src/app/group/group.component.ts:32
|
| Public loading |
Type : boolean
|
Default value : false
|
|
Defined in src/app/group/group.component.ts:33
|
| Public paramPresent |
Type : boolean
|
Default value : false
|
|
Defined in src/app/group/group.component.ts:26
|
| Public paramURI |
Type : string
|
Default value : ''
|
|
Defined in src/app/group/group.component.ts:27
|
| Public sasjsConfig |
Type : SASjsConfig
|
Default value : new SASjsConfig()
|
|
Defined in src/app/group/group.component.ts:31
|
| Public serverType |
Type : string
|
|
Defined in src/app/group/group.component.ts:34
|
| ServerType |
Type : unknown
|
Default value : ServerType
|
|
Defined in src/app/group/group.component.ts:36
|
import { Location } from '@angular/common'
import { Component, OnInit, ViewEncapsulation } from '@angular/core'
import { ActivatedRoute, Router } from '@angular/router'
import { SASjsConfig } from '@sasjs/adapter'
import { ServerType } from '@sasjs/utils/types/serverType'
import { HelperService } from '../services/helper.service'
import { SasService } from '../services/sas.service'
import { globals } from '../_globals'
import { RequestWrapperResponse } from '../models/request-wrapper/RequestWrapperResponse'
@Component({
selector: 'app-group',
templateUrl: './group.component.html',
styleUrls: ['./group.component.scss'],
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class GroupComponent implements OnInit {
public groups: Array<any> | undefined
public groupSearch: string = ''
public groupMembers: Array<any> | undefined
public groupMemberCount: number | undefined
public paramPresent: boolean = false
public paramURI: string = ''
public groupUri: string = ''
public groupName: string = ''
public groupDesc: string = ''
public sasjsConfig: SASjsConfig = new SASjsConfig()
public isViya: boolean = false
public loading: boolean = false
public serverType: string
ServerType = ServerType
constructor(
private sasService: SasService,
private helperService: HelperService,
private router: Router,
private location: Location,
private route: ActivatedRoute
) {
this.sasjsConfig = this.sasService.getSasjsConfig()
this.serverType = this.sasService.getServerType()
if (this.sasjsConfig.serverType === 'SASVIYA') {
this.isViya = true
}
}
ngOnInit() {
globals.viewer.currentSelection = 'view/usernav/groups'
if (this.route.snapshot.params['uri'] !== undefined) {
this.paramPresent = true
this.paramURI = this.route.snapshot.params['uri']
}
if (globals.usernav.groupList && !this.paramPresent) {
this.groups = globals.usernav.groupList
this.groupSearch = globals.usernav.groupSearch
} else {
if (globals.usernav.groupList === undefined) {
this.loading = true
if (this.isViya) {
fetch(this.sasjsConfig.serverUrl + '/identities/groups?limit=2000', {
headers: {
Accept: 'application/json'
}
})
.then((res: any) => {
return res.text()
})
.then((res: any) => {
let jsonRes = JSON.parse(res)
let groups = jsonRes.items.map((group: any) => {
return {
GROUPURI: group.id,
GROUPNAME: group.name,
GROUPDESC: group.description
}
})
this.loading = false
this.groups = groups
globals.usernav.groupList = groups
})
} else {
this.sasService
.request('public/getgroups', null)
.then((res: RequestWrapperResponse) => {
this.loading = false
this.groups = res.adapterResponse.groups
globals.usernav.groupList = res.adapterResponse.groups
})
}
} else {
this.groups = globals.usernav.groupList
this.groupSearch = globals.usernav.groupSearch
}
if (this.paramPresent) {
this.loading = true
if (this.isViya) {
fetch(
this.sasjsConfig.serverUrl +
'/identities/groups/' +
this.paramURI +
'/members?limit=2000',
{
headers: {
Accept: 'application/json'
}
}
)
.then((res: any) => {
return res.text()
})
.then((res: any) => {
let jsonRes = JSON.parse(res)
this.loading = false
let groupMembers = jsonRes.items.map((member: any) => {
return {
MEMBERNAME: member.name,
MEMBERID: member.id
}
})
this.groupMembers = groupMembers
this.groupMemberCount = groupMembers.length
this.groupUri = this.paramURI
this.groupName = this.paramURI
})
} else {
let data = { iwant: [{ groupid: this.paramURI }] }
this.sasService
.request('usernav/usermembersbygroup', data)
.then((res: RequestWrapperResponse) => {
this.groupMembers = res.adapterResponse.sasmembers
this.groupMemberCount = res.adapterResponse.sasmembers.length
if (res.adapterResponse.sasmembers[0] !== undefined) {
this.loading = false
this.groupUri =
res.adapterResponse.sasmembers[0].URIMEM || this.paramURI
this.groupName = res.adapterResponse.sasmembers[0].GROUPNAME
this.groupDesc = res.adapterResponse.sasmembers[0].GROUPDESC
if (!this.groupName) {
this.groupName = this.paramURI
}
}
})
}
}
}
}
public groupListOnFilter() {
this.helperService.libraryOnFilter(
this.groups,
this.groupSearch,
'GROUPNAME'
)
globals.usernav.groupSearch = this.groupSearch
}
public groupOnClick(group: any) {
this.loading = true
let url = this.router.url
if (this.paramPresent) {
this.location.replaceState(
url.slice(0, url.lastIndexOf('/')) + '/' + encodeURI(group.GROUPURI)
)
} else {
this.location.replaceState(url + '/' + encodeURI(group.GROUPURI))
}
if (this.isViya) {
fetch(
this.sasjsConfig.serverUrl +
'/identities/groups/' +
group.GROUPURI +
'/members?limit=2000',
{
headers: {
Accept: 'application/json'
}
}
)
.then((res: any) => {
return res.text()
})
.then((res: any) => {
let jsonRes = JSON.parse(res)
this.loading = false
this.groupUri = group.GROUPURI
this.groupName = group.GROUPNAME
this.groupDesc = group.GROUPDESC
let groupMembers = jsonRes.items.map((member: any) => {
return {
MEMBERNAME: member.name,
MEMBERID: member.id
}
})
this.groupMembers = groupMembers
this.groupMemberCount = groupMembers.length
})
} else {
let data = { iwant: [{ groupid: group.GROUPURI }] }
this.sasService
.request('usernav/usermembersbygroup', data)
.then((res: RequestWrapperResponse) => {
this.loading = false
this.groupUri = group.GROUPURI
this.groupName = group.GROUPNAME
this.groupDesc = group.GROUPDESC
this.groupMembers = res.adapterResponse.sasmembers
this.groupMemberCount = res.adapterResponse.sasmembers.length
})
}
}
}
<app-sidebar class="sidebar-height">
<clr-tree>
@if (groups) {
<clr-tree-node class="search-node">
<div class="tree-search-wrapper">
<input
appStealFocus
clrInput
#searchLibTreeInput
placeholder="Filter by Groups"
name="input"
[(ngModel)]="groupSearch"
(keyup)="groupListOnFilter()"
autocomplete="off"
/>
@if (searchLibTreeInput.value.length < 1) {
<clr-icon shape="search"></clr-icon>
}
@if (searchLibTreeInput.value.length > 0) {
<clr-icon
(click)="groupSearch = ''; groupListOnFilter()"
shape="times"
></clr-icon>
}
</div>
</clr-tree-node>
}
@for (group of groups; track group) {
@if (!group['hidden']) {
<clr-tree-node
(click)="groupOnClick(group)"
[class.active]="group.GROUPURI === groupUri"
>
<p class="m-0 cursor-pointer list-padding">
<clr-icon shape="users"></clr-icon>
{{ group.GROUPNAME }}
</p>
</clr-tree-node>
}
}
</clr-tree>
</app-sidebar>
<div class="content-area">
@if (loading) {
<div class="loadingSpinner">
<span class="spinner"> Loading... </span>
</div>
}
@if (groupMembers && !loading) {
<div>
@if (serverType !== ServerType.SasViya) {
<div class="clr-row">
<div class="clr-col-8">
<table class="table group-info">
<tbody>
<tr>
<td class="left">
<p class="group-info-text">
<b>{{ groupName }}</b>
</p>
</td>
</tr>
<tr>
<td class="left">
<i>{{ groupDesc || 'no description' }}</i>
</td>
</tr>
</tbody>
</table>
</div>
</div>
}
<div class="clr-row">
<div class="clr-col-8">
<div class="card group-data">
@if (serverType !== ServerType.SasViya) {
<div>
<h3>MEMBERS ({{ groupMemberCount }})</h3>
@if (groupMemberCount == 0) {
<h5>No Members Present</h5>
}
<div class="table-container">
@if (groupMemberCount != 0) {
<table class="table member-table">
<thead>
<tr>
@if (serverType === ServerType.Sas9) {
<td class="width-25"><b>NAME</b></td>
<td class="width-25"><b>EMAIL</b></td>
<td class="width-25"><b>CREATED</b></td>
<td class=""><b>UPDATED</b></td>
}
@if (serverType === ServerType.Sasjs) {
<td class="width-25"><b>ID</b></td>
<td class="width-25"><b>DISPLAY NAME</b></td>
<td class="width-25"><b>USER NAME</b></td>
}
</tr>
</thead>
<tbody>
@for (member of groupMembers; track member) {
<tr
[routerLink]="
'/view/usernav/users/' +
(member.URIMEM || member.ID)
"
>
@if (serverType === ServerType.Sas9) {
<td class="">{{ member.MEMBERNAME }}</td>
<td class="">{{ member.EMAIL }}</td>
<td class="">{{ member.MEMBERCREATED }}</td>
<td class="">{{ member.MEMBERUPDATED }}</td>
}
@if (serverType === ServerType.Sasjs) {
<td class="">{{ member.ID }}</td>
<td class="">{{ member.DISPLAYNAME }}</td>
<td class="">{{ member.USERNAME }}</td>
}
</tr>
}
</tbody>
</table>
}
</div>
</div>
}
@if (serverType === ServerType.SasViya) {
<div>
<h3>{{ groupName }}</h3>
@if (groupMemberCount == 0) {
<h5>No Members Present</h5>
}
<div class="table-container">
@if (groupMemberCount != 0) {
<table class="table member-table">
<thead>
<tr>
<td>
<b>MEMBERS ({{ groupMemberCount }})</b>
</td>
</tr>
</thead>
<tbody>
@for (member of groupMembers; track member) {
<tr
[routerLink]="
'/view/usernav/users/' + member.MEMBERID
"
>
<td class="">{{ member.MEMBERNAME }}</td>
</tr>
}
</tbody>
</table>
}
</div>
</div>
}
<br />
</div>
</div>
</div>
</div>
}
</div>
./group.component.scss