-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtotal-number-objects.ts
More file actions
81 lines (65 loc) · 2.9 KB
/
total-number-objects.ts
File metadata and controls
81 lines (65 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { MendixPlatformClient, OnlineWorkingCopy } from "mendixplatformsdk";
import { ModelSdkClient, IModel, projects, domainmodels, microflows, pages, navigation, texts, security, IStructure, menus, Model } from "mendixmodelsdk";
const client = new MendixPlatformClient();
var json2xls = require('json2xls');
var fs = require('fs');
let jsonXLS: any[] = [];
type appUpload ={"appName":string, "appID":string};
var listOfApps: appUpload[] =
[{'appName':'', 'appID':''}]
/*
* PROJECT TO ANALYZE
*/
const projectsLoading = Promise.all(listOfApps.map(async (app) : Promise<any> => {
await processApp(app);
})).then(()=>{
var xls = json2xls(jsonXLS);
console.log("Writing File")
fs.writeFileSync('TotalCounts.xlsx', xls, 'binary');
});
async function processApp(app:appUpload){
await loadProject(app);
}
async function loadProject(appObj:appUpload){
const app = client.getApp(appObj.appID);
const repository = app.getRepository();
var useBranch:string ="";
const repositoryInfo = await repository.getInfo();
if (repositoryInfo.type === `svn`)
useBranch = `trunk`;
else
useBranch = `main`;
const wc = await app.createTemporaryWorkingCopy(useBranch);
await getProjectCounts(wc,appObj.appName,appObj.appID);
}
async function getProjectCounts(workingCopy:OnlineWorkingCopy,name:String, ID:String){
console.log(`Project: ${name} counting`)
var NumberEntities = 0;
var model:IModel = await workingCopy.openModel();
model.allDomainModels().forEach(domainModel => {
NumberEntities+= domainModel.entities.length;
});
var jsonObj:any = {
"Project Name": name,
"Project ID": ID,
"Entities":NumberEntities,
"Microflows":model.allMicroflows().length,
"Pages": model.allPages().length,
"Json Structures": model.allJsonStructures().length,
"Published OData": model.allPublishedODataServices().length,
"Published REST": model.allPublishedRestServices().length,
"Published SOAP": model.allPublishedWebServices().length,
"Published App Service": model.allPublishedAppServices().length,
"Export Mappings": model.allExportMappings().length,
"Imported WebServices": model.allImportedWebServices().length,
"Imported Mappings":model.allImportMappings().length,
"XML Schemas": model.allXmlSchemas().length,
"Documents": model.allDocuments().length,
"Document Templates": model.allDocumentTemplates().length,
"Java Actions" : model.allJavaActions().length,
"Snippets": model.allSnippets().length,
"Navigation Documents": model.allNavigationDocuments().length
};
jsonXLS.push(jsonObj);
console.log(jsonObj);
}