doing it the ember way

This commit is contained in:
jelhan 2014-02-21 02:47:39 +01:00
parent 6cba1b57a0
commit fe50c6f66b
4 changed files with 57 additions and 28 deletions

View file

@ -101,6 +101,9 @@ switch ($_SERVER['REQUEST_METHOD']) {
case "users":
$newData = json_decode($data);
$newData->user->id = $newId;
foreach ($newData->user->selections as $k => $v) {
$newData->user->selections[$k]->id = $poll_id + $k;
}
$newData = json_encode($newData);
break;

View file

@ -93,6 +93,11 @@ class datahandler {
// extend id to user object
$user_data->user->id = $file;
// extend id to all selection objects
foreach ($user_data->user->selections as $k => $v) {
$user_data->user->selections[$k]->id = $poll_id . $k;
}
// embedd user into poll
$poll_data->poll->users[] = $user_data->user;
}

View file

@ -65,11 +65,11 @@
{{/each}}
<tr class='newUser'>
<td>{{input value=newUserName}}</td>
{{#each option in options}}
<td>{{input class="newUserSelection" data-option=option.id}}</td>
<td>{{input value=view.newUserName}}</td>
{{#each newUserSelection in view.newUserSelections}}
<td>{{input value=newUserSelection.value}}</td>
{{/each}}
<td><button {{action "save"}}> ok </button></td>
<td><button {{action "addNewUser" target="view"}}> ok </button></td>
</tr>
</tbody>
</table>

View file

@ -253,7 +253,6 @@ App.CreateOptionsController = Ember.ObjectController.extend({
// assign it to poll
self.get('model.options').then(function(model){
model.pushObject(newOption);
console.log(model.get('length'));
});
}
});
@ -286,30 +285,27 @@ App.PollController = Ember.ObjectController.extend({
encryptionKey: 'nicht definiert',
actions: {
save: function(){
saveNewUser: function(user){
var self = this;
console.log(user);
// create new user record in store
var newUser = this.store.createRecord('user', {
encryptKey : this.get('model.encryptKey'),
name : this.get('newUserName'),
creationDate : new Date(),
poll : this.get('model')
encryptKey: this.get('model.encryptKey'),
name: user.name,
creationDate: new Date(),
poll: this.get('model'),
selections: user.selections
});
// create new selection record in store and assign it to the new user
var self = this,
newSelections = [];
$('.newUserSelection').each(function(){
// generate a new selection id
var newSelectionId = function(){
// ToDo: check if id already exists
return newId = Math.floor(Math.random()*(100000)+1);
};
var newSelections = [];
user.selections.forEach(function(selection){
// create new selection record in store
var newSelection = self.store.createRecord('selection', {
encryptKey : self.get('model.encryptKey'),
id : newSelectionId(),
value : $(this).val()
encryptKey: self.get('model.encryptKey'),
value: selection.value
});
// store new selections in an array
@ -328,10 +324,6 @@ App.PollController = Ember.ObjectController.extend({
// assign new user to poll
users.pushObject(newUser);
});
// empty newUser form after user is saved
self.set('newUserName', '');
$('.newUserSelection').val('');
});
});
}
@ -387,3 +379,32 @@ App.CreateOptionsView = Ember.View.extend({
this.set('newOptions', newOptions);
}
});
App.PollView = Ember.View.extend({
newUserName: 'name',
newUserSelections: [],
actions: {
addNewUser: function(){
console.log(this.get('newUserName'));
var newUser = {
name: this.get('newUserName'),
selections: this.get('newUserSelections')
};
this.get('controller').send('saveNewUser', newUser);
}
},
// generate selection array for new user
willInsertElement: function(){
var newUserSelections = Ember.A(),
self = this;
this.get('controller.model.options').then(function(options){
options.forEach(function(){
newUserSelections.pushObject({value: ''});
});
self.set('newUserSelections', newUserSelections);
});
}
});