File

libs/rucken/todo-web/src/lib/entities/projects/project-users-grid/project-users-grid.component.ts

Extends

UsersGridComponent

Implements

ControlValueAccessor OnInit OnDestroy

Metadata

changeDetection ChangeDetectionStrategy.OnPush
providers { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ProjectUsersGridComponent), multi: true }
selector project-users-grid
templateUrl ./project-users-grid.component.html

Index

Properties
Methods

Constructor

constructor(modalsService: ModalsService, errorsExtractor: ErrorsExtractor, translateService: TranslateService, dynamicRepository: DynamicRepository, modalService: BsModalService, usersConfig: IRestProviderOptions)
Parameters :
Name Type Optional
modalsService ModalsService No
errorsExtractor ErrorsExtractor No
translateService TranslateService No
dynamicRepository DynamicRepository No
modalService BsModalService No
usersConfig IRestProviderOptions<User> No

Methods

ngOnDestroy
ngOnDestroy()
Returns : void
ngOnInit
ngOnInit(overrided?: boolean)
Parameters :
Name Type Optional
overrided boolean Yes
Returns : void
registerOnChange
registerOnChange(fn: any)
Parameters :
Name Type Optional
fn any No
Returns : void
registerOnTouched
registerOnTouched(fn: any)
Parameters :
Name Type Optional
fn any No
Returns : void
Optional setDisabledState
setDisabledState(isDisabled: boolean)
Parameters :
Name Type Optional
isDisabled boolean No
Returns : void
writeValue
writeValue(users: User[])
Parameters :
Name Type Optional
users User[] No
Returns : void

Properties

_onChange
Default value : () => {...}
_onTouched
Default value : () => {...}
mockedItemsChangeSubscription
Type : Subscription
Public modalService
Type : BsModalService
import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import {
  ErrorsExtractor,
  IBaseEntityModalOptions,
  ModalsService,
  translate,
  User,
  USERS_CONFIG_TOKEN
} from '@rucken/core';
import { Project } from '@rucken/todo-core';
import { UsersGridComponent, UsersGridModalComponent } from '@rucken/web';
import { BindIoInner } from 'ngx-bind-io';
import { BsModalService } from 'ngx-bootstrap/modal';
import { DynamicRepository, IRestProviderOptions, ProviderActionEnum } from 'ngx-repository';
import { Subscription } from 'rxjs';
import { ProjectUserModalComponent } from '../project-user-modal/project-user-modal.component';

@BindIoInner()
@Component({
  selector: 'project-users-grid',
  templateUrl: './project-users-grid.component.html',
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => ProjectUsersGridComponent),
      multi: true
    }
  ],
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class ProjectUsersGridComponent extends UsersGridComponent implements ControlValueAccessor, OnInit, OnDestroy {
  @Input()
  modalItem: IBaseEntityModalOptions = {
    component: ProjectUserModalComponent,
    initialState: {
      simpleMode: true
    }
  };
  @Input()
  modalDelete = {
    initialState: {
      title: translate('Delete user'),
      message: translate('Do you really want to delete user "{{fullName}}" from project?')
    }
  };
  @Input()
  modalAppendFromGrid = {
    component: UsersGridModalComponent,
    initialState: {
      title: translate('Select user for append to project'),
      simpleMode: true
    }
  };
  @Input()
  project: Project = undefined;
  mockedItemsChangeSubscription: Subscription;

  constructor(
    modalsService: ModalsService,
    protected errorsExtractor: ErrorsExtractor,
    protected translateService: TranslateService,
    protected dynamicRepository: DynamicRepository,
    public modalService: BsModalService,
    @Inject(USERS_CONFIG_TOKEN)
    protected usersConfig: IRestProviderOptions<User>
  ) {
    super(modalsService, errorsExtractor, translateService, dynamicRepository, usersConfig);
  }
  ngOnInit(overrided?: boolean) {
    if (!overrided) {
      return;
    }
    if (!this.mockedItems) {
      this.useRest({
        apiUrl: this.apiUrl + '/project/' + this.project.id,
        autoload: !!this.project.id,
        ...this.usersConfig,
        globalEventResolver: (data: any, action: ProviderActionEnum) => {
          return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
        }
      });
    }
    if (this.mockedItems) {
      this.useMock({
        items: this.mockedItems,
        autoload: true,
        ...this.usersConfig,
        globalEventResolver: (data: any, action: ProviderActionEnum) => {
          return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
        }
      });
    }
    if (this.mockedItemsChangeSubscription) {
      this.mockedItemsChangeSubscription.unsubscribe();
    }
    this.mockedItemsChange.subscribe(permissions => this._onChange(permissions));
  }
  ngOnDestroy() {
    if (this.mockedItemsChangeSubscription) {
      this.mockedItemsChangeSubscription.unsubscribe();
    }
  }
  writeValue(users: User[]): void {
    this.mockedItems = users || [];
    this.ngOnInit(true);
  }
  registerOnChange(fn: any): void {
    this._onChange = fn;
  }
  registerOnTouched(fn: any): void {
    this._onTouched = fn;
  }
  setDisabledState?(isDisabled: boolean): void {}
  _onChange = (value: User) => {};
  _onTouched = () => {};
}
<entity-grid
    [bindIO]
    [columns]="['fullName', 'action']"
    [enableCreate]="'change_project' | perm:false | async"
    [enableUpdate]="false"
    [enableDelete]="'change_project' | perm:false | async">
</entity-grid>
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""