@hicoder/angular-cli
Version:
Angular UI componenets and service generator. It works with the mean-rest-express package to generate the end to end web application. The input to this generator is the Mongoose schema defined for the express application. mean-rest-express exposes the Res
119 lines (100 loc) • 4.14 kB
text/typescript
import { ActivatedRoute } from '@angular/router';
import { MddsBaseComponent, ViewType } from '@hicoder/angular-core';
import { Component, OnInit, Injector, Input, Output, EventEmitter } from '@angular/core';
import { <%-SchemaName%>Service } from './<%-schemaName%>.service';
const itemCamelName = '<%-schemaCamelName%>';
export { ViewType };
<%if (sFeatures.hasRef) {%>
import { ViewChild, ViewContainerRef } from '@angular/core';<%}%>
<%if (sFeatures.hasRef) {%>
<%_ for (let field of compositeEditBriefView) {
if (field.Ref) {%>
<% if (refApi[field.ref].includes("R")){%><%}%>
<%_ if (refApi[field.ref].includes("L")) {%>
%>import { <%-field.Ref%>ListSelectComponent } from '../<%-field.ref%>/<%-field.ref%>-list/<%-field.ref%>-list-select.component';%><%}%><%}}%>
<%}%>
({
template: '',
})
export class <%-SchemaName%>Component extends MddsBaseComponent implements OnInit {
// *** common input fields
()
public style: any; // {}
()
public override options: any; // {} uiOptions
()
public searchObj: any;
()
public override snackbarMessages: any = {}; // keys: edit, create, list, detail, delete, deleteMany TODO: archive, unarchive
// *** list component
()
public override inputData: any;
()
public queryParams: any = {}; // {listSortField: 'a', listSortOrder: 'asc' / 'desc', perPage: 6}
()
public categoryBy?: string; //field name whose value is used as category
()
public override listViews: string[] = [];
()
public viewInputs: any = {};
// list-asso component
('association') public override associationField?: any;
// *** edit / create component
()
public override id?: string;
()
public cid?: string; // copy id
()
public initData: any; // some fields has data already. eg: {a: b}. Used for add
()
public initDataAllowChange: boolean = false;
()
public override embeddedView: boolean = false;
()
public embedMode?: string; // parent to tell the action - create
// *** detail component
// @Input()
// public id:string;
()
public disableActionButtons:boolean = false;
()
public override listRouterLink: string = '<%-listRouterLink%>'; // router link from detail to list
() detailObj: any;
() showFieldsStr: string = "";
()
public override done = new EventEmitter<any>();
()
public override eventEmitter: EventEmitter<any> = new EventEmitter();
<%if (sFeatures.hasRef) {%>
public override fieldsRefComponents: { [k: string]: any } = {
<%_ for (let field of compositeEditBriefView) {
if (field.Ref) {%>
'<%-field.fieldName%>': {
<% if (refApi[field.ref].includes("L")) {%>'select-type': <%-field.Ref%>ListSelectComponent,<%}%>
<% if (refApi[field.ref].includes("R")) {%><%}%>
'componentRef': null},<%}}%>
}
<%}%>
<%if (sFeatures.hasRef) {%><%_ for (let field of compositeEditBriefView) {
if (field.Ref) {%>
('field<%-field.FieldName%>', { read: ViewContainerRef }) public field<%-field.FieldName%>?: ViewContainerRef<%}}%>
<%}%>
public override schemaName: string = '<%-schemaName%>';
public override modulePath: string = '<%-moduleName%>';
public override deleteConfirmationMessage: string = '<%-deleteConfirmationMessage%>';
public override deleteConfirmationMessageBulk: string = '<%-deleteConfirmationMessageBulk%>';
constructor(
public <%-schemaName%>Service: <%-SchemaName%>Service,
public override injector: Injector,
public override route: ActivatedRoute,
) {
super(<%-schemaName%>Service, injector, route);
this.setItemNames(itemCamelName);
<%- include('schema-base-construct.component.ts')%>
this.indexFields = [<%for (let field of indexView) {%>'<%-field.fieldName%>',<%}%> ];
}
ngOnInit() {
this.style = this.style || {};
this.options = this.options || {};
}
}