generator-zionapps
Version:
Angular 9 Code Generator
110 lines (101 loc) • 5.75 kB
text/typescript
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
import { Store } from '@ngrx/store';
import { NgRxCoreAngularAlertActions, NgRxCoreAngularNavActions } from '@zionapps/ngrx-angular';
import { getIdPropertyValue } from '@zionapps/core';
import { INgRxCoreMeta } from '@zionapps/ngrx-core';
import { Subscription } from 'rxjs/Subscription';<% if (ngRxSubStoreLocation === '@zionapps/ngrx-management') { %>
import { ManagementUserSelectors, <%= pascalCase(singularDomainName) %>, <%= pascalCase(pluralDomainName) %>Actions, <%= pascalCase(singularDomainName) %>Selectors } from '@zionapps/ngrx-management';<% } else if (ngRxSubStoreLocation) { %>
import { ManagementUserSelectors } from '@zionapps/ngrx-management';
import { <%= pascalCase(singularDomainName) %>, <%= pascalCase(pluralDomainName) %>Actions, <%= pascalCase(singularDomainName) %>Selectors } from '<%= ngRxSubStoreLocation %>';<% } else { %>
import { <%= pascalCase(pluralDomainName) %>Actions } from '../../../../store/<%= paramCase(pluralDomainName) %>/<%= paramCase(pluralDomainName) %>.actions';
import { <%= pascalCase(singularDomainName) %> } from '../../../../store/<%= paramCase(pluralDomainName) %>/<%= paramCase(pluralDomainName) %>.domain';
import { <%= pascalCase(singularDomainName) %>Selectors } from '../../../../store/<%= paramCase(pluralDomainName) %>/<%= paramCase(pluralDomainName) %>.selectors';<% } %>
import { <%= pascalCase(singularDomainName) %>FormComponent } from './<%= paramCase(singularDomainName) %>-form/<%= paramCase(singularDomainName) %>-form.component';
export class <%= pascalCase(singularDomainName) %>EditComponent implements OnInit, OnDestroy {
formComponent: <%= pascalCase(singularDomainName) %>FormComponent;
currentId: number;
<%= camelCase(singularDomainName) %>$ = this.store$.select(<%= pascalCase(singularDomainName) %>Selectors.Current);
hasAccess$ = this.store$.select(ManagementUserSelectors.HasAccess);
isNew = true;
title: string;
readonly meta: INgRxCoreMeta;
private paramsSubscription: Subscription;
private queryParamsSubscription: Subscription;
private returnUrl: string;
constructor(private route: ActivatedRoute, private store$: Store<any>) {
this.meta = { source: '<%= pascalCase(singularDomainName) %>EditComponent' };
}
ngOnInit(): void {
this.paramsSubscription = this.route.params.subscribe((params: Params) => {
this.currentId = +params['id'];
if (this.currentId) {
this.isNew = false;
this.title = 'Edit <%= titleCase(singularDomainName) %>';
} else {
this.title = 'Add <%= titleCase(singularDomainName) %>';
}
});
this.queryParamsSubscription = this.route.queryParams.subscribe((params: Params) => {
this.returnUrl = params['returnUrl'] || '/<%= paramCase(componentName) %>';
});
}
ngOnDestroy(): void {
this.store$.dispatch(<%= pascalCase(pluralDomainName) %>Actions.ClearCurrentId());
if (this.paramsSubscription) {
this.paramsSubscription.unsubscribe();
}
if (this.queryParamsSubscription) {
this.queryParamsSubscription.unsubscribe();
}
}
onDeleteRequest(<%= camelCase(singularDomainName) %>: <%= pascalCase(singularDomainName) %>): void {
const id = getIdPropertyValue(<%= camelCase(singularDomainName) %>, 'id');
if (id) {
this.store$.dispatch(NgRxCoreAngularAlertActions.ShowConfirm({
cancelText: 'No',
buttonText: 'Yes',
handler: (willDelete: boolean) => {
if (willDelete) {
this.store$.dispatch(<%= pascalCase(pluralDomainName) %>Actions.DeleteOneRemoteRequest(id, this.meta));
}
},
message: 'Are you sure you want to delete this <%= lowerCase(sentenceCase(singularDomainName)) %>? This action cannot be undone.',
title: 'Confirm Deleting <%= titleCase(singularDomainName) %>',
}, this.meta));
} else {
this.store$.dispatch(NgRxCoreAngularAlertActions.ShowAlert({
buttonText: 'Ok',
message: 'An unknown error occurred. The <%= lowerCase(sentenceCase(singularDomainName)) %> could not be removed',
title: '<%= titleCase(singularDomainName) %> Error',
}, this.meta));
}
}
onGoBack(): void {
this.store$.dispatch(NgRxCoreAngularNavActions.NavigateByUrlRequest(this.returnUrl, this.meta));
}
onRightButtonClick(): void {
this.onSaveRequest(this.formComponent.form.getRawValue());
}
onSaveRequest(<%= camelCase(singularDomainName) %>: <%= pascalCase(singularDomainName) %>): void {
if (<%= camelCase(singularDomainName) %>) {
const id = getIdPropertyValue(<%= camelCase(singularDomainName) %>, 'id');
if (!id) {
this.store$.dispatch(<%= pascalCase(pluralDomainName) %>Actions.CreateOneRemoteRequest(<%= camelCase(singularDomainName) %>, this.meta));
} else {
this.store$.dispatch(<%= pascalCase(pluralDomainName) %>Actions.UpdateOneRemoteRequest(<%= camelCase(singularDomainName) %>, this.meta));
}
} else {
this.store$.dispatch(NgRxCoreAngularAlertActions.ShowAlert({
buttonText: 'Ok',
message: 'An unknown error occurred. The <%= lowerCase(sentenceCase(singularDomainName)) %> could not be saved',
title: '<%= titleCase(singularDomainName) %> Error',
}, this.meta));
}
}
}