From 4ee4b5442bed00b4734c8a2c009f8aa357807ce8 Mon Sep 17 00:00:00 2001 From: Florian Hartwich Date: Mon, 27 Feb 2017 01:44:23 +0100 Subject: [PATCH] Add blogging app --- blog-complete/app/app.module.ts | 11 +++ blog-complete/app/blog/app.component.html | 25 +++++++ blog-complete/app/blog/app.component.ts | 29 ++++++++ .../app/blog/blog-entry.component.html | 9 +++ .../app/blog/blog-entry.component.ts | 11 +++ blog-complete/app/blog/blog-entry.ts | 5 ++ blog-complete/app/blog/initialEntries.ts | 12 ++++ blog-complete/app/main.ts | 4 ++ blog-complete/dist/app.module.js | 26 +++++++ blog-complete/dist/app.module.js.map | 1 + blog-complete/dist/blog/app.component.html | 25 +++++++ blog-complete/dist/blog/app.component.js | 40 +++++++++++ blog-complete/dist/blog/app.component.js.map | 1 + .../dist/blog/blog-entry.component.html | 9 +++ .../dist/blog/blog-entry.component.js | 31 ++++++++ .../dist/blog/blog-entry.component.js.map | 1 + blog-complete/dist/blog/blog-entry.js | 9 +++ blog-complete/dist/blog/blog-entry.js.map | 1 + blog-complete/dist/blog/initialEntries.js | 15 ++++ blog-complete/dist/blog/initialEntries.js.map | 1 + blog-complete/dist/main.js | 6 ++ blog-complete/dist/main.js.map | 1 + blog-complete/favicon.ico | Bin 0 -> 5430 bytes blog-complete/index.html | 25 +++++++ blog-complete/karma.conf.js | 68 ++++++++++++++++++ blog-complete/package.json | 52 ++++++++++++++ blog-complete/styles.css | 65 +++++++++++++++++ blog-complete/systemjs.config.js | 61 ++++++++++++++++ blog-complete/tsconfig.json | 18 +++++ blog-complete/typings.d.ts | 1 + .../createTaskFailure.png | Bin 33850 -> 0 bytes .../projects-server/test.json | 14 ++++ 32 files changed, 577 insertions(+) create mode 100644 blog-complete/app/app.module.ts create mode 100644 blog-complete/app/blog/app.component.html create mode 100644 blog-complete/app/blog/app.component.ts create mode 100644 blog-complete/app/blog/blog-entry.component.html create mode 100644 blog-complete/app/blog/blog-entry.component.ts create mode 100644 blog-complete/app/blog/blog-entry.ts create mode 100644 blog-complete/app/blog/initialEntries.ts create mode 100644 blog-complete/app/main.ts create mode 100644 blog-complete/dist/app.module.js create mode 100644 blog-complete/dist/app.module.js.map create mode 100644 blog-complete/dist/blog/app.component.html create mode 100644 blog-complete/dist/blog/app.component.js create mode 100644 blog-complete/dist/blog/app.component.js.map create mode 100644 blog-complete/dist/blog/blog-entry.component.html create mode 100644 blog-complete/dist/blog/blog-entry.component.js create mode 100644 blog-complete/dist/blog/blog-entry.component.js.map create mode 100644 blog-complete/dist/blog/blog-entry.js create mode 100644 blog-complete/dist/blog/blog-entry.js.map create mode 100644 blog-complete/dist/blog/initialEntries.js create mode 100644 blog-complete/dist/blog/initialEntries.js.map create mode 100644 blog-complete/dist/main.js create mode 100644 blog-complete/dist/main.js.map create mode 100644 blog-complete/favicon.ico create mode 100644 blog-complete/index.html create mode 100644 blog-complete/karma.conf.js create mode 100644 blog-complete/package.json create mode 100644 blog-complete/styles.css create mode 100644 blog-complete/systemjs.config.js create mode 100644 blog-complete/tsconfig.json create mode 100644 blog-complete/typings.d.ts delete mode 100644 project-manager-reactive/createTaskFailure.png diff --git a/blog-complete/app/app.module.ts b/blog-complete/app/app.module.ts new file mode 100644 index 0000000..851c55c --- /dev/null +++ b/blog-complete/app/app.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import {AppComponent} from './blog/app.component'; +import {BlogEntryComponent} from './blog/blog-entry.component'; + +@NgModule({ + imports: [ BrowserModule ], + declarations: [ AppComponent, BlogEntryComponent ], + bootstrap: [ AppComponent ] +}) +export class AppModule { } diff --git a/blog-complete/app/blog/app.component.html b/blog-complete/app/blog/app.component.html new file mode 100644 index 0000000..0f91b43 --- /dev/null +++ b/blog-complete/app/blog/app.component.html @@ -0,0 +1,25 @@ +

