libs/rucken/todo-web/src/lib/entities/tasks/tasks-grid/tasks-grid.component.ts
BaseEntityListComponent
changeDetection | ChangeDetectionStrategy.OnPush |
selector | tasks-grid |
templateUrl | ./tasks-grid.component.html |
Methods |
constructor(modalsService: ModalsService, errorsExtractor: ErrorsExtractor, translateService: TranslateService, dynamicRepository: DynamicRepository, tasksConfig: IRestProviderOptions
|
||||||||||||||||||
Parameters :
|
defaultCreateCreateModal | ||||||
defaultCreateCreateModal(item?: Task)
|
||||||
Parameters :
Returns :
any
|
defaultCreateUpdateModal | ||||||
defaultCreateUpdateModal(item?: Task)
|
||||||
Parameters :
Returns :
any
|
ngOnInit |
ngOnInit()
|
Returns :
void
|
onChangeFilter | ||||||
onChangeFilter(filter?: IBaseEntityGridFilter)
|
||||||
Parameters :
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>