diff --git a/angular-cli-build.js b/angular-cli-build.js
index 6f6e2d3..012a27d 100644
--- a/angular-cli-build.js
+++ b/angular-cli-build.js
@@ -17,7 +17,8 @@ module.exports = function(defaults) {
'rxjs/**/*.+(js|js.map)',
'@angular/**/*.+(js|js.map)',
'angularfire2/**/*.js',
- 'firebase/*.js'
+ 'firebase/*.js',
+ 'ng2-dnd/**/*.js'
]
});
};
diff --git a/package.json b/package.json
index f847a76..3fe3161 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
"angularfire2": "^2.0.0-beta.2",
"es6-shim": "0.35.1",
"firebase": "^3.2.0",
+ "ng2-dnd": "^1.12.0",
"reflect-metadata": "0.1.3",
"rxjs": "5.0.0-beta.6",
"systemjs": "0.19.26",
diff --git a/src/app/add-item/add-item.component.ts b/src/app/add-item/add-item.component.ts
index e94e51c..b12ff4b 100644
--- a/src/app/add-item/add-item.component.ts
+++ b/src/app/add-item/add-item.component.ts
@@ -23,7 +23,11 @@ export class AddItemComponent implements OnInit {
addItem($event) {
if($event.keyCode === 13){
- this.items.push({ desc: this.itemWrapper.desc, created_at: new Date().getTime() });
+ this.items.push({
+ desc: this.itemWrapper.desc,
+ status: 'pending',
+ created_at: new Date().getTime()
+ });
this.itemWrapper.desc = undefined;
}
}
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 49e0477..3901332 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,10 +1,9 @@
{{title}}
-
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 873d1d3..b77d495 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,20 +1,20 @@
import { Component } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
-import { AngularFire } from 'angularfire2';
import { LoginComponent } from './login/login.component'
import { ItemsComponent } from "./items/items.component";
import { LogoutComponent } from "./logout/logout.component";
import {AddItemComponent} from "./add-item/add-item.component";
+import { ConditionalRouterLinkComponent } from "./conditional-router-link/conditional-router-link.component";
@Component({
moduleId: module.id,
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css'],
- directives: [ROUTER_DIRECTIVES, LoginComponent, ItemsComponent, LogoutComponent]
+ directives: [ROUTER_DIRECTIVES, LoginComponent, ItemsComponent, LogoutComponent, ConditionalRouterLinkComponent]
})
export class AppComponent {
title = 'FirebaseAngular2Cli';
- constructor(public af: AngularFire) { }
+ constructor() { }
}
diff --git a/src/app/conditional-router-link/conditional-router-link.component.css b/src/app/conditional-router-link/conditional-router-link.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/conditional-router-link/conditional-router-link.component.html b/src/app/conditional-router-link/conditional-router-link.component.html
new file mode 100644
index 0000000..8ade27e
--- /dev/null
+++ b/src/app/conditional-router-link/conditional-router-link.component.html
@@ -0,0 +1 @@
+{{label}}
diff --git a/src/app/conditional-router-link/conditional-router-link.component.spec.ts b/src/app/conditional-router-link/conditional-router-link.component.spec.ts
new file mode 100644
index 0000000..0b0c6eb
--- /dev/null
+++ b/src/app/conditional-router-link/conditional-router-link.component.spec.ts
@@ -0,0 +1,13 @@
+// /* tslint:disable:no-unused-variable */
+//
+// import { By } from '@angular/platform-browser';
+// import { DebugElement } from '@angular/core';
+// import { addProviders, async, inject } from '@angular/core/testing';
+// import { ConditionalRouterLinkComponent } from './conditional-router-link.component';
+//
+// describe('Component: ConditionalRouterLink', () => {
+// it('should create an instance', () => {
+// let component = new ConditionalRouterLinkComponent();
+// expect(component).toBeTruthy();
+// });
+// });
diff --git a/src/app/conditional-router-link/conditional-router-link.component.ts b/src/app/conditional-router-link/conditional-router-link.component.ts
new file mode 100644
index 0000000..f341f22
--- /dev/null
+++ b/src/app/conditional-router-link/conditional-router-link.component.ts
@@ -0,0 +1,26 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { AngularFire } from 'angularfire2';
+
+@Component({
+ moduleId: module.id,
+ selector: 'conditional-router-link',
+ templateUrl: 'conditional-router-link.component.html',
+ styleUrls: ['conditional-router-link.component.css']
+})
+export class ConditionalRouterLinkComponent implements OnInit {
+ @Input() routerLink: string;
+ @Input() label: string;
+ @Input() requiresLogin: boolean;
+
+ constructor(public af: AngularFire) { }
+
+ ngOnInit() {
+ if(!this.label) {
+ this.label = 'Some link'
+ }
+ if(this.requiresLogin == undefined) {
+ this.requiresLogin = true
+ }
+ }
+
+}
diff --git a/src/app/conditional-router-link/index.ts b/src/app/conditional-router-link/index.ts
new file mode 100644
index 0000000..cc6e972
--- /dev/null
+++ b/src/app/conditional-router-link/index.ts
@@ -0,0 +1 @@
+export * from './conditional-router-link.component';
diff --git a/src/app/item/item.component.html b/src/app/item/item.component.html
index 6610846..75adea4 100644
--- a/src/app/item/item.component.html
+++ b/src/app/item/item.component.html
@@ -1,2 +1,3 @@
{{item.desc}}
-XXXX
+{{item.status}}
+DELETE
diff --git a/src/app/items/items.component.css b/src/app/items/items.component.css
index e69de29..8515876 100644
--- a/src/app/items/items.component.css
+++ b/src/app/items/items.component.css
@@ -0,0 +1,3 @@
+.panel {
+ border: 1px solid #bbb;
+}
diff --git a/src/app/items/items.component.html b/src/app/items/items.component.html
index cbd740f..789f962 100644
--- a/src/app/items/items.component.html
+++ b/src/app/items/items.component.html
@@ -2,8 +2,27 @@ Items
-
+
+
+
+
+Items done
+
+
+
diff --git a/src/app/items/items.component.ts b/src/app/items/items.component.ts
index f3064aa..7565bab 100644
--- a/src/app/items/items.component.ts
+++ b/src/app/items/items.component.ts
@@ -1,5 +1,6 @@
import { Component, OnInit } from '@angular/core';
-import { AngularFire, FirebaseListObservable } from 'angularfire2';
+import { AngularFire, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2';
+import { DND_DIRECTIVES } from 'ng2-dnd/ng2-dnd';
import {AddItemComponent} from "../add-item/add-item.component";
import {ItemComponent} from "../item/item.component";
@@ -8,16 +9,36 @@ import {ItemComponent} from "../item/item.component";
selector: 'items',
templateUrl: 'items.component.html',
styleUrls: ['items.component.css'],
- directives: [AddItemComponent, ItemComponent]
+ directives: [DND_DIRECTIVES, AddItemComponent, ItemComponent]
})
export class ItemsComponent implements OnInit {
items: FirebaseListObservable;
+ pendingItems: FirebaseListObservable;
+ doneItems: FirebaseListObservable;
+ item: FirebaseObjectObservable;
constructor(af: AngularFire) {
this.items = af.database.list('items');
+ this.pendingItems = af.database.list('items', {
+ query: {
+ orderByChild: 'status',
+ equalTo: 'pending'
+ }
+ });
+ this.doneItems = af.database.list('items', {
+ query: {
+ orderByChild: 'status',
+ equalTo: 'done'
+ }
+ });
}
ngOnInit() {
}
+
+ markAsDone($event){
+ this.items.update($event.dragData.$key, { status: 'done' });
+ }
+
}
diff --git a/src/main.ts b/src/main.ts
index b43f264..2967612 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -4,7 +4,7 @@ import { AppComponent, environment } from './app/';
import { FIREBASE_PROVIDERS, defaultFirebase, AngularFire, AuthMethods, AuthProviders, firebaseAuthConfig } from 'angularfire2';
import { disableDeprecatedForms, provideForms } from '@angular/forms';
import { appRouterProviders } from './app/app.routes';
-
+import { DND_PROVIDERS } from 'ng2-dnd/ng2-dnd';
if (environment.production) {
enableProdMode();
@@ -25,5 +25,6 @@ bootstrap(AppComponent, [
}),
disableDeprecatedForms(),
provideForms(),
- appRouterProviders
+ appRouterProviders,
+ DND_PROVIDERS
]);
diff --git a/src/system-config.ts b/src/system-config.ts
index 57808a0..ece3a6a 100644
--- a/src/system-config.ts
+++ b/src/system-config.ts
@@ -10,7 +10,8 @@
/** Map relative paths to URLs. */
const map: any = {
'firebase': 'vendor/firebase/firebase.js',
- 'angularfire2': 'vendor/angularfire2'
+ 'angularfire2': 'vendor/angularfire2',
+ 'ng2-dnd': 'vendor/ng2-dnd'
};
/** User packages configuration. */
@@ -18,7 +19,8 @@ const packages: any = {
angularfire2: {
defaultExtension: 'js',
main: 'angularfire2.js'
- }
+ },
+ 'ng2-dnd': { defaultExtension: 'js', main: 'ng2-dnd.js' }
};
////////////////////////////////////////////////////////////////////////////////////////////////
@@ -47,6 +49,7 @@ const barrels: string[] = [
'app/logout',
'app/add-item',
'app/item',
+ 'app/conditional-router-link'
/** @cli-barrel */
];