From f0e81b1da4f08f101298ddc462948295ce21d854 Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Mon, 26 Jan 2015 20:25:34 +0400 Subject: [PATCH 01/18] setup page --- app/controllers/user.js | 6 ++++++ app/router.js | 2 ++ app/routes/application.js | 2 +- app/routes/group/restaurants.js | 3 ++- app/routes/index.js | 8 +++++--- app/routes/settings.js | 4 ++++ app/routes/setup.js | 8 ++++++++ app/templates/settings.hbs | 1 + app/templates/setup.hbs | 11 +++++++++++ tests/unit/routes/settings-test.js | 14 ++++++++++++++ tests/unit/routes/setup-test.js | 14 ++++++++++++++ 11 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 app/routes/settings.js create mode 100644 app/routes/setup.js create mode 100644 app/templates/settings.hbs create mode 100644 app/templates/setup.hbs create mode 100644 tests/unit/routes/settings-test.js create mode 100644 tests/unit/routes/setup-test.js diff --git a/app/controllers/user.js b/app/controllers/user.js index 4faf7d7..d52ae41 100644 --- a/app/controllers/user.js +++ b/app/controllers/user.js @@ -133,6 +133,9 @@ export default Ember.Controller.extend({ if (exists) { self.store.find('user', userId).then(function(appUser) { self.set('currentUser', appUser); + if(!appUser.get('username')) { + self.transitionToRoute('setup'); + } }); } else { self.createNewUser(email, token); @@ -151,6 +154,9 @@ export default Ember.Controller.extend({ var appUser = self.store.find('user', authData.facebook.id).then(function(value) { self.set('currentUser', value); self.get('controllers.friend').fetchFriends(value); + if(!value.get('username')) { + self.transitionToRoute('setup'); + } return value; }); diff --git a/app/router.js b/app/router.js index bb884d0..ccf04e7 100644 --- a/app/router.js +++ b/app/router.js @@ -24,6 +24,8 @@ Router.map(function() { this.route('group/timer', { path: 'group/:group_id/restaurant/:restaurant_id/timer' }); this.route('group/order', { path: 'group/:group_id/restaurant/:restaurant_id/order/:order_id' }); this.route('group/summary', { path: 'group/:group_id/restaurant/:restaurant_id/order/:order_id/summary' }); + this.route('setup'); + this.route('settings'); }); Router.reopen({ diff --git a/app/routes/application.js b/app/routes/application.js index 6d4bcfd..2a9647a 100644 --- a/app/routes/application.js +++ b/app/routes/application.js @@ -5,7 +5,7 @@ export default Ember.Route.extend(ApplicationRouteMixin, { init: function() { this._super(); if(this.get('session').isAuthenticated) { - var self = this, + var self = this, token = this.get('session').content.accessToken; window.FB.api('/me/', function(r) { self.controllerFor('user').login(r.email, token); }); } diff --git a/app/routes/group/restaurants.js b/app/routes/group/restaurants.js index d8d4b56..8a0dbe0 100644 --- a/app/routes/group/restaurants.js +++ b/app/routes/group/restaurants.js @@ -1,6 +1,7 @@ import Ember from 'ember'; +import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend({ +export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function(params) { // var userID = this.get('session').content.userID; return this.store.find('group', params.id); diff --git a/app/routes/index.js b/app/routes/index.js index cc3c3ba..a70f067 100644 --- a/app/routes/index.js +++ b/app/routes/index.js @@ -1,7 +1,9 @@ import Ember from 'ember'; export default Ember.Route.extend({ - // redirect: function() { - // this.transitionTo('group'); - // } + redirect: function() { + if(this.get('session').isAuthenticated) { + this.transitionTo('group'); + } + } }); diff --git a/app/routes/settings.js b/app/routes/settings.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/app/routes/settings.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/app/routes/setup.js b/app/routes/setup.js new file mode 100644 index 0000000..bb4e617 --- /dev/null +++ b/app/routes/setup.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model: function() { + var userID = this.get('session').content.userID; + return this.store.find('user', userID); + } +}); diff --git a/app/templates/settings.hbs b/app/templates/settings.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/app/templates/settings.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/app/templates/setup.hbs b/app/templates/setup.hbs new file mode 100644 index 0000000..784d63b --- /dev/null +++ b/app/templates/setup.hbs @@ -0,0 +1,11 @@ +
+
+
+
+ {{ input name="username" value=username classNames='form-control' placeholder="Please pick a username" }} + {{ input name="phone" value=phone classNames='form-control' placeholder="Phone number" }} + +
+
+
+
diff --git a/tests/unit/routes/settings-test.js b/tests/unit/routes/settings-test.js new file mode 100644 index 0000000..da9dcfd --- /dev/null +++ b/tests/unit/routes/settings-test.js @@ -0,0 +1,14 @@ +import { + moduleFor, + test +} from 'ember-qunit'; + +moduleFor('route:settings', 'SettingsRoute', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function() { + var route = this.subject(); + ok(route); +}); diff --git a/tests/unit/routes/setup-test.js b/tests/unit/routes/setup-test.js new file mode 100644 index 0000000..f9cddea --- /dev/null +++ b/tests/unit/routes/setup-test.js @@ -0,0 +1,14 @@ +import { + moduleFor, + test +} from 'ember-qunit'; + +moduleFor('route:setup', 'SetupRoute', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function() { + var route = this.subject(); + ok(route); +}); From 8f98b099af99b8bf59b873c35b8bf291d78f4c41 Mon Sep 17 00:00:00 2001 From: Tor Sanden Date: Mon, 26 Jan 2015 20:48:47 +0400 Subject: [PATCH 02/18] style setup/username page --- app/templates/setup.hbs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/templates/setup.hbs b/app/templates/setup.hbs index 784d63b..5e2cc09 100644 --- a/app/templates/setup.hbs +++ b/app/templates/setup.hbs @@ -2,8 +2,12 @@
- {{ input name="username" value=username classNames='form-control' placeholder="Please pick a username" }} - {{ input name="phone" value=phone classNames='form-control' placeholder="Phone number" }} +
+ {{ input name="username" value=username classNames='form-control' placeholder="Please pick a username" }} +
+
+ {{ input name="phone" value=phone classNames='form-control' placeholder="Phone number" }} +
From d3505594196cbc4c5649176994d52e0025b23d6e Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 19:51:59 +0400 Subject: [PATCH 03/18] Submit button now works --- app/controllers/setup.js | 14 ++++++++++++++ app/models/user.js | 1 + app/templates/setup.hbs | 4 ++-- tests/unit/controllers/setup-test.js | 15 +++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 app/controllers/setup.js create mode 100644 tests/unit/controllers/setup-test.js diff --git a/app/controllers/setup.js b/app/controllers/setup.js new file mode 100644 index 0000000..0626683 --- /dev/null +++ b/app/controllers/setup.js @@ -0,0 +1,14 @@ +import Ember from 'ember'; + +export default Ember.Controller.extend({ + actions: { + setupUser: function() { + var self = this, + currentUser = this.get('model'); + currentUser.setProperties({ username: this.get('username'), phone: this.get('phone') }); + currentUser.save().then(function(){ + self.transitionToRoute('group'); + }); + } + } +}); diff --git a/app/models/user.js b/app/models/user.js index e6bd1a7..e3431b5 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -4,6 +4,7 @@ export default DS.Model.extend({ name : DS.attr('string'), email : DS.attr('string'), username : DS.attr('string'), + phone : DS.attr('string'), friends : DS.hasMany("user", { async: true }), favItems : DS.hasMany("menu-item", { inverse: 'favUsers', async: true }), groups : DS.hasMany("group", { inverse: 'members', async: true }) diff --git a/app/templates/setup.hbs b/app/templates/setup.hbs index 784d63b..bc11836 100644 --- a/app/templates/setup.hbs +++ b/app/templates/setup.hbs @@ -2,8 +2,8 @@
- {{ input name="username" value=username classNames='form-control' placeholder="Please pick a username" }} - {{ input name="phone" value=phone classNames='form-control' placeholder="Phone number" }} + {{ input name="username" value=content.username classNames='form-control' placeholder="Please pick a username" }} + {{ input name="phone" value=content.phone classNames='form-control' placeholder="Phone number" }}
diff --git a/tests/unit/controllers/setup-test.js b/tests/unit/controllers/setup-test.js new file mode 100644 index 0000000..a2899a5 --- /dev/null +++ b/tests/unit/controllers/setup-test.js @@ -0,0 +1,15 @@ +import { + moduleFor, + test +} from 'ember-qunit'; + +moduleFor('controller:setup', 'SetupController', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function() { + var controller = this.subject(); + ok(controller); +}); From b8f728f882aff45c60a548e4b20bc38729f9ece3 Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 20:02:16 +0400 Subject: [PATCH 04/18] fixed controller for setting up the user --- app/controllers/setup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/setup.js b/app/controllers/setup.js index 0626683..6505d1c 100644 --- a/app/controllers/setup.js +++ b/app/controllers/setup.js @@ -5,7 +5,7 @@ export default Ember.Controller.extend({ setupUser: function() { var self = this, currentUser = this.get('model'); - currentUser.setProperties({ username: this.get('username'), phone: this.get('phone') }); + currentUser.setProperties({ username: this.get('content.username'), phone: this.get('content.phone') }); currentUser.save().then(function(){ self.transitionToRoute('group'); }); From 5d8ca89ab3bd64d66b0e087f4d5eeac4fcfa8bbc Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 20:06:27 +0400 Subject: [PATCH 05/18] minor fix to template --- app/templates/setup.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/setup.hbs b/app/templates/setup.hbs index 5c40329..4e7ce83 100644 --- a/app/templates/setup.hbs +++ b/app/templates/setup.hbs @@ -6,7 +6,7 @@ {{ input name="username" value=content.username classNames='form-control' placeholder="Please pick a username" }}
- {{ input name="phone" value=phone classNames='form-control' placeholder="Phone number" }} + {{ input name="phone" value=content.phone classNames='form-control' placeholder="Phone number" }}
From 66235ffc1f3f862884ffaae854153f09bb879239 Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 20:36:26 +0400 Subject: [PATCH 06/18] added error handling in the setup page in case username is empty --- app/controllers/setup.js | 16 ++++++++++++---- app/templates/setup.hbs | 7 ++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/controllers/setup.js b/app/controllers/setup.js index 6505d1c..61d9162 100644 --- a/app/controllers/setup.js +++ b/app/controllers/setup.js @@ -1,14 +1,22 @@ import Ember from 'ember'; export default Ember.Controller.extend({ + errorMsg: null, + displayErrorMsg: false, actions: { setupUser: function() { var self = this, currentUser = this.get('model'); - currentUser.setProperties({ username: this.get('content.username'), phone: this.get('content.phone') }); - currentUser.save().then(function(){ - self.transitionToRoute('group'); - }); + if(!this.get('content.username')) { + this.set('errorMsg', 'Please enter your username.'); + this.set('displayErrorMsg', true); + } else { + currentUser.setProperties({ username: this.get('content.username'), phone: this.get('content.phone') }); + currentUser.save().then(function(){ + self.transitionToRoute('group'); + self.set('displayErrorMsg', false); + }); + } } } }); diff --git a/app/templates/setup.hbs b/app/templates/setup.hbs index 4e7ce83..15d9b19 100644 --- a/app/templates/setup.hbs +++ b/app/templates/setup.hbs @@ -2,8 +2,13 @@
+ {{#if displayErrorMsg}} + + {{/if}}
- {{ input name="username" value=content.username classNames='form-control' placeholder="Please pick a username" }} + {{ input name="username" value=content.username classNames='form-control' placeholder="Please pick a username" required="" }}
{{ input name="phone" value=content.phone classNames='form-control' placeholder="Phone number" }} From ff595db508f52f827f426df2198a41e43ad5edb7 Mon Sep 17 00:00:00 2001 From: Tor Sanden Date: Wed, 11 Feb 2015 17:38:13 +0100 Subject: [PATCH 07/18] title on setup page --- app/templates/setup.hbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/templates/setup.hbs b/app/templates/setup.hbs index 5c40329..7b49607 100644 --- a/app/templates/setup.hbs +++ b/app/templates/setup.hbs @@ -1,12 +1,13 @@
+

Please complete your profile

{{ input name="username" value=content.username classNames='form-control' placeholder="Please pick a username" }}
- {{ input name="phone" value=phone classNames='form-control' placeholder="Phone number" }} + {{ input name="phone" value=content.phone classNames='form-control' placeholder="Phone number" }}
From 0b078649b498d83826e4ddfa017e421f5261be2c Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 21:12:11 +0400 Subject: [PATCH 08/18] animated success message after setting up account --- app/controllers/group.js | 6 ++++++ app/controllers/setup.js | 10 +++++++++- app/templates/group.hbs | 6 ++++++ tests/unit/controllers/group-test.js | 15 +++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 app/controllers/group.js create mode 100644 tests/unit/controllers/group-test.js diff --git a/app/controllers/group.js b/app/controllers/group.js new file mode 100644 index 0000000..8cbc9ed --- /dev/null +++ b/app/controllers/group.js @@ -0,0 +1,6 @@ +import Ember from 'ember'; + +export default Ember.Controller.extend({ + displaySuccessMsg: false, + successMsg: null +}); diff --git a/app/controllers/setup.js b/app/controllers/setup.js index 61d9162..bc5bed5 100644 --- a/app/controllers/setup.js +++ b/app/controllers/setup.js @@ -1,6 +1,7 @@ import Ember from 'ember'; export default Ember.Controller.extend({ + needs: ['group'], errorMsg: null, displayErrorMsg: false, actions: { @@ -13,8 +14,15 @@ export default Ember.Controller.extend({ } else { currentUser.setProperties({ username: this.get('content.username'), phone: this.get('content.phone') }); currentUser.save().then(function(){ - self.transitionToRoute('group'); self.set('displayErrorMsg', false); + self.get('controllers.group').set('displaySuccessMsg', true); + self.get('controllers.group').set('successMsg', 'Your information was saved. Thank you for subscribing.'); + window.setTimeout(function() { + window.$(".js-success").fadeTo(500, 0).slideUp(500, function(){ + self.get('controllers.group').set('displaySuccessMsg', false); + }); + }, 4500); + self.transitionToRoute('group'); }); } } diff --git a/app/templates/group.hbs b/app/templates/group.hbs index a6b1b84..4dab263 100644 --- a/app/templates/group.hbs +++ b/app/templates/group.hbs @@ -1,4 +1,10 @@
+ {{#if displaySuccessMsg}} + + {{/if}}

Groups

diff --git a/tests/unit/controllers/group-test.js b/tests/unit/controllers/group-test.js new file mode 100644 index 0000000..fc4df83 --- /dev/null +++ b/tests/unit/controllers/group-test.js @@ -0,0 +1,15 @@ +import { + moduleFor, + test +} from 'ember-qunit'; + +moduleFor('controller:group', 'GroupController', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function() { + var controller = this.subject(); + ok(controller); +}); From 8d012758cf8def80266d3ff92faf2343602b8bbe Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 21:26:37 +0400 Subject: [PATCH 09/18] setup page is available only after first login now --- app/controllers/setup.js | 7 ++++++- app/routes/setup.js | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/controllers/setup.js b/app/controllers/setup.js index bc5bed5..eb571c3 100644 --- a/app/controllers/setup.js +++ b/app/controllers/setup.js @@ -4,6 +4,11 @@ export default Ember.Controller.extend({ needs: ['group'], errorMsg: null, displayErrorMsg: false, + fakeInit: function() { + if(this.get('model').get('username')) { + this.transitionToRoute('group'); + } + }, actions: { setupUser: function() { var self = this, @@ -18,7 +23,7 @@ export default Ember.Controller.extend({ self.get('controllers.group').set('displaySuccessMsg', true); self.get('controllers.group').set('successMsg', 'Your information was saved. Thank you for subscribing.'); window.setTimeout(function() { - window.$(".js-success").fadeTo(500, 0).slideUp(500, function(){ + window.$(".js-success").fadeTo(500, 0).slideUp(500, function() { self.get('controllers.group').set('displaySuccessMsg', false); }); }, 4500); diff --git a/app/routes/setup.js b/app/routes/setup.js index bb4e617..66ef1d6 100644 --- a/app/routes/setup.js +++ b/app/routes/setup.js @@ -1,8 +1,14 @@ import Ember from 'ember'; +import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend({ +export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { var userID = this.get('session').content.userID; return this.store.find('user', userID); + }, + setupController: function (controller, model) { + // debugger; + this._super(controller, model); + this.controller.fakeInit(); } }); From a02468b4c2bf6d54757b031031d8b2c85121012d Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 21:43:52 +0400 Subject: [PATCH 10/18] minor refactor --- app/templates/group/timer.hbs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/app/templates/group/timer.hbs b/app/templates/group/timer.hbs index dac0b00..b899df7 100644 --- a/app/templates/group/timer.hbs +++ b/app/templates/group/timer.hbs @@ -6,8 +6,18 @@
{{#link-to '' group classNames='group-name capitalize'}} - {{#if content.group.picture }} {{ else }} {{/if}} -

{{#if content.group.name }} {{ content.group.name }} {{ else }} Untitled {{/if}}

+ {{#if content.group.picture}} + + {{ else }} + + {{/if}} +

+ {{#if content.group.name}} + {{ content.group.name }} + {{ else }} + Untitled + {{/if}} +

{{/link-to}}
@@ -16,8 +26,18 @@
{{#link-to '' group classNames='restaurant-name capitalize'}} - {{#if content.picture }} {{ else }} {{/if}} -

{{#if content.name }} {{ content.name }} {{ else }} Untitled {{/if}}

+ {{#if content.picture}} + + {{ else }} + + {{/if}} +

+ {{#if content.name}} + {{ content.name }} + {{ else }} + Untitled + {{/if}} +

{{/link-to}}
From c3c666197f98d95a68972c5e8771b75b42739bf3 Mon Sep 17 00:00:00 2001 From: Gustavo Siqueira Date: Wed, 11 Feb 2015 21:45:38 +0400 Subject: [PATCH 11/18] ops --- app/templates/group/timer.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/group/timer.hbs b/app/templates/group/timer.hbs index b899df7..c89fe2e 100644 --- a/app/templates/group/timer.hbs +++ b/app/templates/group/timer.hbs @@ -19,7 +19,7 @@ {{/if}}

{{/link-to}} - +
{{ fa-icon "long-arrow-right" classNames="" }} From 2cf8d18b5383b4090557bd9a932bac20a8105826 Mon Sep 17 00:00:00 2001 From: graphmeter Date: Thu, 19 Feb 2015 18:12:26 +0100 Subject: [PATCH 12/18] add settings page and route --- app/.DS_Store | Bin 0 -> 6148 bytes app/routes/settings.js | 7 ++++++- app/templates/-header.hbs | 2 +- app/templates/settings.hbs | 37 ++++++++++++++++++++++++++++++++++++- 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 app/.DS_Store diff --git a/app/.DS_Store b/app/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0
  • - {{#link-to '' classNames=''}} + {{#link-to 'settings' classNames=''}} Settings {{/link-to}}
  • diff --git a/app/templates/settings.hbs b/app/templates/settings.hbs index c24cd68..19f54dc 100644 --- a/app/templates/settings.hbs +++ b/app/templates/settings.hbs @@ -1 +1,36 @@ -{{outlet}} +
    +
    +
    +
    +
    + + + +
    +
    +

    {{ content.name }}

    +
    +
    +
    +
    +
    + + {{ input name="name" value=content.name classNames='form-control' placeholder="Your name" required="" }} +
    +
    + + {{ input name="username" value=content.username classNames='form-control' placeholder="User name" required="" }} +
    +
    + + {{ input name="phone" value=content.phone classNames='form-control' placeholder="(123) - 555 5555" }} +
    +
    + + {{ input name="phone" value=content.phone classNames='form-control' placeholder="Main road 1" }} +
    + +
    +
    +
    +
    From 413e4cf2a8ac1aa615ee573e5cb0cdd604e1c774 Mon Sep 17 00:00:00 2001 From: graphmeter Date: Thu, 19 Feb 2015 18:21:55 +0100 Subject: [PATCH 13/18] change user photo and address field --- app/styles/app.scss | 4 ++ app/templates/settings.hbs | 3 +- .../assets/images/default-group-picture.svg | 4 +- public/assets/images/default-user-picture.svg | 68 +++++++++++++++++++ 4 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 public/assets/images/default-user-picture.svg diff --git a/app/styles/app.scss b/app/styles/app.scss index 2f7adf6..56c2f5c 100644 --- a/app/styles/app.scss +++ b/app/styles/app.scss @@ -482,3 +482,7 @@ address > a { text-decoration: none; } } + +.user-logo { + max-width: 128px; +} diff --git a/app/templates/settings.hbs b/app/templates/settings.hbs index 19f54dc..c5f95e0 100644 --- a/app/templates/settings.hbs +++ b/app/templates/settings.hbs @@ -4,11 +4,12 @@

    {{ content.name }}

    +

    diff --git a/public/assets/images/default-group-picture.svg b/public/assets/images/default-group-picture.svg index 412165e..51551d3 100644 --- a/public/assets/images/default-group-picture.svg +++ b/public/assets/images/default-group-picture.svg @@ -25,7 +25,7 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.7" - inkscape:cx="-144.51862" + inkscape:cx="-395.94719" inkscape:cy="120.84209" inkscape:document-units="px" inkscape:current-layer="layer1" @@ -53,7 +53,7 @@ id="layer1" transform="translate(0,-802.36218)"> + + + + + + + + + image/svg+xml + + + + + + + + + + From 66b6bd7e2f464cc6e8d068e1e31cb2e948b31042 Mon Sep 17 00:00:00 2001 From: graphmeter Date: Thu, 19 Feb 2015 22:48:57 +0100 Subject: [PATCH 14/18] first work on address book --- app/controllers/settings.js | 36 ++++++++++++++++++++++++++++++++++++ app/models/address.js | 11 +++++++++++ app/models/group.js | 1 + app/models/user.js | 15 ++++++++------- app/routes/settings.js | 6 +++--- app/templates/settings.hbs | 34 ++++++++++++++++++++++++++++++++-- 6 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 app/controllers/settings.js create mode 100644 app/models/address.js diff --git a/app/controllers/settings.js b/app/controllers/settings.js new file mode 100644 index 0000000..0dc92b6 --- /dev/null +++ b/app/controllers/settings.js @@ -0,0 +1,36 @@ +import Ember from 'ember'; + +export default Ember.Controller.extend({ + needs: ['user'], + actions: { + createAddress: function() { + var self = this, + currentUser = this.get('controllers.user').get('currentUser'); + var newAddress = this.store.createRecord('address', { + street : this.get('street'), + postcode : this.get('postcode'), + city : this.get('city'), + country : this.get('country'), + user: currentUser + }); + newAddress.save().then(function(){ + currentUser.save(); + self.setProperties({ + street: null, + postcode: null, + city: null, + country: null, + }); + }); + }, + removeAddress: function(address) { + console.log('REMOVE THIS ADDRESS', address.id); + var currentUser = this.get('controllers.user').get('currentUser'), + addressesUser = currentUser.reload().get('addresses'); + addressesUser.destroyObject(address); + address.destroyRecord(); + currentUser.save(); + } + } +}); + diff --git a/app/models/address.js b/app/models/address.js new file mode 100644 index 0000000..652cf45 --- /dev/null +++ b/app/models/address.js @@ -0,0 +1,11 @@ +import DS from 'ember-data'; + +export default DS.Model.extend({ + street : DS.attr('string'), + postcode : DS.attr('string'), + city : DS.attr('string'), + country : DS.attr('string'), + primary : DS.attr('boolean'), + group : DS.belongsTo("group", { async: true }), + user : DS.belongsTo("user", { async: true }) +}); diff --git a/app/models/group.js b/app/models/group.js index 03fce65..9074594 100644 --- a/app/models/group.js +++ b/app/models/group.js @@ -5,5 +5,6 @@ export default DS.Model.extend({ picture : DS.attr('string'), members : DS.hasMany("user", { async: true }), restaurants : DS.hasMany("restaurant", { async: true }), + addresses : DS.hasMany("address", { async: true }), user : DS.belongsTo("user", { async: true }), }); diff --git a/app/models/user.js b/app/models/user.js index e3431b5..0e37473 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -1,11 +1,12 @@ import DS from 'ember-data'; export default DS.Model.extend({ - name : DS.attr('string'), - email : DS.attr('string'), - username : DS.attr('string'), - phone : DS.attr('string'), - friends : DS.hasMany("user", { async: true }), - favItems : DS.hasMany("menu-item", { inverse: 'favUsers', async: true }), - groups : DS.hasMany("group", { inverse: 'members', async: true }) + name : DS.attr('string'), + email : DS.attr('string'), + username : DS.attr('string'), + phone : DS.attr('string'), + friends : DS.hasMany("user", { async: true }), + favItems : DS.hasMany("menu-item", { inverse: 'favUsers', async: true }), + addresses : DS.hasMany("address", { async: true }), + groups : DS.hasMany("group", { inverse: 'members', async: true }) }); diff --git a/app/routes/settings.js b/app/routes/settings.js index 7e4b77d..291de02 100644 --- a/app/routes/settings.js +++ b/app/routes/settings.js @@ -3,7 +3,7 @@ import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixi export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { - var userID = this.get('session').content.userID; - return this.store.find('user', userID); - } + var userID = this.get('session').content.userID; + return this.store.find('user', userID); + } }); diff --git a/app/templates/settings.hbs b/app/templates/settings.hbs index c5f95e0..95aa71c 100644 --- a/app/templates/settings.hbs +++ b/app/templates/settings.hbs @@ -13,7 +13,12 @@

    -
    + + {{#if displayErrorMsg}} + + {{/if}}
    {{ input name="name" value=content.name classNames='form-control' placeholder="Your name" required="" }} @@ -28,7 +33,32 @@
    - {{ input name="phone" value=content.phone classNames='form-control' placeholder="Main road 1" }} +
    +
      + {{#each address in content.addresses }} +
    • + {{ fa-icon "trash"}} + {{ address.street }}, {{ address.city }}, {{ address.postcode }}, {{ address.country }} +
    • + {{/each}} +
    +
    +
    + {{ input name="streetname" value=street classNames='form-control' placeholder="Main street" }} +
    +
    + {{ input name="city" value=city classNames='form-control' placeholder="City" }} +
    +
    + {{ input name="postcode" value=postcode classNames='form-control' placeholder="111 11" }} +
    +
    + {{ input name="country" value=country classNames='form-control' placeholder="Country" }} +
    + + + +
    From c9bc1bbf33fbb5d6ced75241c5c7fcc19a78b530 Mon Sep 17 00:00:00 2001 From: graphmeter Date: Fri, 20 Feb 2015 11:13:42 +0100 Subject: [PATCH 15/18] toggle add address --- app/controllers/settings.js | 10 ++++---- app/templates/settings.hbs | 48 +++++++++++++++++++++---------------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/app/controllers/settings.js b/app/controllers/settings.js index 0dc92b6..a3b1e3e 100644 --- a/app/controllers/settings.js +++ b/app/controllers/settings.js @@ -21,16 +21,16 @@ export default Ember.Controller.extend({ city: null, country: null, }); + self.set('addAddress', !self.get('addAddress')); }); }, removeAddress: function(address) { - console.log('REMOVE THIS ADDRESS', address.id); - var currentUser = this.get('controllers.user').get('currentUser'), - addressesUser = currentUser.reload().get('addresses'); - addressesUser.destroyObject(address); + var currentUser = this.get('controllers.user').get('currentUser'); address.destroyRecord(); currentUser.save(); + }, + toggleAddAddress: function() { + this.set('addAddress', !this.get('addAddress')); } } }); - diff --git a/app/templates/settings.hbs b/app/templates/settings.hbs index 95aa71c..155d5e7 100644 --- a/app/templates/settings.hbs +++ b/app/templates/settings.hbs @@ -14,11 +14,11 @@

    - {{#if displayErrorMsg}} + {{#if displayErrorMsg}} - {{/if}} + {{/if}}
    {{ input name="name" value=content.name classNames='form-control' placeholder="Your name" required="" }} @@ -40,25 +40,33 @@ {{ fa-icon "trash"}} {{ address.street }}, {{ address.city }}, {{ address.postcode }}, {{ address.country }} - {{/each}} + {{/each}} -
    -
    - {{ input name="streetname" value=street classNames='form-control' placeholder="Main street" }} -
    -
    - {{ input name="city" value=city classNames='form-control' placeholder="City" }} -
    -
    - {{ input name="postcode" value=postcode classNames='form-control' placeholder="111 11" }} -
    -
    - {{ input name="country" value=country classNames='form-control' placeholder="Country" }} -
    - - - -
    +
    +
    + +
    +
    + {{#if addAddress}} +
    +
    +
    + {{ input name="streetname" value=street classNames='form-control' placeholder="Main street" }} +
    +
    + {{ input name="city" value=city classNames='form-control' placeholder="City" }} +
    +
    + {{ input name="postcode" value=postcode classNames='form-control' placeholder="111 11" }} +
    +
    + {{ input name="country" value=country classNames='form-control' placeholder="Country" }} +
    + + + +
    + {{/if}}
    From af21116bd36b505c78188e6735757962ebf59949 Mon Sep 17 00:00:00 2001 From: Tor Sanden Date: Wed, 25 Feb 2015 21:27:58 +0100 Subject: [PATCH 16/18] added orders to user --- app/models/user.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.js b/app/models/user.js index 0e37473..f70970c 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -8,5 +8,6 @@ export default DS.Model.extend({ friends : DS.hasMany("user", { async: true }), favItems : DS.hasMany("menu-item", { inverse: 'favUsers', async: true }), addresses : DS.hasMany("address", { async: true }), + orders : DS.hasMany("orders", { async: true }), groups : DS.hasMany("group", { inverse: 'members', async: true }) }); From 5e4f7f5c495c5adac02eeffd4a4c583ae2c6518a Mon Sep 17 00:00:00 2001 From: Tor Sanden Date: Fri, 27 Feb 2015 18:04:46 +0100 Subject: [PATCH 17/18] added roles to users --- app/models/user.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.js b/app/models/user.js index f70970c..959fdcf 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -5,6 +5,7 @@ export default DS.Model.extend({ email : DS.attr('string'), username : DS.attr('string'), phone : DS.attr('string'), + roles : DS.attr('string'), friends : DS.hasMany("user", { async: true }), favItems : DS.hasMany("menu-item", { inverse: 'favUsers', async: true }), addresses : DS.hasMany("address", { async: true }), From 2b8707f60ab68909b28df1f92d986fd29c5cf2eb Mon Sep 17 00:00:00 2001 From: Tor Sanden Date: Fri, 27 Feb 2015 18:22:36 +0100 Subject: [PATCH 18/18] deliveryinfo for orders and deliveryarea for restaurants --- app/models/order.js | 13 +++++++------ app/models/restaurant.js | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/models/order.js b/app/models/order.js index 08500e7..72d1f0a 100644 --- a/app/models/order.js +++ b/app/models/order.js @@ -1,10 +1,11 @@ import DS from 'ember-data'; export default DS.Model.extend({ - timer : DS.attr('number'), - createdAt : DS.attr('date'), - items : DS.hasMany("order-item", { async: true }), - restaurant : DS.belongsTo("restaurant", { async: true }), - group : DS.belongsTo("group", { async: true }), - organizer : DS.belongsTo("user", { async: true }) + timer : DS.attr('number'), + createdAt : DS.attr('date'), + deliveryInfo : DS.attr('string'), + items : DS.hasMany("order-item", { async: true }), + restaurant : DS.belongsTo("restaurant", { async: true }), + group : DS.belongsTo("group", { async: true }), + organizer : DS.belongsTo("user", { async: true }) }); diff --git a/app/models/restaurant.js b/app/models/restaurant.js index b7d0b09..8c07641 100644 --- a/app/models/restaurant.js +++ b/app/models/restaurant.js @@ -7,6 +7,7 @@ export default DS.Model.extend({ website : DS.attr('string'), menuLink : DS.attr('string'), deliveryCharge : DS.attr('number'), + deliveryArea : DS.attr('string'), minimumOrder : DS.attr('number'), items : DS.hasMany("menu-item", { async: true }), group : DS.belongsTo("group", { async: true }),