Mein Angular-Blog

+ +

Neuen Blog-Eintrag erstellen

+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ +
+
diff --git a/blog-complete/app/blog/app.component.ts b/blog-complete/app/blog/app.component.ts new file mode 100644 index 0000000..94627bd --- /dev/null +++ b/blog-complete/app/blog/app.component.ts @@ -0,0 +1,29 @@ +import {Component} from '@angular/core'; +import {initialEntries} from './initialEntries'; +import {BlogEntry} from './blog-entry'; + +@Component({ + moduleId: module.id, + selector: 'app-root', + templateUrl: 'app.component.html' +}) +export class AppComponent { + + entries: BlogEntry[] = []; + + constructor() { + this.entries = []; + this.entries = initialEntries + } + + createBlogEntry(title:string, image:string, text:string) { + console.log(title, image, text); + let entry = new BlogEntry(); + entry.title = title; + entry.image = image; + entry.text = text; + + this.entries.push(entry); + } +} + diff --git a/blog-complete/app/blog/blog-entry.component.html b/blog-complete/app/blog/blog-entry.component.html new file mode 100644 index 0000000..b034fbf --- /dev/null +++ b/blog-complete/app/blog/blog-entry.component.html @@ -0,0 +1,9 @@ +
+
+ +
+
+ {{entry.title}} +

{{entry.text}}

