UNPKG

@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
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';%><%}%><%}}%> <%}%> @Component({ template: '', }) export class <%-SchemaName%>Component extends MddsBaseComponent implements OnInit { // *** common input fields @Input() public style: any; // {} @Input() public override options: any; // {} uiOptions @Input() public searchObj: any; @Input() public override snackbarMessages: any = {}; // keys: edit, create, list, detail, delete, deleteMany TODO: archive, unarchive // *** list component @Input() public override inputData: any; @Input() public queryParams: any = {}; // {listSortField: 'a', listSortOrder: 'asc' / 'desc', perPage: 6} @Input() public categoryBy?: string; //field name whose value is used as category @Input() public override listViews: string[] = []; @Input() public viewInputs: any = {}; // list-asso component @Input('association') public override associationField?: any; // *** edit / create component @Input() public override id?: string; @Input() public cid?: string; // copy id @Input() public initData: any; // some fields has data already. eg: {a: b}. Used for add @Input() public initDataAllowChange: boolean = false; @Input() public override embeddedView: boolean = false; @Input() public embedMode?: string; // parent to tell the action - create // *** detail component // @Input() // public id:string; @Input() public disableActionButtons:boolean = false; @Input() public override listRouterLink: string = '<%-listRouterLink%>'; // router link from detail to list @Input() detailObj: any; @Input() showFieldsStr: string = ""; @Output() public override done = new EventEmitter<any>(); @Output() 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) {%> @ViewChild('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 || {}; } }