doing it the ember way
This commit is contained in:
parent
6cba1b57a0
commit
fe50c6f66b
4 changed files with 57 additions and 28 deletions
3
api.php
3
api.php
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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'),
|
||||
name: user.name,
|
||||
creationDate: new Date(),
|
||||
poll : this.get('model')
|
||||
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()
|
||||
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);
|
||||
});
|
||||
}
|
||||
});
|
Loading…
Reference in a new issue