Skip to content

Commit 6c90e84

Browse files
auto-gen main router based on sample source paths (#386)
* add AutoInsertRouterImports comments * Revert "add AutoInsertRouterImports comments" This reverts commit fc1796f. * add AutoInsertRouterImports comment * chage comments * add auto-gen main router
1 parent 2a84849 commit 6c90e84

File tree

3 files changed

+53
-18
lines changed

3 files changed

+53
-18
lines changed

browser/src/router.ts

+22-18
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1+
// AutoRouterImportStart
12
import { RouterCharts } from "./samples/charts/router";
3+
import { RouterEditors } from "./samples/editors/router";
4+
import { RouterExcel } from "./samples/excel/router";
25
import { RouterGauges } from "./samples/gauges/router";
36
import { RouterGrids } from "./samples/grids/router";
4-
import { RouterMaps } from "./samples/maps/router";
5-
import { RouterExcel } from "./samples/excel/router";
7+
import { RouterInputs } from "./samples/inputs/router";
68
import { RouterLayouts } from "./samples/layouts/router";
7-
import { RouterEditors } from "./samples/editors/router";
9+
import { RouterMaps } from "./samples/maps/router";
810
import { RouterMenus } from "./samples/menus/router";
9-
import { RouterInputs } from "./samples/inputs/router";
10-
import { RouterScheduling } from "./samples/scheduling/router";
1111
import { RouterNotifications } from "./samples/notifications/router";
12+
import { RouterScheduling } from "./samples/scheduling/router";
13+
// AutoRouterImportEnd
1214

1315
export class Router {
1416

@@ -88,39 +90,41 @@ export class Router {
8890

8991
// console.log("SB matching " + route);
9092

91-
if (route.indexOf("/maps/") >= 0) {
92-
this.displaySample(await RouterMaps.get(route));
93+
// AutoRouterConditionStart
94+
if (route.indexOf("/charts/") >= 0) {
95+
this.displaySample(await RouterCharts.get(route));
9396
}
94-
else if (route.indexOf("/grids/") >= 0) {
95-
this.displaySample(await RouterGrids.get(route));
97+
else if (route.indexOf("/editors/") >= 0) {
98+
this.displaySample(await RouterEditors.get(route));
9699
}
97100
else if (route.indexOf("/excel/") >= 0) {
98101
this.displaySample(await RouterExcel.get(route));
99102
}
100103
else if (route.indexOf("/gauges/") >= 0) {
101104
this.displaySample(await RouterGauges.get(route));
102105
}
103-
else if (route.indexOf("/charts/") >= 0) {
104-
this.displaySample(await RouterCharts.get(route));
106+
else if (route.indexOf("/grids/") >= 0) {
107+
this.displaySample(await RouterGrids.get(route));
108+
}
109+
else if (route.indexOf("/inputs/") >= 0) {
110+
this.displaySample(await RouterInputs.get(route));
105111
}
106112
else if (route.indexOf("/layouts/") >= 0) {
107113
this.displaySample(await RouterLayouts.get(route));
108114
}
109-
else if (route.indexOf("/editors/") >= 0) {
110-
this.displaySample(await RouterEditors.get(route));
115+
else if (route.indexOf("/maps/") >= 0) {
116+
this.displaySample(await RouterMaps.get(route));
111117
}
112118
else if (route.indexOf("/menus/") >= 0) {
113119
this.displaySample(await RouterMenus.get(route));
114120
}
115-
else if (route.indexOf("/inputs/") >= 0) {
116-
this.displaySample(await RouterInputs.get(route));
121+
else if (route.indexOf("/notifications/") >= 0) {
122+
this.displaySample(await RouterNotifications.get(route));
117123
}
118124
else if (route.indexOf("/scheduling/") >= 0) {
119125
this.displaySample(await RouterScheduling.get(route));
120126
}
121-
else if (route.indexOf("/notifications/") >= 0) {
122-
this.displaySample(await RouterNotifications.get(route));
123-
}
127+
// AutoRouterConditionEnd
124128
else if (route !== "/" && route !== "/index") {
125129
console.log("SB missing router for " + route)
126130
let sampleFile = await import('./core/SampleFallback');

browser/tasks/Transformer.ts

+7
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,9 @@ class Transformer {
718718
} else {
719719
let group = new SampleGroup();
720720
group.Name = component.Group;
721+
group.RouterClass = 'Router' + Strings.toTitleCase(group.Name);
722+
group.RouterFile = './samples/' + group.Name + '/router';
723+
group.RouterImport = 'import { ' + group.RouterClass + ' } from "' + group.RouterFile + '";';
721724
group.Components.push(component);
722725
groupMap.set(component.Group, group);
723726
}
@@ -924,6 +927,10 @@ class Transformer {
924927
class SampleGroup {
925928

926929
public Name: string;
930+
public RouterClass: string;
931+
public RouterFile: string;
932+
public RouterImport: string;
933+
927934
public Components: SampleComponent[];
928935

929936
constructor() {

browser/tasks/gulp-samples.js

+24
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,8 @@ function copySamples(cb) {
304304
let sampleGroups = Transformer.getSampleGroups(samples);
305305

306306
console.log('>> generating router files... ');
307+
let routerImports = [];
308+
let routerConditions = [];
307309
let routerTemplate = fs.readFileSync("./browser/src/templates/group/Router.ts", "utf8");
308310
for (const group of sampleGroups) {
309311
let outputPath = "./browser/src/samples/" + group.Name + "/router.ts";
@@ -315,8 +317,30 @@ function copySamples(cb) {
315317
fs.writeFileSync(outputPath, routingFile);
316318
console.log('>> generating routes done: ' + outputPath);
317319

320+
if (routerConditions.length === 0)
321+
routerConditions.push(' if (route.indexOf("/' + group.Name + '/") >= 0) {');
322+
else
323+
routerConditions.push(' else if (route.indexOf("/' + group.Name + '/") >= 0) {');
324+
325+
routerConditions.push(' this.displaySample(await ' + group.RouterClass + '.get(route));');
326+
routerConditions.push(' }');
327+
328+
routerImports.push(group.RouterImport);
318329
}
319330

331+
let routerPath = "./browser/src/router.ts";
332+
console.log('>> updating ' + routerPath + ' ... ');
333+
let routerFile = fs.readFileSync(routerPath, "utf8").toString();
334+
let routerImportLines = routerImports.join('\n');
335+
var routerImportEx = /(\/\/\sAutoRouterImportStart)([\S\s]*?)(\/\/\sAutoRouterImportEnd)/gm;
336+
routerFile = routerFile.replace(routerImportEx, '$1\n' + routerImportLines + '\n$3');
337+
338+
let routerConditionLines = routerConditions.join('\n');
339+
var routerConditionEx = /(\/\/\sAutoRouterConditionStart)([\S\s]*?)(\/\/\sAutoRouterConditionEnd)/gm;
340+
routerFile = routerFile.replace(routerConditionEx, '$1\n' + routerConditionLines + '\n$3');
341+
fs.writeFileSync(routerPath, routerFile);
342+
console.log('>> updating ' + routerPath + ' with ' + routerImports.length + ' routers' );
343+
320344
console.log('>> generating index file... ');
321345
let indexTemplate = fs.readFileSync("./browser/src/templates/index.html", "utf8");
322346
let indexFile = Transformer.getIndexFile(sampleGroups, indexTemplate);

0 commit comments

Comments
 (0)