File

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

Extends

StatusesGridComponent

Implements

ControlValueAccessor OnInit OnDestroy

Metadata

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

Index

Properties
Methods

Constructor

constructor(modalsService: ModalsService, errorsExtractor: ErrorsExtractor, translateService: TranslateService, dynamicRepository: DynamicRepository, statusesConfig: IRestProviderOptions)
Parameters :
Name Type Optional
modalsService ModalsService No
errorsExtractor ErrorsExtractor No
translateService TranslateService No
dynamicRepository DynamicRepository No
statusesConfig 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(statuses: StatusWithProject[])
Parameters :
Name Type Optional
statuses StatusWithProject[] No
Returns : void
defaultCreateCreateModal
defaultCreateCreateModal(item?: StatusWithProject)
Inherited from StatusesGridComponent
Parameters :
Name Type Optional
item StatusWithProject Yes
Returns : any
defaultCreateUpdateModal
defaultCreateUpdateModal(item?: StatusWithProject)
Inherited from StatusesGridComponent
Parameters :
Name Type Optional
item StatusWithProject Yes
Returns : any
ngOnInit
ngOnInit()
Inherited from StatusesGridComponent
Returns : void
onChangeFilter
onChangeFilter(filter?: IBaseEntityGridFilter)
Inherited from StatusesGridComponent
Parameters :
Name Type Optional
filter IBaseEntityGridFilter Yes
Returns : void

Properties

_onChange
Default value : () => {...}
_onTouched
Default value : () => {...}
mockedItemsChangeSubscription
Type : Subscription
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, ModalsService, translate, User } from '@rucken/core';
import { Project, STATUSES_CONFIG_TOKEN, StatusWithProject } from '@rucken/todo-core';
import { BindIoInner } from 'ngx-bind-io';
import { DynamicRepository, IRestProviderOptions, ProviderActionEnum } from 'ngx-repository';
import { Subscription } from 'rxjs';
import { StatusesGridModalComponent } from '../../statuses/statuses-grid-modal/statuses-grid-modal.component';
import { StatusesGridComponent } from '../../statuses/statuses-grid/statuses-grid.component';

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

  constructor(
    modalsService: ModalsService,
    protected errorsExtractor: ErrorsExtractor,
    protected translateService: TranslateService,
    protected dynamicRepository: DynamicRepository,
    @Inject(STATUSES_CONFIG_TOKEN)
    protected statusesConfig: IRestProviderOptions<User>
  ) {
    super(modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig);
  }
  ngOnInit(overrided?: boolean) {
    if (!overrided) {
      return;
    }
    if (!this.mockedItems) {
      this.useRest({
        apiUrl: this.apiUrl + '/project/' + this.project.id,
        autoload: !!this.project.id,
        ...this.statusesConfig,
        globalEventResolver: (data: any, action: ProviderActionEnum) => {
          return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
        }
      });
    }
    if (this.mockedItems) {
      this.useMock({
        items: this.mockedItems,
        autoload: true,
        ...this.statusesConfig,
        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(statuses: StatusWithProject[]): void {
    this.mockedItems = statuses || [];
    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]="['title', 'action']"
    (appendFromGrid)="onCreateClick()"
    [enableCreate]="'add_status' | perm:false | async"
    [enableUpdate]="'change_status' | perm:false | async"
    [enableDelete]="'delete_status' | perm:false | async">
</entity-grid>
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""