+
+
\ No newline at end of file diff --git a/blog-complete/app/blog/blog-entry.component.ts b/blog-complete/app/blog/blog-entry.component.ts new file mode 100644 index 0000000..d865882 --- /dev/null +++ b/blog-complete/app/blog/blog-entry.component.ts @@ -0,0 +1,11 @@ +import {Component, Input} from '@angular/core'; +import {BlogEntry} from './blog-entry'; + +@Component({ + moduleId: module.id, + selector: 'app-blog-entry', + templateUrl: 'blog-entry.component.html' +}) +export class BlogEntryComponent { + @Input() entry: BlogEntry; +} diff --git a/blog-complete/app/blog/blog-entry.ts b/blog-complete/app/blog/blog-entry.ts new file mode 100644 index 0000000..b84c33d --- /dev/null +++ b/blog-complete/app/blog/blog-entry.ts @@ -0,0 +1,5 @@ +export class BlogEntry { + title: string; + text: string; + image: string; +} diff --git a/blog-complete/app/blog/initialEntries.ts b/blog-complete/app/blog/initialEntries.ts new file mode 100644 index 0000000..7a53b05 --- /dev/null +++ b/blog-complete/app/blog/initialEntries.ts @@ -0,0 +1,12 @@ +export var initialEntries = [ + { + title: "Angular 2 erschienen", + image: "data:image/png;base64,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", + text: "Endlich ist die finale Version von Angular 2 erschienen. Nach langer Beta-Phase ..." + }, + { + title: "Neue Vorschläge für die kommende Module-Loader-Syntax", + image: "https://cdn-images-1.medium.com/max/1000/1*RQFLsbQumE-iNrXzs_Oz8g.jpeg", + text: "Nachdem im ES2015-Standard bereits die Module-API verabschiedet wurde, hat das zuständige Konsortium nun neue Vorschläge für die Module-Loader-Syntax bekannt gegeben..." + } +] \ No newline at end of file diff --git a/blog-complete/app/main.ts b/blog-complete/app/main.ts new file mode 100644 index 0000000..8509392 --- /dev/null +++ b/blog-complete/app/main.ts @@ -0,0 +1,4 @@ +import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; +import {AppModule} from './app.module'; + +platformBrowserDynamic().bootstrapModule(AppModule); \ No newline at end of file diff --git a/blog-complete/dist/app.module.js b/blog-complete/dist/app.module.js new file mode 100644 index 0000000..10ebda2 --- /dev/null +++ b/blog-complete/dist/app.module.js @@ -0,0 +1,26 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var core_1 = require("@angular/core"); +var platform_browser_1 = require("@angular/platform-browser"); +var app_component_1 = require("./blog/app.component"); +var blog_entry_component_1 = require("./blog/blog-entry.component"); +var AppModule = (function () { + function AppModule() { + } + return AppModule; +}()); +AppModule = __decorate([ + core_1.NgModule({ + imports: [platform_browser_1.BrowserModule], + declarations: [app_component_1.AppComponent, blog_entry_component_1.BlogEntryComponent], + bootstrap: [app_component_1.AppComponent] + }) +], AppModule); +exports.AppModule = AppModule; +//# sourceMappingURL=app.module.js.map \ No newline at end of file diff --git a/blog-complete/dist/app.module.js.map b/blog-complete/dist/app.module.js.map new file mode 100644 index 0000000..4e186ed --- /dev/null +++ b/blog-complete/dist/app.module.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../app/app.module.ts"],"names":[],"mappings":";;;;;;;;AAAA,sCAA8C;AAC9C,8DAA0D;AAC1D,sDAAkD;AAClD,oEAA+D;AAO/D,IAAa,SAAS;IAAtB;IAAyB,CAAC;IAAD,gBAAC;AAAD,CAAC,AAA1B,IAA0B;AAAb,SAAS;IALrB,eAAQ,CAAC;QACR,OAAO,EAAE,CAAE,gCAAa,CAAE;QAC1B,YAAY,EAAE,CAAE,4BAAY,EAAE,yCAAkB,CAAE;QAClD,SAAS,EAAE,CAAE,4BAAY,CAAE;KAC5B,CAAC;GACW,SAAS,CAAI;AAAb,8BAAS"} \ No newline at end of file diff --git a/blog-complete/dist/blog/app.component.html b/blog-complete/dist/blog/app.component.html new file mode 100644 index 0000000..0f91b43 --- /dev/null +++ b/blog-complete/dist/blog/app.component.html @@ -0,0 +1,25 @@ +

Mein Angular-Blog

+ +

Neuen Blog-Eintrag erstellen

+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ +
+
diff --git a/blog-complete/dist/blog/app.component.js b/blog-complete/dist/blog/app.component.js new file mode 100644 index 0000000..96e1816 --- /dev/null +++ b/blog-complete/dist/blog/app.component.js @@ -0,0 +1,40 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var core_1 = require("@angular/core"); +var initialEntries_1 = require("./initialEntries"); +var blog_entry_1 = require("./blog-entry"); +var AppComponent = (function () { + function AppComponent() { + this.entries = []; + this.entries = []; + this.entries = initialEntries_1.initialEntries; + } + AppComponent.prototype.createBlogEntry = function (title, image, text) { + console.log(title, image, text); + var entry = new blog_entry_1.BlogEntry(); + entry.title = title; + entry.image = image; + entry.text = text; + this.entries.push(entry); + }; + return AppComponent; +}()); +AppComponent = __decorate([ + core_1.Component({ + moduleId: module.id, + selector: 'app-root', + templateUrl: 'app.component.html' + }), + __metadata("design:paramtypes", []) +], AppComponent); +exports.AppComponent = AppComponent; +//# sourceMappingURL=app.component.js.map \ No newline at end of file diff --git a/blog-complete/dist/blog/app.component.js.map b/blog-complete/dist/blog/app.component.js.map new file mode 100644 index 0000000..8859bef --- /dev/null +++ b/blog-complete/dist/blog/app.component.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app.component.js","sourceRoot":"","sources":["../../app/blog/app.component.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAwC;AACxC,mDAAgD;AAChD,2CAAuC;AAOvC,IAAa,YAAY;IAIvB;QAFA,YAAO,GAAgB,EAAE,CAAC;QAGxB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,+BAAc,CAAA;IAC/B,CAAC;IAED,sCAAe,GAAf,UAAgB,KAAY,EAAE,KAAY,EAAE,IAAW;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC5B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACH,mBAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBY,YAAY;IALxB,gBAAS,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC,EAAE;QACnB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,oBAAoB;KAClC,CAAC;;GACW,YAAY,CAkBxB;AAlBY,oCAAY"} \ No newline at end of file diff --git a/blog-complete/dist/blog/blog-entry.component.html b/blog-complete/dist/blog/blog-entry.component.html new file mode 100644 index 0000000..b034fbf --- /dev/null +++ b/blog-complete/dist/blog/blog-entry.component.html @@ -0,0 +1,9 @@ +
+
+ +
+
+ {{entry.title}} +

