@memberjunction/codegen-lib 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Angular/angular-codegen.d.ts +63 -0
- package/dist/Angular/angular-codegen.d.ts.map +1 -0
- package/dist/{angular_client_codegen.js → Angular/angular-codegen.js} +148 -44
- package/dist/Angular/angular-codegen.js.map +1 -0
- package/dist/Angular/join-grid-related-entity-component.d.ts +24 -0
- package/dist/Angular/join-grid-related-entity-component.d.ts.map +1 -0
- package/dist/Angular/join-grid-related-entity-component.js +86 -0
- package/dist/Angular/join-grid-related-entity-component.js.map +1 -0
- package/dist/Angular/related-entity-components.d.ts +111 -0
- package/dist/Angular/related-entity-components.d.ts.map +1 -0
- package/dist/Angular/related-entity-components.js +82 -0
- package/dist/Angular/related-entity-components.js.map +1 -0
- package/dist/Angular/user-view-grid-related-entity-component.d.ts +11 -0
- package/dist/Angular/user-view-grid-related-entity-component.d.ts.map +1 -0
- package/dist/Angular/user-view-grid-related-entity-component.js +51 -0
- package/dist/Angular/user-view-grid-related-entity-component.js.map +1 -0
- package/dist/Config/config.d.ts.map +1 -0
- package/dist/{config.js → Config/config.js} +1 -1
- package/dist/Config/config.js.map +1 -0
- package/dist/{db.d.ts → Config/db-connection.d.ts} +1 -1
- package/dist/Config/db-connection.d.ts.map +1 -0
- package/dist/{db.js → Config/db-connection.js} +1 -1
- package/dist/Config/db-connection.js.map +1 -0
- package/dist/Database/dbSchema.d.ts.map +1 -0
- package/dist/{dbSchema.js → Database/dbSchema.js} +2 -2
- package/dist/Database/dbSchema.js.map +1 -0
- package/dist/{manageMetadata.d.ts → Database/manage-metadata.d.ts} +36 -3
- package/dist/Database/manage-metadata.d.ts.map +1 -0
- package/dist/{manageMetadata.js → Database/manage-metadata.js} +166 -16
- package/dist/Database/manage-metadata.js.map +1 -0
- package/dist/Database/sql.d.ts.map +1 -0
- package/dist/{sql.js → Database/sql.js} +5 -5
- package/dist/Database/sql.js.map +1 -0
- package/dist/Database/sql_codegen.d.ts.map +1 -0
- package/dist/{sql_codegen.js → Database/sql_codegen.js} +20 -30
- package/dist/Database/sql_codegen.js.map +1 -0
- package/dist/{advanced_generation.d.ts → Misc/advanced_generation.d.ts} +1 -1
- package/dist/Misc/advanced_generation.d.ts.map +1 -0
- package/dist/{advanced_generation.js → Misc/advanced_generation.js} +1 -1
- package/dist/Misc/advanced_generation.js.map +1 -0
- package/dist/Misc/createNewUser.d.ts +12 -0
- package/dist/Misc/createNewUser.d.ts.map +1 -0
- package/dist/Misc/createNewUser.js +113 -0
- package/dist/Misc/createNewUser.js.map +1 -0
- package/dist/Misc/logging.d.ts.map +1 -0
- package/dist/{logging.js → Misc/logging.js} +1 -1
- package/dist/Misc/logging.js.map +1 -0
- package/dist/{runCommand.d.ts → Misc/runCommand.d.ts} +1 -1
- package/dist/Misc/runCommand.d.ts.map +1 -0
- package/dist/Misc/runCommand.js.map +1 -0
- package/dist/Misc/util.d.ts.map +1 -0
- package/dist/Misc/util.js.map +1 -0
- package/dist/action_subclasses_codegen.js +1 -1
- package/dist/action_subclasses_codegen.js.map +1 -1
- package/dist/createNewUser.d.ts +1 -1
- package/dist/createNewUser.d.ts.map +1 -1
- package/dist/createNewUser.js +2 -2
- package/dist/createNewUser.js.map +1 -1
- package/dist/entity_subclasses_codegen.js +1 -1
- package/dist/entity_subclasses_codegen.js.map +1 -1
- package/dist/graphql_server_codegen.d.ts.map +1 -1
- package/dist/graphql_server_codegen.js +10 -6
- package/dist/graphql_server_codegen.js.map +1 -1
- package/dist/index.d.ts +14 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -11
- package/dist/index.js.map +1 -1
- package/dist/runCodeGen.js +21 -21
- package/dist/runCodeGen.js.map +1 -1
- package/package.json +7 -7
- package/dist/advanced_generation.d.ts.map +0 -1
- package/dist/advanced_generation.js.map +0 -1
- package/dist/angular_client_codegen.d.ts +0 -43
- package/dist/angular_client_codegen.d.ts.map +0 -1
- package/dist/angular_client_codegen.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/db.d.ts.map +0 -1
- package/dist/db.js.map +0 -1
- package/dist/dbSchema.d.ts.map +0 -1
- package/dist/dbSchema.js.map +0 -1
- package/dist/logging.d.ts.map +0 -1
- package/dist/logging.js.map +0 -1
- package/dist/manageMetadata.d.ts.map +0 -1
- package/dist/manageMetadata.js.map +0 -1
- package/dist/runCommand.d.ts.map +0 -1
- package/dist/runCommand.js.map +0 -1
- package/dist/sql.d.ts.map +0 -1
- package/dist/sql.js.map +0 -1
- package/dist/sql_codegen.d.ts.map +0 -1
- package/dist/sql_codegen.js.map +0 -1
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js.map +0 -1
- /package/dist/{config.d.ts → Config/config.d.ts} +0 -0
- /package/dist/{dbSchema.d.ts → Database/dbSchema.d.ts} +0 -0
- /package/dist/{sql.d.ts → Database/sql.d.ts} +0 -0
- /package/dist/{sql_codegen.d.ts → Database/sql_codegen.d.ts} +0 -0
- /package/dist/{logging.d.ts → Misc/logging.d.ts} +0 -0
- /package/dist/{runCommand.js → Misc/runCommand.js} +0 -0
- /package/dist/{util.d.ts → Misc/util.d.ts} +0 -0
- /package/dist/{util.js → Misc/util.js} +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { EntityInfo, EntityFieldInfo, GeneratedFormSectionType, UserInfo } from '@memberjunction/core';
|
|
2
|
+
import { GenerationResult } from './related-entity-components';
|
|
3
|
+
export declare class AngularFormSectionInfo {
|
|
4
|
+
Type: GeneratedFormSectionType;
|
|
5
|
+
Name: string;
|
|
6
|
+
TabCode: string;
|
|
7
|
+
ClassName?: string;
|
|
8
|
+
FileName?: string;
|
|
9
|
+
ComponentCode?: string;
|
|
10
|
+
Fields?: EntityFieldInfo[];
|
|
11
|
+
FileNameWithoutExtension?: string;
|
|
12
|
+
EntityClassName?: string;
|
|
13
|
+
IsRelatedEntity?: boolean;
|
|
14
|
+
RelatedEntityDisplayLocation?: 'Before Field Tabs' | 'After Field Tabs';
|
|
15
|
+
GeneratedOutput?: GenerationResult;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Base class for generating Angular client code, you can sub-class this class to create your own Angular client code generator logic
|
|
19
|
+
*/
|
|
20
|
+
export declare class AngularClientGeneratorBase {
|
|
21
|
+
generateAngularCode(entities: EntityInfo[], directory: string, modulePrefix: string, contextUser: UserInfo): Promise<boolean>;
|
|
22
|
+
protected generateAngularModule(componentImports: string[], componentNames: {
|
|
23
|
+
componentName: string;
|
|
24
|
+
relatedEntityItemsRequired: {
|
|
25
|
+
itemClassName: string;
|
|
26
|
+
moduleClassName: string;
|
|
27
|
+
}[];
|
|
28
|
+
}[], relatedEntityModuleImports: {
|
|
29
|
+
library: string;
|
|
30
|
+
modules: string[];
|
|
31
|
+
}[], sections: AngularFormSectionInfo[], modulePrefix: string, maxComponentsPerModule?: number): string;
|
|
32
|
+
protected generateAngularModuleCode(componentNames: {
|
|
33
|
+
componentName: string;
|
|
34
|
+
relatedEntityItemsRequired: {
|
|
35
|
+
itemClassName: string;
|
|
36
|
+
moduleClassName: string;
|
|
37
|
+
}[];
|
|
38
|
+
}[], sections: AngularFormSectionInfo[], maxComponentsPerModule: number, modulePrefix: string): string;
|
|
39
|
+
protected subModule_BaseName: string;
|
|
40
|
+
/**
|
|
41
|
+
* Get the base name for the sub-modules, override this method to change the base name. Defaults to 'GeneratedForms_SubModule_'
|
|
42
|
+
*/
|
|
43
|
+
get SubModuleBaseName(): string;
|
|
44
|
+
protected generateSubModuleEnding(moduleNumber: number, additionalModulesToImport: string[]): string;
|
|
45
|
+
protected generateSingleEntityTypeScriptForAngular(entity: EntityInfo, additionalSections: AngularFormSectionInfo[], relatedEntitySections: AngularFormSectionInfo[]): string;
|
|
46
|
+
protected entityHasTopArea(entity: EntityInfo): boolean;
|
|
47
|
+
protected generateTopAreaHTMLForAngular(entity: EntityInfo): string;
|
|
48
|
+
protected AddSectionIfNeeded(entity: EntityInfo, sections: AngularFormSectionInfo[], type: GeneratedFormSectionType, name: string): void;
|
|
49
|
+
protected generateAngularAdditionalSections(entity: EntityInfo, startIndex: number): AngularFormSectionInfo[];
|
|
50
|
+
protected generateSectionHTMLForAngular(entity: EntityInfo, section: AngularFormSectionInfo): string;
|
|
51
|
+
protected generateRelatedEntityTabs(entity: EntityInfo, startIndex: number, contextUser: UserInfo): Promise<AngularFormSectionInfo[]>;
|
|
52
|
+
protected stripWhiteSpace(s: string): string;
|
|
53
|
+
protected generateSingleEntityHTMLForAngular(entity: EntityInfo, contextUser: UserInfo): Promise<{
|
|
54
|
+
htmlCode: string;
|
|
55
|
+
additionalSections: AngularFormSectionInfo[];
|
|
56
|
+
relatedEntitySections: AngularFormSectionInfo[];
|
|
57
|
+
}>;
|
|
58
|
+
protected generateSingleEntityHTMLWithSplitterForAngular(topArea: any, additionalSections: AngularFormSectionInfo[], relatedEntitySections: AngularFormSectionInfo[]): string;
|
|
59
|
+
protected innerTopAreaHTML(topArea: string): string;
|
|
60
|
+
protected innerTabStripHTML(additionalSections: AngularFormSectionInfo[], relatedEntitySections: AngularFormSectionInfo[]): string;
|
|
61
|
+
protected generateSingleEntityHTMLWithOUTSplitterForAngular(topArea: any, additionalSections: AngularFormSectionInfo[], relatedEntitySections: AngularFormSectionInfo[]): string;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=angular-codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-codegen.d.ts","sourceRoot":"","sources":["../../src/Angular/angular-codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AngularClientGeneratorBase = exports.AngularFormSectionInfo = void 0;
|
|
13
13
|
const core_1 = require("@memberjunction/core");
|
|
14
|
-
const logging_1 = require("
|
|
14
|
+
const logging_1 = require("../Misc/logging");
|
|
15
15
|
const fs_1 = __importDefault(require("fs"));
|
|
16
16
|
const path_1 = __importDefault(require("path"));
|
|
17
|
-
const config_1 = require("
|
|
17
|
+
const config_1 = require("../Config/config");
|
|
18
18
|
const global_1 = require("@memberjunction/global");
|
|
19
|
+
const related_entity_components_1 = require("./related-entity-components");
|
|
19
20
|
class AngularFormSectionInfo {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.IsRelatedEntity = false;
|
|
23
|
+
this.RelatedEntityDisplayLocation = 'After Field Tabs';
|
|
24
|
+
}
|
|
20
25
|
}
|
|
21
26
|
exports.AngularFormSectionInfo = AngularFormSectionInfo;
|
|
22
27
|
/**
|
|
@@ -26,11 +31,12 @@ let AngularClientGeneratorBase = class AngularClientGeneratorBase {
|
|
|
26
31
|
constructor() {
|
|
27
32
|
this.subModule_BaseName = 'GeneratedForms_SubModule_';
|
|
28
33
|
}
|
|
29
|
-
generateAngularCode(entities, directory, modulePrefix) {
|
|
34
|
+
async generateAngularCode(entities, directory, modulePrefix, contextUser) {
|
|
30
35
|
try {
|
|
31
36
|
const entityPath = path_1.default.join(directory, 'Entities');
|
|
32
37
|
//const classMapEntries: string[] = [];
|
|
33
38
|
const componentImports = [];
|
|
39
|
+
const relatedEntityModuleImports = [];
|
|
34
40
|
const componentNames = [];
|
|
35
41
|
const sections = [];
|
|
36
42
|
if (!fs_1.default.existsSync(entityPath))
|
|
@@ -41,29 +47,50 @@ let AngularClientGeneratorBase = class AngularClientGeneratorBase {
|
|
|
41
47
|
const thisEntityPath = path_1.default.join(entityPath, entity.ClassName);
|
|
42
48
|
if (!fs_1.default.existsSync(thisEntityPath))
|
|
43
49
|
fs_1.default.mkdirSync(thisEntityPath, { recursive: true }); // create the directory if it doesn't exist
|
|
44
|
-
const { htmlCode,
|
|
45
|
-
const tsCode = this.generateSingleEntityTypeScriptForAngular(entity,
|
|
50
|
+
const { htmlCode, additionalSections, relatedEntitySections } = await this.generateSingleEntityHTMLForAngular(entity, contextUser);
|
|
51
|
+
const tsCode = this.generateSingleEntityTypeScriptForAngular(entity, additionalSections, relatedEntitySections);
|
|
46
52
|
fs_1.default.writeFileSync(path_1.default.join(thisEntityPath, `${entity.ClassName.toLowerCase()}.form.component.ts`), tsCode);
|
|
47
53
|
fs_1.default.writeFileSync(path_1.default.join(thisEntityPath, `${entity.ClassName.toLowerCase()}.form.component.html`), htmlCode);
|
|
48
|
-
if (
|
|
54
|
+
if (additionalSections.length > 0) {
|
|
49
55
|
const sectionPath = path_1.default.join(thisEntityPath, 'sections');
|
|
50
56
|
if (!fs_1.default.existsSync(sectionPath))
|
|
51
57
|
fs_1.default.mkdirSync(sectionPath, { recursive: true }); // create the directory if it doesn't exist
|
|
52
|
-
for (let j = 0; j <
|
|
53
|
-
fs_1.default.writeFileSync(path_1.default.join(sectionPath, `${
|
|
54
|
-
sections.push(
|
|
58
|
+
for (let j = 0; j < additionalSections.length; ++j) {
|
|
59
|
+
fs_1.default.writeFileSync(path_1.default.join(sectionPath, `${additionalSections[j].FileName}`), additionalSections[j].ComponentCode);
|
|
60
|
+
sections.push(additionalSections[j]); // add the entity's secitons one by one to the master/global list of sections
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
63
|
const componentName = `${entity.ClassName}FormComponent`;
|
|
58
64
|
componentImports.push(`import { ${componentName}, Load${componentName} } from "./Entities/${entity.ClassName}/${entity.ClassName.toLowerCase()}.form.component";`);
|
|
59
|
-
|
|
65
|
+
const currentComponentDistinctRelatedEntityClassNames = [];
|
|
66
|
+
relatedEntitySections.forEach(s => s.GeneratedOutput.Component.ImportItems.forEach(i => {
|
|
67
|
+
if (!currentComponentDistinctRelatedEntityClassNames.find(ii => ii.itemClassName === i.ClassName))
|
|
68
|
+
currentComponentDistinctRelatedEntityClassNames.push({ itemClassName: i.ClassName, moduleClassName: i.ModuleName });
|
|
69
|
+
}));
|
|
70
|
+
componentNames.push({
|
|
71
|
+
componentName: componentName,
|
|
72
|
+
relatedEntityItemsRequired: currentComponentDistinctRelatedEntityClassNames,
|
|
73
|
+
});
|
|
74
|
+
// go through all related entities used by this component and add them to the relatedEntityModuleImports array, but distinct for the library and the module names within the library
|
|
75
|
+
relatedEntitySections.forEach(s => {
|
|
76
|
+
let match = relatedEntityModuleImports.find(m => m.library === s.GeneratedOutput.Component.ImportPath);
|
|
77
|
+
if (!match) {
|
|
78
|
+
match = { library: s.GeneratedOutput.Component.ImportPath, modules: [] };
|
|
79
|
+
relatedEntityModuleImports.push(match);
|
|
80
|
+
}
|
|
81
|
+
s.GeneratedOutput.Component.ImportItems.forEach(i => {
|
|
82
|
+
if (!match.modules.includes(i.ModuleName))
|
|
83
|
+
match.modules.push(i.ModuleName);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
// now the imports are good
|
|
60
87
|
}
|
|
61
88
|
else {
|
|
62
89
|
(0, logging_1.logStatus)(` Entity ${entity.Name} does not have a primary key or is not included in the API, skipping code generation for this entity`);
|
|
63
90
|
}
|
|
64
91
|
}
|
|
65
92
|
const maxComponentsPerModule = (0, config_1.outputOptionValue)('Angular', 'maxComponentsPerModule', 25);
|
|
66
|
-
const moduleCode = this.generateAngularModule(componentImports, componentNames, sections, modulePrefix, maxComponentsPerModule);
|
|
93
|
+
const moduleCode = this.generateAngularModule(componentImports, componentNames, relatedEntityModuleImports, sections, modulePrefix, maxComponentsPerModule);
|
|
67
94
|
fs_1.default.writeFileSync(path_1.default.join(directory, 'generated-forms.module.ts'), moduleCode);
|
|
68
95
|
return true;
|
|
69
96
|
}
|
|
@@ -72,7 +99,7 @@ let AngularClientGeneratorBase = class AngularClientGeneratorBase {
|
|
|
72
99
|
return false;
|
|
73
100
|
}
|
|
74
101
|
}
|
|
75
|
-
generateAngularModule(componentImports, componentNames, sections, modulePrefix, maxComponentsPerModule = 25) {
|
|
102
|
+
generateAngularModule(componentImports, componentNames, relatedEntityModuleImports, sections, modulePrefix, maxComponentsPerModule = 25) {
|
|
76
103
|
// this function will generate the overall code for the module file.
|
|
77
104
|
// there is one master angular module called GeneratedFormsModule, and this module will include all of the sub-modules
|
|
78
105
|
// the reason we do this is because of limits in the size of the types you can create in TypeScript and if we have a very large
|
|
@@ -110,7 +137,9 @@ import { DropDownListModule } from '@progress/kendo-angular-dropdowns';
|
|
|
110
137
|
// Import Generated Components
|
|
111
138
|
${componentImports.join('\n')}
|
|
112
139
|
${sections.map(s => `import { ${s.ClassName}, Load${s.ClassName} } from "./Entities/${s.EntityClassName}/sections/${s.FileNameWithoutExtension}"`).join('\n')}
|
|
113
|
-
|
|
140
|
+
${relatedEntityModuleImports.filter(remi => remi.library.trim().toLowerCase() !== '@memberjunction/ng-user-view-grid')
|
|
141
|
+
.map(remi => `import { ${remi.modules.map(m => m).join(', ')} } from "${remi.library}"`)
|
|
142
|
+
.join('\n')}
|
|
114
143
|
${moduleCode}
|
|
115
144
|
|
|
116
145
|
export function Load${modulePrefix}GeneratedForms() {
|
|
@@ -119,7 +148,7 @@ export function Load${modulePrefix}GeneratedForms() {
|
|
|
119
148
|
// code do NOTHING - the point is to prevent the code from being eliminated during tree shaking
|
|
120
149
|
// since it is dynamically instantiated on demand, and the Angular compiler has no way to know that,
|
|
121
150
|
// in production builds tree shaking will eliminate the code unless we do this
|
|
122
|
-
${componentNames.map(c => `Load${c}();`).join('\n ')}
|
|
151
|
+
${componentNames.map(c => `Load${c.componentName}();`).join('\n ')}
|
|
123
152
|
${sections.map(s => `Load${s.ClassName}();`).join('\n ')}
|
|
124
153
|
}
|
|
125
154
|
`;
|
|
@@ -128,7 +157,8 @@ export function Load${modulePrefix}GeneratedForms() {
|
|
|
128
157
|
// this function breaks up the componentNames and sections up, we only want to have a max of maxComponentsPerModule components per module (of components and/or sections, doesn't matter)
|
|
129
158
|
// so, we break up the list of components into sub-modules, and then generate the code for each sub-module
|
|
130
159
|
// iterate through the componentNames first, then after we've exhausted those, then iterate through the sections
|
|
131
|
-
const
|
|
160
|
+
const simpleComponentNames = componentNames.map(c => c.componentName);
|
|
161
|
+
const combinedArray = simpleComponentNames.concat(sections.map(s => s.ClassName));
|
|
132
162
|
const subModules = [];
|
|
133
163
|
let currentComponentCount = 0;
|
|
134
164
|
const subModuleStarter = `
|
|
@@ -137,14 +167,23 @@ declarations: [
|
|
|
137
167
|
`;
|
|
138
168
|
let currentSubModuleCode = subModuleStarter;
|
|
139
169
|
// loop through the combined array which is the combination of the componentNames and the sections
|
|
170
|
+
let currentSubModuleAdditionalModulesToImport = [];
|
|
140
171
|
for (let i = 0; i < combinedArray.length; ++i) {
|
|
141
172
|
currentSubModuleCode += (currentComponentCount === 0 ? '' : ',\n') + ' ' + combinedArray[i]; // prepend a comma if this isn't the first component in the module
|
|
142
|
-
if
|
|
143
|
-
|
|
173
|
+
// lookup the componentName and see if we have any relatedEntityItemsRequired, if so, add them to the currentSubModuleAdditionalModulesToImport array
|
|
174
|
+
const relatedEntityItemsRequired = componentNames.find(c => c.componentName === combinedArray[i])?.relatedEntityItemsRequired;
|
|
175
|
+
if (relatedEntityItemsRequired && relatedEntityItemsRequired.length > 0) {
|
|
176
|
+
relatedEntityItemsRequired.forEach(r => {
|
|
177
|
+
if (!currentSubModuleAdditionalModulesToImport.includes(r.moduleClassName))
|
|
178
|
+
currentSubModuleAdditionalModulesToImport.push(r.moduleClassName);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
if ((currentComponentCount === maxComponentsPerModule - 1) || (i === combinedArray.length - 1)) {
|
|
144
182
|
// we have reached the max number of components for this module, so generate the module code and reset the counters
|
|
145
|
-
currentSubModuleCode += this.generateSubModuleEnding(subModules.length);
|
|
183
|
+
currentSubModuleCode += this.generateSubModuleEnding(subModules.length, currentSubModuleAdditionalModulesToImport);
|
|
146
184
|
subModules.push(currentSubModuleCode);
|
|
147
|
-
currentSubModuleCode = subModuleStarter;
|
|
185
|
+
currentSubModuleCode = subModuleStarter; // reset
|
|
186
|
+
currentSubModuleAdditionalModulesToImport = []; // reset
|
|
148
187
|
currentComponentCount = 0;
|
|
149
188
|
}
|
|
150
189
|
else
|
|
@@ -171,7 +210,7 @@ export class ${modulePrefix}GeneratedFormsModule { }`;
|
|
|
171
210
|
get SubModuleBaseName() {
|
|
172
211
|
return this.subModule_BaseName;
|
|
173
212
|
}
|
|
174
|
-
generateSubModuleEnding(moduleNumber) {
|
|
213
|
+
generateSubModuleEnding(moduleNumber, additionalModulesToImport) {
|
|
175
214
|
return `],
|
|
176
215
|
imports: [
|
|
177
216
|
CommonModule,
|
|
@@ -187,7 +226,7 @@ imports: [
|
|
|
187
226
|
MJTabStripModule,
|
|
188
227
|
ContainerDirectivesModule,
|
|
189
228
|
DropDownListModule,
|
|
190
|
-
ComboBoxModule
|
|
229
|
+
ComboBoxModule${additionalModulesToImport.length > 0 ? ',\n ' + additionalModulesToImport.join(',\n ') : ''}
|
|
191
230
|
],
|
|
192
231
|
exports: [
|
|
193
232
|
]
|
|
@@ -195,14 +234,44 @@ exports: [
|
|
|
195
234
|
export class ${this.SubModuleBaseName}${moduleNumber} { }
|
|
196
235
|
`;
|
|
197
236
|
}
|
|
198
|
-
generateSingleEntityTypeScriptForAngular(entity,
|
|
237
|
+
generateSingleEntityTypeScriptForAngular(entity, additionalSections, relatedEntitySections) {
|
|
199
238
|
const entityObjectClass = entity.ClassName;
|
|
200
|
-
const sectionImports =
|
|
239
|
+
const sectionImports = additionalSections.length > 0 ? additionalSections.map(s => `import { Load${s.ClassName} } from "./sections/${s.FileNameWithoutExtension}"`).join('\n') : '';
|
|
240
|
+
// next, build a list of distinct imports at the library level and for components within the library
|
|
241
|
+
const libs = relatedEntitySections.length > 0 ? relatedEntitySections.filter(s => s.GeneratedOutput && s.GeneratedOutput.Component && s.GeneratedOutput.Component.ImportPath)
|
|
242
|
+
.map(s => {
|
|
243
|
+
return {
|
|
244
|
+
lib: s.GeneratedOutput.Component.ImportPath,
|
|
245
|
+
items: []
|
|
246
|
+
};
|
|
247
|
+
}) : [];
|
|
248
|
+
const distinctLibs = [];
|
|
249
|
+
libs.forEach(l => {
|
|
250
|
+
if (!distinctLibs.find(ll => ll.lib === l.lib))
|
|
251
|
+
distinctLibs.push(l);
|
|
252
|
+
});
|
|
253
|
+
// now we have a list of distinct libraries, next we go through all the ITEMS and add them to the appropriate library but make sure to keep those items distinct too
|
|
254
|
+
relatedEntitySections.filter(s => s.GeneratedOutput && s.GeneratedOutput.Component && s.GeneratedOutput.Component.ImportItems)
|
|
255
|
+
.forEach(s => {
|
|
256
|
+
const lib = distinctLibs.find(l => l.lib === s.GeneratedOutput.Component.ImportPath);
|
|
257
|
+
if (lib) {
|
|
258
|
+
s.GeneratedOutput.Component.ImportItems.forEach(i => {
|
|
259
|
+
if (!lib.items.includes(i.ClassName))
|
|
260
|
+
lib.items.push(i.ClassName);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
// nowe our libs array is good to go, we can generate the import statements for the libraries and the items within the libraries
|
|
265
|
+
const generationImports = distinctLibs.map(l => `import { ${l.items.join(", ")} } from "${l.lib}"`).join('\n');
|
|
266
|
+
const generationInjectedCode = relatedEntitySections.length > 0 ?
|
|
267
|
+
relatedEntitySections.filter(s => s.GeneratedOutput && s.GeneratedOutput.CodeOutput?.length > 0)
|
|
268
|
+
.map(s => s.GeneratedOutput.CodeOutput.split("\n").map(l => ` ${l}`).join("\n")).join('\n') : '';
|
|
201
269
|
return `import { Component } from '@angular/core';
|
|
202
270
|
import { ${entityObjectClass}Entity } from '${entity.SchemaName === config_1.mjCoreSchema ? '@memberjunction/core-entities' : 'mj_generatedentities'}';
|
|
203
271
|
import { RegisterClass } from '@memberjunction/global';
|
|
204
272
|
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
205
|
-
${sectionImports}
|
|
273
|
+
${sectionImports}${generationImports.length > 0 ? '\n' + generationImports : ''}
|
|
274
|
+
|
|
206
275
|
@RegisterClass(BaseFormComponent, '${entity.Name}') // Tell MemberJunction about this class
|
|
207
276
|
@Component({
|
|
208
277
|
selector: 'gen-${entity.ClassName.toLowerCase()}-form',
|
|
@@ -210,11 +279,11 @@ ${sectionImports}
|
|
|
210
279
|
styleUrls: ['../../../../shared/form-styles.css']
|
|
211
280
|
})
|
|
212
281
|
export class ${entity.ClassName}FormComponent extends BaseFormComponent {
|
|
213
|
-
public record!: ${entityObjectClass}Entity
|
|
282
|
+
public record!: ${entityObjectClass}Entity;${generationInjectedCode.length > 0 ? '\n' + generationInjectedCode : ''}
|
|
214
283
|
}
|
|
215
284
|
|
|
216
285
|
export function Load${entity.ClassName}FormComponent() {
|
|
217
|
-
${
|
|
286
|
+
${additionalSections.map(s => `Load${s.ClassName}();`).join('\n ')}
|
|
218
287
|
}
|
|
219
288
|
`;
|
|
220
289
|
}
|
|
@@ -397,25 +466,52 @@ export function Load${entity.ClassName}${this.stripWhiteSpace(section.Name)}Comp
|
|
|
397
466
|
}
|
|
398
467
|
return html;
|
|
399
468
|
}
|
|
400
|
-
generateRelatedEntityTabs(entity, startIndex) {
|
|
469
|
+
async generateRelatedEntityTabs(entity, startIndex, contextUser) {
|
|
470
|
+
const md = new core_1.Metadata();
|
|
401
471
|
const tabs = [];
|
|
472
|
+
const sortedRelatedEntities = entity.RelatedEntities.filter(re => re.DisplayInForm).sort((a, b) => a.Sequence - b.Sequence); // only show related entities that are marked to display in the form and sort by sequence
|
|
402
473
|
let index = startIndex;
|
|
403
|
-
for (const relatedEntity of
|
|
474
|
+
for (const relatedEntity of sortedRelatedEntities) {
|
|
404
475
|
const tabName = relatedEntity.DisplayName ? relatedEntity.DisplayName : relatedEntity.RelatedEntity;
|
|
405
|
-
|
|
476
|
+
let icon = '';
|
|
477
|
+
switch (relatedEntity.DisplayIconType) {
|
|
478
|
+
case 'Custom':
|
|
479
|
+
if (relatedEntity.DisplayIcon && relatedEntity.DisplayIcon.length > 0)
|
|
480
|
+
icon = `<span class="${relatedEntity.DisplayIcon} tab-header-icon"></span>`;
|
|
481
|
+
break;
|
|
482
|
+
case 'Related Entity Icon':
|
|
483
|
+
const re = md.Entities.find(e => e.ID === relatedEntity.RelatedEntityID);
|
|
484
|
+
if (re && re.Icon && re.Icon.length > 0)
|
|
485
|
+
icon = `<span class="${re.Icon} tab-header-icon"></span>`;
|
|
486
|
+
break;
|
|
487
|
+
default:
|
|
488
|
+
// none
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
const component = await related_entity_components_1.RelatedEntityDisplayComponentGeneratorBase.GetComponent(relatedEntity, contextUser);
|
|
492
|
+
const generateResults = await component.Generate({
|
|
493
|
+
Entity: entity,
|
|
494
|
+
RelationshipInfo: relatedEntity,
|
|
495
|
+
TabName: tabName
|
|
496
|
+
});
|
|
497
|
+
// now for each newline add a series of tabs to map to the indentation we need for pretty formatting
|
|
498
|
+
const componentCodeWithTabs = generateResults.TemplateOutput.split('\n').map(l => ` ${l}`).join('\n');
|
|
499
|
+
const tabCode = `${index > 0 ? '\n' : ''} <mj-tab Name="${tabName}"
|
|
406
500
|
[Visible]="record.IsSaved"
|
|
407
501
|
[Props]="{EntityRelationshipID: ${relatedEntity.ID}}">
|
|
408
|
-
${tabName}
|
|
502
|
+
${icon}${tabName}
|
|
409
503
|
</mj-tab>
|
|
410
504
|
<mj-tab-body>
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
505
|
+
${componentCodeWithTabs}
|
|
506
|
+
</mj-tab-body>`;
|
|
507
|
+
tabs.push({
|
|
508
|
+
Type: core_1.GeneratedFormSectionType.Category,
|
|
509
|
+
IsRelatedEntity: true,
|
|
510
|
+
RelatedEntityDisplayLocation: relatedEntity.DisplayLocation,
|
|
511
|
+
Name: tabName,
|
|
512
|
+
TabCode: tabCode,
|
|
513
|
+
GeneratedOutput: generateResults,
|
|
514
|
+
});
|
|
419
515
|
index++;
|
|
420
516
|
}
|
|
421
517
|
return tabs;
|
|
@@ -423,15 +519,15 @@ export function Load${entity.ClassName}${this.stripWhiteSpace(section.Name)}Comp
|
|
|
423
519
|
stripWhiteSpace(s) {
|
|
424
520
|
return s.replace(/\s/g, '');
|
|
425
521
|
}
|
|
426
|
-
generateSingleEntityHTMLForAngular(entity) {
|
|
522
|
+
async generateSingleEntityHTMLForAngular(entity, contextUser) {
|
|
427
523
|
const topArea = this.generateTopAreaHTMLForAngular(entity);
|
|
428
524
|
const additionalSections = this.generateAngularAdditionalSections(entity, 0);
|
|
429
525
|
// calc ending index for additional sections so we can pass taht into the related entity tabs because they need to start incrementally up from there...
|
|
430
526
|
const endingIndex = additionalSections && additionalSections.length ? (topArea && topArea.length > 0 ? additionalSections.length - 1 : additionalSections.length) : 0;
|
|
431
|
-
const relatedEntitySections = this.generateRelatedEntityTabs(entity, endingIndex);
|
|
527
|
+
const relatedEntitySections = await this.generateRelatedEntityTabs(entity, endingIndex, contextUser);
|
|
432
528
|
const htmlCode = topArea.length > 0 ? this.generateSingleEntityHTMLWithSplitterForAngular(topArea, additionalSections, relatedEntitySections) :
|
|
433
529
|
this.generateSingleEntityHTMLWithOUTSplitterForAngular(topArea, additionalSections, relatedEntitySections);
|
|
434
|
-
return { htmlCode,
|
|
530
|
+
return { htmlCode, additionalSections, relatedEntitySections };
|
|
435
531
|
}
|
|
436
532
|
generateSingleEntityHTMLWithSplitterForAngular(topArea, additionalSections, relatedEntitySections) {
|
|
437
533
|
const htmlCode = `<div class="record-form-container" mjFillContainer [bottomMargin]="20" [rightMargin]="5">
|
|
@@ -451,14 +547,22 @@ ${this.innerTabStripHTML(additionalSections, relatedEntitySections)}
|
|
|
451
547
|
return htmlCode;
|
|
452
548
|
}
|
|
453
549
|
innerTopAreaHTML(topArea) {
|
|
454
|
-
|
|
550
|
+
if (topArea.trim().length === 0)
|
|
551
|
+
return '';
|
|
552
|
+
else
|
|
553
|
+
return ` <div #topArea class="record-form-group">
|
|
455
554
|
${topArea}
|
|
456
555
|
</div>`;
|
|
457
556
|
}
|
|
458
557
|
innerTabStripHTML(additionalSections, relatedEntitySections) {
|
|
558
|
+
// come up with the overall order by looking for the tabs that have DisplayLocation === 'Before Field Tabs' and put those, in sequence order
|
|
559
|
+
// ahead of the additionalSections, then do the additionalSections, and then do the relatedEntitySections
|
|
560
|
+
const relatedEntityBeforeFieldTabs = relatedEntitySections.filter(s => s.RelatedEntityDisplayLocation === 'Before Field Tabs');
|
|
561
|
+
const relatedEntityAfterFieldTabs = relatedEntitySections.filter(s => s.RelatedEntityDisplayLocation === 'After Field Tabs');
|
|
459
562
|
return ` <mj-tabstrip (TabSelected)="onTabSelect($event.index)" mjFillContainer>
|
|
563
|
+
${relatedEntityBeforeFieldTabs ? relatedEntityBeforeFieldTabs.map(s => s.TabCode).join('\n') : ''}
|
|
460
564
|
${additionalSections ? additionalSections.filter(s => s.Type !== core_1.GeneratedFormSectionType.Top).map(s => s.TabCode).join('\n ') : ''}
|
|
461
|
-
${
|
|
565
|
+
${relatedEntityAfterFieldTabs ? relatedEntityAfterFieldTabs.map(s => s.TabCode).join('\n') : ''}
|
|
462
566
|
</mj-tabstrip>`;
|
|
463
567
|
}
|
|
464
568
|
generateSingleEntityHTMLWithOUTSplitterForAngular(topArea, additionalSections, relatedEntitySections) {
|
|
@@ -477,4 +581,4 @@ exports.AngularClientGeneratorBase = AngularClientGeneratorBase;
|
|
|
477
581
|
exports.AngularClientGeneratorBase = AngularClientGeneratorBase = __decorate([
|
|
478
582
|
(0, global_1.RegisterClass)(AngularClientGeneratorBase)
|
|
479
583
|
], AngularClientGeneratorBase);
|
|
480
|
-
//# sourceMappingURL=
|
|
584
|
+
//# sourceMappingURL=angular-codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-codegen.js","sourceRoot":"","sources":["../../src/Angular/angular-codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AngularComponentInfo, ComponentConfigBase, GenerationInput, GenerationResult, RelatedEntityDisplayComponentGeneratorBase } from "./related-entity-components";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration settings for each instance's use of the JoinGrid via the related entity. Defines the shape of the
|
|
4
|
+
* JSON that should be used to configure the JoinGrid component.
|
|
5
|
+
*/
|
|
6
|
+
export declare class JoinGridConfigInfo extends ComponentConfigBase {
|
|
7
|
+
RowsEntityName: string;
|
|
8
|
+
RowsExtraFilter?: string;
|
|
9
|
+
RowsEntityDisplayField: string;
|
|
10
|
+
RowsEntityDisplayName?: string;
|
|
11
|
+
RowsOrderBy?: string;
|
|
12
|
+
JoinEntityDisplayColumns?: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Implementation of the UserViewGridRelatedEntityGenerator class that generates the Angular component for a related entity in a UserViewGrid display component
|
|
16
|
+
*/
|
|
17
|
+
export declare class JoinGridRelatedEntityGenerator extends RelatedEntityDisplayComponentGeneratorBase {
|
|
18
|
+
get ConfigType(): typeof JoinGridConfigInfo;
|
|
19
|
+
get ImportPath(): string;
|
|
20
|
+
get ImportItems(): AngularComponentInfo[];
|
|
21
|
+
protected GetForeignKeyName(entityName: string, relatedEntityName: string): string;
|
|
22
|
+
Generate(input: GenerationInput): Promise<GenerationResult>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=join-grid-related-entity-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join-grid-related-entity-component.d.ts","sourceRoot":"","sources":["../../src/Angular/join-grid-related-entity-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,0CAA0C,EAAE,MAAM,6BAA6B,CAAC;AAIvK;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,mBAAmB;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9C;AAED;;GAEG;AACH,qBACa,8BAA+B,SAAQ,0CAA0C;IAC1F,IAAW,UAAU,IAAI,OAAO,kBAAkB,CAEjD;IACD,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,IAAW,WAAW,IAAI,oBAAoB,EAAE,CAQ/C;IAED,SAAS,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM;IAerE,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+B3E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.JoinGridRelatedEntityGenerator = exports.JoinGridConfigInfo = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const related_entity_components_1 = require("./related-entity-components");
|
|
12
|
+
const core_1 = require("@memberjunction/core");
|
|
13
|
+
/**
|
|
14
|
+
* Configuration settings for each instance's use of the JoinGrid via the related entity. Defines the shape of the
|
|
15
|
+
* JSON that should be used to configure the JoinGrid component.
|
|
16
|
+
*/
|
|
17
|
+
class JoinGridConfigInfo extends related_entity_components_1.ComponentConfigBase {
|
|
18
|
+
}
|
|
19
|
+
exports.JoinGridConfigInfo = JoinGridConfigInfo;
|
|
20
|
+
/**
|
|
21
|
+
* Implementation of the UserViewGridRelatedEntityGenerator class that generates the Angular component for a related entity in a UserViewGrid display component
|
|
22
|
+
*/
|
|
23
|
+
let JoinGridRelatedEntityGenerator = class JoinGridRelatedEntityGenerator extends related_entity_components_1.RelatedEntityDisplayComponentGeneratorBase {
|
|
24
|
+
get ConfigType() {
|
|
25
|
+
return JoinGridConfigInfo;
|
|
26
|
+
}
|
|
27
|
+
get ImportPath() {
|
|
28
|
+
return "@memberjunction/ng-join-grid";
|
|
29
|
+
}
|
|
30
|
+
get ImportItems() {
|
|
31
|
+
return [
|
|
32
|
+
{
|
|
33
|
+
ClassName: "JoinGridComponent",
|
|
34
|
+
AngularSelectorName: "mj-join-grid",
|
|
35
|
+
ModuleName: "JoinGridModule"
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
GetForeignKeyName(entityName, relatedEntityName) {
|
|
40
|
+
// find a foreign key field that links the entity to the related entity
|
|
41
|
+
const md = new core_1.Metadata();
|
|
42
|
+
const e = md.EntityByName(entityName);
|
|
43
|
+
if (!e)
|
|
44
|
+
throw new Error("Could not find entity " + entityName);
|
|
45
|
+
// now find the field in e that matches the related entity
|
|
46
|
+
const field = e.Fields.find(f => f.RelatedEntity === relatedEntityName);
|
|
47
|
+
if (!field)
|
|
48
|
+
throw new Error("Could not find a foreign key field in entity " + entityName + " that links to " + relatedEntityName);
|
|
49
|
+
return field.Name;
|
|
50
|
+
}
|
|
51
|
+
async Generate(input) {
|
|
52
|
+
const config = (0, global_1.SafeJSONParse)(input.RelationshipInfo.DisplayComponentConfiguration);
|
|
53
|
+
if (!config)
|
|
54
|
+
throw new Error("Invalid configuration for JoinGrid component for relationship " + input.RelationshipInfo.ID);
|
|
55
|
+
const template = `<mj-join-grid
|
|
56
|
+
[ShowSaveButton]="false"
|
|
57
|
+
[ShowCancelButton]="false"
|
|
58
|
+
[EditMode]="GridEditMode()"
|
|
59
|
+
RowsEntityName="${config.RowsEntityName}"
|
|
60
|
+
RowsEntityDisplayField="${config.RowsEntityDisplayField}"
|
|
61
|
+
RowsExtraFilter="${config.RowsExtraFilter ? config.RowsExtraFilter : ''}"
|
|
62
|
+
RowsEntityDataSource="FullEntity"
|
|
63
|
+
RowsOrderBy="${config.RowsOrderBy ? config.RowsOrderBy : ''}"
|
|
64
|
+
RowsEntityDisplayName="${config.RowsEntityDisplayName ? config.RowsEntityDisplayName : config.RowsEntityDisplayField}"
|
|
65
|
+
ColumnsMode="Fields"
|
|
66
|
+
JoinEntityName="${input.RelationshipInfo.RelatedEntity}"
|
|
67
|
+
JoinEntityRowForeignKey="${this.GetForeignKeyName(input.RelationshipInfo.RelatedEntity, config.RowsEntityName)}"
|
|
68
|
+
[JoinEntityExtraFilter]="'${this.GetForeignKeyName(input.RelationshipInfo.RelatedEntity, input.Entity.Name)}=' + record.${input.Entity.FirstPrimaryKey.Name}"
|
|
69
|
+
[JoinEntityDisplayColumns]="${config.JoinEntityDisplayColumns ? `[${config.JoinEntityDisplayColumns.map(c => `'${c}'`).join(',')}]` : '[]'}"
|
|
70
|
+
[NewRecordDefaultValues]="{${this.GetForeignKeyName(input.RelationshipInfo.RelatedEntity, input.Entity.Name)}: record.${input.Entity.FirstPrimaryKey.Name}}"
|
|
71
|
+
>
|
|
72
|
+
</mj-join-grid>
|
|
73
|
+
`;
|
|
74
|
+
return {
|
|
75
|
+
Success: true,
|
|
76
|
+
TemplateOutput: template,
|
|
77
|
+
CodeOutput: null,
|
|
78
|
+
Component: this
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
exports.JoinGridRelatedEntityGenerator = JoinGridRelatedEntityGenerator;
|
|
83
|
+
exports.JoinGridRelatedEntityGenerator = JoinGridRelatedEntityGenerator = __decorate([
|
|
84
|
+
(0, global_1.RegisterClass)(related_entity_components_1.RelatedEntityDisplayComponentGeneratorBase, "JoinGrid")
|
|
85
|
+
], JoinGridRelatedEntityGenerator);
|
|
86
|
+
//# sourceMappingURL=join-grid-related-entity-component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join-grid-related-entity-component.js","sourceRoot":"","sources":["../../src/Angular/join-grid-related-entity-component.ts"],"names":[],"mappings":"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"}
|