Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added app/.DS_Store
Binary file not shown.
6 changes: 6 additions & 0 deletions app/controllers/group.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import Ember from 'ember';

export default Ember.Controller.extend({
displaySuccessMsg: false,
successMsg: null
});
36 changes: 36 additions & 0 deletions app/controllers/settings.js
Original file line number Diff line number Diff line change
@@ -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,
});
self.set('addAddress', !self.get('addAddress'));
});
},
removeAddress: function(address) {
var currentUser = this.get('controllers.user').get('currentUser');
address.destroyRecord();
currentUser.save();
},
toggleAddAddress: function() {
this.set('addAddress', !this.get('addAddress'));
}
}
});
35 changes: 35 additions & 0 deletions app/controllers/setup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import Ember from 'ember';

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,
currentUser = this.get('model');
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.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');
});
}
}
}
});
6 changes: 6 additions & 0 deletions app/controllers/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
});

Expand Down
11 changes: 11 additions & 0 deletions app/models/address.js
Original file line number Diff line number Diff line change
@@ -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 })
});
1 change: 1 addition & 0 deletions app/models/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 }),
});
13 changes: 7 additions & 6 deletions app/models/order.js
Original file line number Diff line number Diff line change
@@ -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 })
});
1 change: 1 addition & 0 deletions app/models/restaurant.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 }),
Expand Down
16 changes: 10 additions & 6 deletions app/models/user.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import DS from 'ember-data';

export default DS.Model.extend({
name : DS.attr('string'),
email : DS.attr('string'),
username : 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'),
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 }),
orders : DS.hasMany("orders", { async: true }),
groups : DS.hasMany("group", { inverse: 'members', async: true })
});
2 changes: 2 additions & 0 deletions app/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down
2 changes: 1 addition & 1 deletion app/routes/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -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); });
}
Expand Down
3 changes: 2 additions & 1 deletion app/routes/group/restaurants.js
Original file line number Diff line number Diff line change
@@ -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);
Expand Down
8 changes: 5 additions & 3 deletions app/routes/index.js
Original file line number Diff line number Diff line change
@@ -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');
}
}
});
9 changes: 9 additions & 0 deletions app/routes/settings.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function() {
var userID = this.get('session').content.userID;
return this.store.find('user', userID);
}
});
14 changes: 14 additions & 0 deletions app/routes/setup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';

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();
}
});
4 changes: 4 additions & 0 deletions app/styles/app.scss
Original file line number Diff line number Diff line change
Expand Up @@ -482,3 +482,7 @@ address > a {
text-decoration: none;
}
}