{{entry.text}}

+
+
\ No newline at end of file diff --git a/blog-complete/dist/blog/blog-entry.component.js b/blog-complete/dist/blog/blog-entry.component.js new file mode 100644 index 0000000..10defa0 --- /dev/null +++ b/blog-complete/dist/blog/blog-entry.component.js @@ -0,0 +1,31 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var core_1 = require("@angular/core"); +var blog_entry_1 = require("./blog-entry"); +var BlogEntryComponent = (function () { + function BlogEntryComponent() { + } + return BlogEntryComponent; +}()); +__decorate([ + core_1.Input(), + __metadata("design:type", blog_entry_1.BlogEntry) +], BlogEntryComponent.prototype, "entry", void 0); +BlogEntryComponent = __decorate([ + core_1.Component({ + moduleId: module.id, + selector: 'app-blog-entry', + templateUrl: 'blog-entry.component.html' + }) +], BlogEntryComponent); +exports.BlogEntryComponent = BlogEntryComponent; +//# sourceMappingURL=blog-entry.component.js.map \ No newline at end of file diff --git a/blog-complete/dist/blog/blog-entry.component.js.map b/blog-complete/dist/blog/blog-entry.component.js.map new file mode 100644 index 0000000..337d16a --- /dev/null +++ b/blog-complete/dist/blog/blog-entry.component.js.map @@ -0,0 +1 @@ +{"version":3,"file":"blog-entry.component.js","sourceRoot":"","sources":["../../app/blog/blog-entry.component.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAA+C;AAC/C,2CAAuC;AAOvC,IAAa,kBAAkB;IAA/B;IAEA,CAAC;IAAD,yBAAC;AAAD,CAAC,AAFD,IAEC;AADU;IAAR,YAAK,EAAE;8BAAQ,sBAAS;iDAAC;AADf,kBAAkB;IAL9B,gBAAS,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC,EAAE;QACnB,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,2BAA2B;KACzC,CAAC;GACW,kBAAkB,CAE9B;AAFY,gDAAkB"} \ No newline at end of file diff --git a/blog-complete/dist/blog/blog-entry.js b/blog-complete/dist/blog/blog-entry.js new file mode 100644 index 0000000..1b45497 --- /dev/null +++ b/blog-complete/dist/blog/blog-entry.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var BlogEntry = (function () { + function BlogEntry() { + } + return BlogEntry; +}()); +exports.BlogEntry = BlogEntry; +//# sourceMappingURL=blog-entry.js.map \ No newline at end of file diff --git a/blog-complete/dist/blog/blog-entry.js.map b/blog-complete/dist/blog/blog-entry.js.map new file mode 100644 index 0000000..63b0cb4 --- /dev/null +++ b/blog-complete/dist/blog/blog-entry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"blog-entry.js","sourceRoot":"","sources":["../../app/blog/blog-entry.ts"],"names":[],"mappings":";;AAAA;IAAA;IAIA,CAAC;IAAD,gBAAC;AAAD,CAAC,AAJD,IAIC;AAJY,8BAAS"} \ No newline at end of file diff --git a/blog-complete/dist/blog/initialEntries.js b/blog-complete/dist/blog/initialEntries.js new file mode 100644 index 0000000..62b04c2 --- /dev/null +++ b/blog-complete/dist/blog/initialEntries.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.initialEntries = [ + { + title: "Angular 2 erschienen", + image: "data:image/png;base64,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", + text: "Endlich ist die finale Version von Angular 2 erschienen. Nach langer Beta-Phase ..." + }, + { + title: "Neue Vorschläge für die kommende Module-Loader-Syntax", + image: "https://cdn-images-1.medium.com/max/1000/1*RQFLsbQumE-iNrXzs_Oz8g.jpeg", + text: "Nachdem im ES2015-Standard bereits die Module-API verabschiedet wurde, hat das zuständige Konsortium nun neue Vorschläge für die Module-Loader-Syntax bekannt gegeben..." + } +]; +//# sourceMappingURL=initialEntries.js.map \ No newline at end of file diff --git a/blog-complete/dist/blog/initialEntries.js.map b/blog-complete/dist/blog/initialEntries.js.map new file mode 100644 index 0000000..c38bb30 --- /dev/null +++ b/blog-complete/dist/blog/initialEntries.js.map @@ -0,0 +1 @@ +{"version":3,"file":"initialEntries.js","sourceRoot":"","sources":["../../app/blog/initialEntries.ts"],"names":[],"mappings":";;AAAW,QAAA,cAAc,GAAG;IAC1B;QACE,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,4kLAA4kL;QACnlL,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,KAAK,EAAE,uDAAuD;QAC9D,KAAK,EAAE,wEAAwE;QAC/E,IAAI,EAAE,0KAA0K;KACjL;CACF,CAAA"} \ No newline at end of file diff --git a/blog-complete/dist/main.js b/blog-complete/dist/main.js new file mode 100644 index 0000000..4b1ba88 --- /dev/null +++ b/blog-complete/dist/main.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var platform_browser_dynamic_1 = require("@angular/platform-browser-dynamic"); +var app_module_1 = require("./app.module"); +platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule); +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/blog-complete/dist/main.js.map b/blog-complete/dist/main.js.map new file mode 100644 index 0000000..65d30de --- /dev/null +++ b/blog-complete/dist/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","sourceRoot":"","sources":["../app/main.ts"],"names":[],"mappings":";;AAAA,8EAAyE;AACzE,2CAAuC;AAEvC,iDAAsB,EAAE,CAAC,eAAe,CAAC,sBAAS,CAAC,CAAC"} \ No newline at end of file diff --git a/blog-complete/favicon.ico b/blog-complete/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- + + + Hallo Angular + + + + + + + Die Applikation wird geladen... + + + + + + + + + + + + diff --git a/blog-complete/karma.conf.js b/blog-complete/karma.conf.js new file mode 100644 index 0000000..cc7c84b --- /dev/null +++ b/blog-complete/karma.conf.js @@ -0,0 +1,68 @@ +// Karma configuration +// Generated on Sat Feb 25 2017 12:32:32 GMT+0100 (CET) + +module.exports = function(config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine'], + + + // list of files / patterns to load in the browser + files: [ + ], + + + // list of files to exclude + exclude: [ + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Chrome'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +} diff --git a/blog-complete/package.json b/blog-complete/package.json new file mode 100644 index 0000000..06988a2 --- /dev/null +++ b/blog-complete/package.json @@ -0,0 +1,52 @@ +{ + "name": "blog-app", + "version": "1.0.0", + "description": "Blog Applikation", + "watch": { + "copy:html": "./app/**/*.html" + }, + "scripts": { + "start": "tsc && npm run copy:html && concurrently \"npm run tsc:w\" \"npm run html:watch\" \"live-server\" ", + "tsc": "./node_modules/.bin/tsc", + "tsc:w": "./node_modules/.bin/tsc --watch", + "copy:html": "copyfiles -u 1 ./app/**/*.html dist", + "html:watch": "onchange \"./app/**/*.html\" -v -- npm run copy:html" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@angular/common": "2.4.3", + "@angular/compiler": "2.4.3", + "@angular/core": "2.4.3", + "@angular/forms": "2.4.3", + "@angular/http": "2.4.3", + "@angular/platform-browser": "2.4.3", + "@angular/platform-browser-dynamic": "2.4.3", + "systemjs": "0.19.27", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.3", + "zone.js": "^0.7.0", + "bootstrap": "^3.3.6" + }, + "devDependencies": { + "canonical-path": "0.0.2", + "concurrently": "^2.2.0", + "copyfiles": "^1.0.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.3", + "jasmine-core": "^2.5.2", + "karma": "^1.5.0", + "karma-jasmine": "^1.1.0", + "live-server": "^1.1.0", + "lodash": "^4.11.1", + "npm-watch": "^0.1.6", + "onchange": "^3.0.2", + "rimraf": "^2.5.2", + "tslint": "^3.7.4", + "typescript": "^2.0.2", + "typings": "^1.0.4" + }, + "repository": {} +} diff --git a/blog-complete/styles.css b/blog-complete/styles.css new file mode 100644 index 0000000..0aa72d4 --- /dev/null +++ b/blog-complete/styles.css @@ -0,0 +1,65 @@ +body { + font-family: Helvetica; + padding-left: 15px; +} + +.form { + background-color: #eee; + width: 580px; /* Breite des Formulars */ + padding: 20px; + border: 1px solid #8c8c8c; + position: absolute; + margin-bottom: 25px; +} + +.control { + display: flex; +} + +label { + width: 100px; + cursor: pointer; +} + +input, +textarea { + width: 550px; + border: 1px solid #8c8c8c; + margin-bottom: 1em; +} + +span.title { + font-size: x-large; +} + +.clear-fix { + clear: both; +} + +.blog-entry { + width: 600px; + display: flex; + padding-bottom: 30px; +} + +button { + float: right; + padding-right: 20px; +} + +.blog-image { + width: 30%; +} + +img { + max-width: 90%; + max-height: 100px; +} + +.blog-summary { + width: 70%; +} + +textarea { + height: 7em; +} \ No newline at end of file diff --git a/blog-complete/systemjs.config.js b/blog-complete/systemjs.config.js new file mode 100644 index 0000000..504b0d2 --- /dev/null +++ b/blog-complete/systemjs.config.js @@ -0,0 +1,61 @@ +/** + * System configuration for Angular 2 samples + * Adjust as necessary for your application needs. + */ +(function (global) { + System.config({ + paths: { + // paths serve as alias + 'npm:': 'node_modules/' + }, + // map tells the System loader where to look for things + map: { + // our app is within the app folder + 'app': 'dist', + + // angular bundles + '@angular/core': 'node_modules/@angular/core/bundles/core.umd.js', + '@angular/common': 'npm:@angular/common/bundles/common.umd.js', + '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', + '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', + '@angular/http': 'npm:@angular/http/bundles/http.umd.js', + '@angular/router': 'npm:@angular/router/bundles/router.umd.js', + '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', + + // other libraries + 'rxjs': 'npm:rxjs', + 'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api', + }, + // packages tells the System loader how to load when no filename and/or no extension + packages: { + app: { + main: './main.js', + defaultExtension: 'js' + }, + rxjs: { + defaultExtension: 'js' + }, + 'angular2-in-memory-web-api': { + main: './index.js', + defaultExtension: 'js' + } + } + }); +})(this); + +System.config({ + paths: { + // paths serve as alias + 'npm:': 'node_modules/' + }, + map: { + 'app': 'dist', // Kompilierte Anwendung liegt im dist-Verzeichnis + '@angular/core': 'node_modules/@angular/core/bundles/core.umd.js', + 'rxjs': 'node_modules/rxjs', + }, + packages: { + app: { main: './main.js', defaultExtension: 'js' }, + rxjs: { defaultExtension: 'js' }, + } +}); diff --git a/blog-complete/tsconfig.json b/blog-complete/tsconfig.json new file mode 100644 index 0000000..2857a1f --- /dev/null +++ b/blog-complete/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "outDir": "dist", + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true, + "lib": [ + "es6", + "dom" + ], + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "removeComments": false, + "noImplicitAny": true, + "suppressImplicitAnyIndexErrors": true + } +} diff --git a/blog-complete/typings.d.ts b/blog-complete/typings.d.ts new file mode 100644 index 0000000..6ed0217 --- /dev/null +++ b/blog-complete/typings.d.ts @@ -0,0 +1 @@ +declare var module: any; diff --git a/project-manager-reactive/createTaskFailure.png b/project-manager-reactive/createTaskFailure.png deleted file mode 100644 index 44cf2f773ab5a932dfcc767906e01608ec7b9d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33850 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