File

libs/rucken/todo-web/src/lib/entities/tasks/tasks-grid/tasks-grid.component.ts

Extends

BaseEntityListComponent

Implements

OnInit

Metadata

changeDetection ChangeDetectionStrategy.OnPush
selector tasks-grid
templateUrl ./tasks-grid.component.html

Index

Methods

Constructor

constructor(modalsService: ModalsService, errorsExtractor: ErrorsExtractor, translateService: TranslateService, dynamicRepository: DynamicRepository, tasksConfig: IRestProviderOptions)
Parameters :
Name Type Optional
modalsService ModalsService No
errorsExtractor ErrorsExtractor No
translateService TranslateService No
dynamicRepository DynamicRepository No
tasksConfig IRestProviderOptions<Task> No

Methods

defaultCreateCreateModal
defaultCreateCreateModal(item?: Task)
Parameters :
Name Type Optional
item Task Yes
Returns : any
defaultCreateUpdateModal
defaultCreateUpdateModal(item?: Task)
Parameters :
Name Type Optional
item Task Yes
Returns : any
ngOnInit
ngOnInit()
Returns : void
onChangeFilter
onChangeFilter(filter?: IBaseEntityGridFilter)
Parameters :
Name Type Optional
filter IBaseEntityGridFilter Yes
Returns : void
import { ChangeDetectionStrategy, Component, Inject, Input, OnInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import {
  BaseEntityListComponent,
  ErrorsExtractor,
  IBaseEntityGridFilter,
  IBaseEntityModalOptions,
  ModalsService,
  translate
} from '@rucken/core';
import { Project, Task, TASKS_CONFIG_TOKEN } from '@rucken/todo-core';
import { BindIoInner } from 'ngx-bind-io';
import { DynamicRepository, IRestProviderOptions } from 'ngx-repository';
import { map } from 'rxjs/operators';
import { TaskModalComponent } from '../task-modal/task-modal.component';

@BindIoInner()
@Component({
  selector: 'tasks-grid',
  templateUrl: './tasks-grid.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class TasksGridComponent extends BaseEntityListComponent<Task> implements OnInit {
  @Input()
  autoload = false;
  @Input()
  modalItem: IBaseEntityModalOptions = {
    component: TaskModalComponent
  };
  @Input()
  title = translate('Tasks');
  @Input()
  project: Project = undefined;

  constructor(
    modalsService: ModalsService,
    protected errorsExtractor: ErrorsExtractor,
    protected translateService: TranslateService,
    protected dynamicRepository: DynamicRepository,
    @Inject(TASKS_CONFIG_TOKEN)
    protected tasksConfig: IRestProviderOptions<Task>
  ) {
    super(dynamicRepository.fork<Task>(Task), modalsService, Task);
  }
  ngOnInit() {
    if (!this.mockedItems) {
      this.useRest({
        apiUrl: this.apiUrl,
        ...this.tasksConfig,
        autoload: this.autoload
      });
    }
    if (this.mockedItems) {
      this.useMock({
        items: this.mockedItems,
        ...this.tasksConfig,
        autoload: this.autoload
      });
    }
    this.items$ = this.repository.items$.pipe(
      map(items =>
        items.map(item => {
          item.project = this.project;
          return item;
        })
      )
    );
  }
  onChangeFilter(filter?: IBaseEntityGridFilter) {
    filter = filter ? filter : {};
    if (this.project) {
      filter.project = this.project.id;
      this.mockedItems = undefined;
    } else {
      this.mockedItems = [];
    }
    this.ngOnInit();
    super.onChangeFilter(filter);
  }
  defaultCreateCreateModal(item?: Task) {
    item = item || new Task();
    item.project = this.project;
    this.modalCreate = {
      ...this.modalCreate,
      initialState: {
        ...this.modalCreate.initialState,
        data: item
      }
    };
    return super.defaultCreateCreateModal(item);
  }
  defaultCreateUpdateModal(item?: Task) {
    item.project = this.project;
    this.modalUpdate = {
      ...this.modalUpdate,
      initialState: {
        ...this.modalUpdate.initialState,
        data: item
      }
    };
    return super.defaultCreateUpdateModal(item);
  }
}
<entity-grid
    [bindIO]
    [columns]="['title','range','status','action']"
    [enableCreate]="'add_task' | perm:false | async"
    [enableUpdate]="'change_task' | perm:false | async"
    [enableDelete]="'delete_task' | perm:false | async">
</entity-grid>
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""