.user-logo {
max-width: 128px;
}
2 changes: 1 addition & 1 deletion app/templates/-header.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
{{/link-to}}
</li>
<li>
{{#link-to '' classNames=''}}
{{#link-to 'settings' classNames=''}}
Settings
{{/link-to}}
</li>
Expand Down
6 changes: 6 additions & 0 deletions app/templates/group.hbs
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
<div class="container">
{{#if displaySuccessMsg}}
<div class="alert alert-success js-success" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
{{ successMsg }}
</div>
{{/if}}
<h2>Groups</h2>
<div class="row">
<div class="col-md-12">
Expand Down
30 changes: 25 additions & 5 deletions app/templates/group/timer.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,38 @@
<div classs="row ">
<div class="col-xs-4 col-sm-4 col-md-2 group-order">
{{#link-to '' group classNames='group-name capitalize'}}
{{#if content.group.picture }} <img {{ bind-attr src=content.group.picture }} class="img-circle"> {{ else }} <img src="/assets/images/default-group-picture.svg" class="img-circle"> {{/if}}
<p>{{#if content.group.name }} {{ content.group.name }} {{ else }} Untitled {{/if}}</p>
{{#if content.group.picture}}
<img {{ bind-attr src=content.group.picture }} class="img-circle">
{{ else }}
<img src="/assets/images/default-group-picture.svg" class="img-circle">
{{/if}}
<p>
{{#if content.group.name}}
{{ content.group.name }}
{{ else }}
Untitled
{{/if}}
</p>
{{/link-to}}
<button class="btn btn-default btn-md">{{ fa-icon 'plus'}} Add more</button>
<button class="btn btn-default btn-md">{{ fa-icon 'plus' }} Add more</button>
</div>
<div class="col-xs-4 col-sm-4 col-md-2 who-order-arrow group-order">
{{ fa-icon "long-arrow-right" classNames="" }}
</div>
<div class="col-xs-4 col-sm-4 col-md-2 group-order">
{{#link-to '' group classNames='restaurant-name capitalize'}}
{{#if content.picture }} <img {{ bind-attr src=content.picture }} class="img-rounded"> {{ else }} <img src="/assets/images/default-restaurant-picture.svg" class="img-rounded"> {{/if}}
<p>{{#if content.name }} {{ content.name }} {{ else }} Untitled {{/if}}</p>
{{#if content.picture}}
<img {{ bind-attr src=content.picture }} class="img-rounded">
{{ else }}
<img src="/assets/images/default-restaurant-picture.svg" class="img-rounded">
{{/if}}
<p>
{{#if content.name}}
{{ content.name }}
{{ else }}
Untitled
{{/if}}
</p>
{{/link-to}}
<button class="btn btn-default btn-md">Change</button>
</div>
Expand Down
75 changes: 75 additions & 0 deletions app/templates/settings.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="media">
<div class="media-left">
<a href="#">
<img src="/assets/images/default-user-picture.svg" class="user-logo img-circle">
</a>
</div>
<div class="media-body">
<h2>{{ content.name }}</h2>
<button class="btn btn-default btn-sm" type="submit">Change photo</button>
</div>
</div>
<br>
<form>
{{#if displayErrorMsg}}
<div class="alert alert-danger" role="alert">
{{ errorMsg }}
</div>
{{/if}}
<div class="form-group">
<label>Full name</label>
{{ input name="name" value=content.name classNames='form-control' placeholder="Your name" required="" }}
</div>
<div class="form-group">
<label>Username</label>
{{ input name="username" value=content.username classNames='form-control' placeholder="User name" required="" }}
</div>
<div class="form-group">
<label>Phone</label>
{{ input name="phone" value=content.phone classNames='form-control' placeholder="(123) - 555 5555" }}
</div>
<div class="form-group">
<label>Addresses</label>
<br>
<ul class="list-group">
{{#each address in content.addresses }}
<li class="list-group-item">
<span {{ action "removeAddress" address }} class="pull-right" >{{ fa-icon "trash"}}</span>
{{ address.street }}, {{ address.city }}, {{ address.postcode }}, {{ address.country }}
</li>
{{/each}}
</ul>
<div class="btn-group btn-group-justified" role="group" aria-label="...">
<div class="btn-group" role="group">
<button type="button" class="btn btn-default btn-lg" {{ action "toggleAddAddress"}} >Add address</button>
</div>
</div>
{{#if addAddress}}
<br>
<div class="form-group">
<div class="form-group">
{{ input name="streetname" value=street classNames='form-control' placeholder="Main street" }}
</div>
<div class="form-group">
{{ input name="city" value=city classNames='form-control' placeholder="City" }}
</div>
<div class="form-group">
{{ input name="postcode" value=postcode classNames='form-control' placeholder="111 11" }}
</div>
<div class="form-group">
{{ input name="country" value=country classNames='form-control' placeholder="Country" }}
</div>
<span class="input-group-btn">
<button class="btn btn-default btn-lg" {{ action "createAddress" on="click" }}>Add address</button>
</span>
</div>
{{/if}}
</div>
<button class="btn btn-success btn-lg" type="submit">Save changes</button>
</form>
</div>
</div>
</div>
Loading