|
|
@ -5,7 +5,7 @@ |
|
|
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|
|
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
import { Component, OnInit } from '@angular/core'; |
|
|
import { Component, Injectable, OnInit } from '@angular/core'; |
|
|
import { FormBuilder } from '@angular/forms'; |
|
|
import { FormBuilder } from '@angular/forms'; |
|
|
import { Observable } from 'rxjs'; |
|
|
import { Observable } from 'rxjs'; |
|
|
|
|
|
|
|
|
@ -19,16 +19,17 @@ import { |
|
|
UsersService |
|
|
UsersService |
|
|
} from '@app/shared'; |
|
|
} from '@app/shared'; |
|
|
|
|
|
|
|
|
|
|
|
@Injectable() |
|
|
export class UsersDataSource implements AutocompleteSource { |
|
|
export class UsersDataSource implements AutocompleteSource { |
|
|
constructor( |
|
|
constructor( |
|
|
private readonly usersService: UsersService, |
|
|
private readonly contributorsState: ContributorsState, |
|
|
private readonly component: ContributorsPageComponent |
|
|
private readonly usersService: UsersService |
|
|
) { |
|
|
) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public find(query: string): Observable<any[]> { |
|
|
public find(query: string): Observable<any[]> { |
|
|
return this.usersService.getUsers(query) |
|
|
return this.usersService.getUsers(query) |
|
|
.withLatestFrom(this.component.contributorsState.contributors, (users, contributors) => { |
|
|
.withLatestFrom(this.contributorsState.contributors, (users, contributors) => { |
|
|
const results: any[] = []; |
|
|
const results: any[] = []; |
|
|
|
|
|
|
|
|
for (let user of users) { |
|
|
for (let user of users) { |
|
|
@ -44,10 +45,12 @@ export class UsersDataSource implements AutocompleteSource { |
|
|
@Component({ |
|
|
@Component({ |
|
|
selector: 'sqx-contributors-page', |
|
|
selector: 'sqx-contributors-page', |
|
|
styleUrls: ['./contributors-page.component.scss'], |
|
|
styleUrls: ['./contributors-page.component.scss'], |
|
|
templateUrl: './contributors-page.component.html' |
|
|
templateUrl: './contributors-page.component.html', |
|
|
|
|
|
providers: [ |
|
|
|
|
|
UsersDataSource |
|
|
|
|
|
] |
|
|
}) |
|
|
}) |
|
|
export class ContributorsPageComponent implements OnInit { |
|
|
export class ContributorsPageComponent implements OnInit { |
|
|
public usersDataSource: UsersDataSource; |
|
|
|
|
|
public usersPermissions = [ 'Owner', 'Developer', 'Editor' ]; |
|
|
public usersPermissions = [ 'Owner', 'Developer', 'Editor' ]; |
|
|
|
|
|
|
|
|
public assignContributorForm = new AssignContributorForm(this.formBuilder); |
|
|
public assignContributorForm = new AssignContributorForm(this.formBuilder); |
|
|
@ -55,10 +58,9 @@ export class ContributorsPageComponent implements OnInit { |
|
|
constructor( |
|
|
constructor( |
|
|
public readonly appsState: AppsState, |
|
|
public readonly appsState: AppsState, |
|
|
public readonly contributorsState: ContributorsState, |
|
|
public readonly contributorsState: ContributorsState, |
|
|
private readonly formBuilder: FormBuilder, |
|
|
public readonly usersDataSource: UsersDataSource, |
|
|
usersService: UsersService |
|
|
private readonly formBuilder: FormBuilder |
|
|
) { |
|
|
) { |
|
|
this.usersDataSource = new UsersDataSource(usersService, this); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ngOnInit() { |
|
|
public ngOnInit() { |
|
|
@ -93,4 +95,8 @@ export class ContributorsPageComponent implements OnInit { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public trackByContributor(index: number, contributor: { contributor: AppContributorDto }) { |
|
|
|
|
|
return contributor.contributor.contributorId; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|