diff --git a/api.php b/api.php index c485174..b24d00a 100644 --- a/api.php +++ b/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; diff --git a/classes/datahandler.php b/classes/datahandler.php index ab32c33..e3c479a 100644 --- a/classes/datahandler.php +++ b/classes/datahandler.php @@ -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; } diff --git a/index.html b/index.html index be2c0ff..2c2e06a 100644 --- a/index.html +++ b/index.html @@ -65,11 +65,11 @@ {{/each}} - {{input value=newUserName}} - {{#each option in options}} - {{input class="newUserSelection" data-option=option.id}} + {{input value=view.newUserName}} + {{#each newUserSelection in view.newUserSelections}} + {{input value=newUserSelection.value}} {{/each}} - + diff --git a/js/croodle.js b/js/croodle.js index b558744..7144b6c 100644 --- a/js/croodle.js +++ b/js/croodle.js @@ -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,36 +285,33 @@ 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 newSelections.push(newSelection); }); - + newUser.get('selections').then(function(selections){ // map over all new selections and assign them to user $.each(newSelections, function(){ @@ -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(''); }); }); } @@ -386,4 +378,33 @@ 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); + }); + } }); \ No newline at end of file