Skip to content

Commit fa4c95b

Browse files
authored
feat(website) live example (#36) (#37)
* add demo page * merge frontend and website into 1 project * implement demo page * add firebase db rules * implement demo diagram load * fix demo diagram load * demo page & deploy
1 parent 3b70fe9 commit fa4c95b

File tree

94 files changed

+624
-662
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+624
-662
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
EntityFrameworkCore.Diagrams/EntityFrameworkCore.Diagrams/wwwroot/
2+
EntityFrameworkCore.Diagrams/EntityFrameworkCore.Diagrams.Frontend/dist

EntityFrameworkCore.Diagrams/EntityFrameworkCore.Diagrams.Frontend/.angular-cli.json

Lines changed: 52 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,59 @@
33
"project": {
44
"name": "db-diagrams"
55
},
6-
"apps": [{
7-
"root": "src",
8-
"outDir": "../EntityFrameworkCore.Diagrams/wwwroot/db-diagrams",
9-
"assets": [
10-
"assets",
11-
"favicon.ico"
12-
],
13-
"index": "index.html",
14-
"main": "main.ts",
15-
"polyfills": "polyfills.ts",
16-
"test": "test.ts",
17-
"tsconfig": "tsconfig.app.json",
18-
"testTsconfig": "tsconfig.spec.json",
19-
"prefix": "efd",
20-
"styles": [
21-
"../node_modules/material-design-icons/iconfont/material-icons.css",
22-
"styles.scss"
23-
],
24-
"scripts": [],
25-
"environmentSource": "environments/environment.ts",
26-
"environments": {
27-
"dev": "environments/environment.ts",
28-
"prod": "environments/environment.prod.ts"
6+
"apps": [
7+
{
8+
"name": "efd",
9+
"root": "src",
10+
"outDir": "../EntityFrameworkCore.Diagrams/wwwroot/db-diagrams",
11+
"assets": [
12+
"assets",
13+
"favicon.ico"
14+
],
15+
"index": "index.html",
16+
"main": "main.ts",
17+
"polyfills": "polyfills.ts",
18+
"test": "test.ts",
19+
"tsconfig": "tsconfig.app.json",
20+
"testTsconfig": "tsconfig.spec.json",
21+
"prefix": "efd",
22+
"styles": [
23+
"../node_modules/material-design-icons/iconfont/material-icons.css",
24+
"styles.scss"
25+
],
26+
"scripts": [],
27+
"environmentSource": "environments/environment.ts",
28+
"environments": {
29+
"dev": "environments/environment.ts",
30+
"prod": "environments/environment.prod.ts"
31+
}
32+
},
33+
{
34+
"name": "efd-website",
35+
"root": "src-website",
36+
"outDir": "dist",
37+
"assets": [
38+
"assets",
39+
"favicon.ico"
40+
],
41+
"index": "index.html",
42+
"main": "main.ts",
43+
"polyfills": "polyfills.ts",
44+
"test": "test.ts",
45+
"tsconfig": "tsconfig.app.json",
46+
"testTsconfig": "tsconfig.spec.json",
47+
"prefix": "efd",
48+
"styles": [
49+
"styles.scss"
50+
],
51+
"scripts": [],
52+
"environmentSource": "environments/environment.ts",
53+
"environments": {
54+
"dev": "environments/environment.ts",
55+
"prod": "environments/environment.prod.ts"
56+
}
2957
}
30-
}],
58+
],
3159
"e2e": {
3260
"protractor": {
3361
"config": "./protractor.conf.js"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"rules": {
3+
".read": "auth != null",
4+
".write": "auth != null",
5+
"diagrams": {
6+
".read": true,
7+
".write": "auth != null",
8+
"$diagram_id": {
9+
".validate": "newData.hasChildren(['diagram', 'authorUid', 'timestamp']) && newData.child('authorUid').isString() && newData.child('timestamp').isNumber()",
10+
11+
"diagram": { ".validate": "newData.exists()" },
12+
"authorUid": { ".validate": "newData.val() === auth.uid" },
13+
"timestamp": { ".validate": "newData.val() <= now" }
14+
}
15+
}
16+
}
17+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import fs = require('fs');
2+
import { Observable } from 'rxjs/Observable';
3+
import 'rxjs/add/observable/combineLatest';
4+
5+
const exec = require('child_process').exec;
6+
7+
const revision = new Observable<string>(s => {
8+
exec('git rev-parse --short HEAD',
9+
function (error: Error, stdout: Buffer, stderr: Buffer) {
10+
if (error !== null) {
11+
console.log('git error: ' + error + stderr);
12+
}
13+
s.next(stdout.toString().trim());
14+
s.complete();
15+
});
16+
});
17+
18+
const branch = new Observable<string>(s => {
19+
exec('git rev-parse --abbrev-ref HEAD',
20+
function (error: Error, stdout: Buffer, stderr: Buffer) {
21+
if (error !== null) {
22+
console.log('git error: ' + error + stderr);
23+
}
24+
s.next(stdout.toString().trim());
25+
s.complete();
26+
});
27+
});
28+
29+
Observable
30+
.combineLatest(revision, branch)
31+
.subscribe(([revision, branch]) => {
32+
const fields = [
33+
`version: '${process.env.npm_package_version}'`,
34+
`revision: '${revision}'`,
35+
`branch: '${branch}'`,
36+
`repository: '${process.env.npm_package_repository_url}'`
37+
];
38+
const indent = ' ';
39+
const versionsObj = '{\n' + indent + fields.join(',\n' + indent) + '\n}';
40+
console.log(versionsObj);
41+
42+
const content =
43+
`// this file is automatically generated by git-version.ts script
44+
export const versions = ${versionsObj};
45+
`;
46+
47+
fs.writeFileSync(
48+
'src/environments/versions.ts',
49+
content,
50+
{ encoding: 'utf8' }
51+
);
52+
});

EntityFrameworkCore.Diagrams/EntityFrameworkCore.Diagrams.Frontend/package.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
{
22
"name": "db-diagrams",
33
"version": "0.0.0",
4+
"repository": {
5+
"url": "https://github.com/EvAlex/ef-db-diagrams/",
6+
"type": "git"
7+
},
48
"license": "MIT",
59
"scripts": {
610
"ng": "ng",
7-
"start": "ng serve",
11+
"start": "ng serve --app efd --port 4200",
12+
"start-website": "ng serve --app efd-website --port 4201",
813
"build": "ng build",
914
"test": "ng test",
1015
"lint": "ng lint",
11-
"e2e": "ng e2e"
16+
"e2e": "ng e2e",
17+
"deploy-website": "ts-node git-version.ts && ng build --app efd-website && firebase deploy"
1218
},
1319
"private": true,
1420
"dependencies": {
@@ -23,14 +29,17 @@
2329
"@angular/platform-browser": "^4.0.0",
2430
"@angular/platform-browser-dynamic": "^4.0.0",
2531
"@angular/router": "^4.0.0",
32+
"angularfire2": "^4.0.0-rc.1",
2633
"core-js": "^2.4.1",
34+
"firebase": "^4.2.0",
2735
"hammerjs": "^2.0.8",
2836
"material-design-icons": "^3.0.1",
2937
"rxjs": "^5.1.0",
38+
"showdown": "^1.7.1",
3039
"zone.js": "^0.8.4"
3140
},
3241
"devDependencies": {
33-
"@angular/cli": "1.2.1",
42+
"@angular/cli": "1.3.0-rc.5",
3443
"@angular/compiler-cli": "^4.0.0",
3544
"@angular/language-service": "^4.0.0",
3645
"@types/jasmine": "~2.5.53",

website/src/app/app-routing.module.ts renamed to EntityFrameworkCore.Diagrams/EntityFrameworkCore.Diagrams.Frontend/src-website/app/app-routing.module.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@ import { Routes, RouterModule } from '@angular/router';
33
import { HomepageComponent } from './components/homepage/homepage.component';
44
import { GuidesComponent } from './components/guides/guides.component';
55
import { GettingStartedComponent } from './components/getting-started/getting-started.component';
6+
import { DemoComponent } from './components/demo/demo.component';
67

78
const routes: Routes = [
89
{
910
path: '',
1011
component: HomepageComponent,
1112
children: []
1213
},
14+
{
15+
path: 'demo',
16+
component: DemoComponent,
17+
children: []
18+
},
1319
{
1420
path: 'guides',
1521
component: GuidesComponent,

0 commit comments

Comments
 (0)