import { Rule, SchematicContext, Tree, chain, schematic } from '@angular-devkit/schematics'; import { classify } from '@angular-devkit/core/src/utils/strings'; import { ComponentType } from '../../updates/update-modules.gen'; import { JeovaSchematicsEnum } from '../../../shared/jeova-schematics.enum'; import { FormBehavior, IModel, ModelRelation } from '@vmfvmf/ywtc-lib/dist/model'; import { FrontEndGenerator } from '../../../shared/generator'; import { getPrjSrd } from '../../../router.gen'; export function gen(model: IModel): Rule { let updateTemplate = 'abstractUpdatePageTemplate'; if (model.relations .some((relation: ModelRelation) => relation.formBehavior === FormBehavior.CHILD_FORM)) { updateTemplate = 'abstractGroupTabUpdatePageTemplate'; } return (tree: Tree, _context: SchematicContext) => { const componentName = classify(model.name!) + 'UpdatePageComponent'; const componentType = ComponentType.EDITION_PAGE; const url = model.url; const rule = chain([ new FrontEndGenerator(__filename).gen({...model, ...getPrjSrd(), updateTemplate}), schematic(JeovaSchematicsEnum.UPDATE_FRONTEND_MODULE, {componentName, componentType, url}) ]); return rule(tree, _context); }; }