aboutsummaryrefslogtreecommitdiffstats
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authorThomas Haddad2016-11-09 16:38:09 +0100
committerThomas Haddad2016-11-09 16:40:26 +0100
commit721532c9fb90ea55851dff8d51bfa29dd3209c4c (patch)
treeb8ce596a4b3a10bf7edf82193b8cca1c86640976 /app/assets/javascripts
parent1d1c449573811f16e4360622d7c9baf27cf0aa72 (diff)
downloadchouette-core-721532c9fb90ea55851dff8d51bfa29dd3209c4c.tar.bz2
Fix generate hidden inputs when submitting
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/es6_browserified/components/BSelect2.js2
-rw-r--r--app/assets/javascripts/es6_browserified/form_helper.js10
-rw-r--r--app/assets/javascripts/es6_browserified/reducers/todos.js12
-rw-r--r--app/assets/javascripts/es6_browserified/stop_points.js16
4 files changed, 33 insertions, 7 deletions
diff --git a/app/assets/javascripts/es6_browserified/components/BSelect2.js b/app/assets/javascripts/es6_browserified/components/BSelect2.js
index 590e755fd..1c8dc2dff 100644
--- a/app/assets/javascripts/es6_browserified/components/BSelect2.js
+++ b/app/assets/javascripts/es6_browserified/components/BSelect2.js
@@ -60,7 +60,7 @@ class BSelect3 extends React.Component{
const BSelect2 = (props) => {
return (
<Select2
- value={ props.value.id }
+ value={props.value.stoparea_id}
onSelect={ props.onSelect }
options={{
placeholder: 'SĂ©lectionnez un arrĂȘt existant...',
diff --git a/app/assets/javascripts/es6_browserified/form_helper.js b/app/assets/javascripts/es6_browserified/form_helper.js
new file mode 100644
index 000000000..5888f23b9
--- /dev/null
+++ b/app/assets/javascripts/es6_browserified/form_helper.js
@@ -0,0 +1,10 @@
+module.exports = {
+ addInput : (name, value, index) => {
+ let form = document.querySelector('form')
+ let input = document.createElement('input')
+ input.setAttribute('type', 'hidden')
+ input.setAttribute('name', `route[stop_points_attributes][${index}][${name}]`)
+ input.setAttribute('value', value)
+ form.appendChild(input)
+ }
+}
diff --git a/app/assets/javascripts/es6_browserified/reducers/todos.js b/app/assets/javascripts/es6_browserified/reducers/todos.js
index bf64632bd..351b6e0d0 100644
--- a/app/assets/javascripts/es6_browserified/reducers/todos.js
+++ b/app/assets/javascripts/es6_browserified/reducers/todos.js
@@ -1,3 +1,5 @@
+var addInput = require('../form_helper').addInput
+
const todo = (state = {}, action, length) => {
switch (action.type) {
case 'ADD_STOP':
@@ -14,12 +16,19 @@ const todo = (state = {}, action, length) => {
return Object.assign(
{},
state,
- {text: action.text.text, id: action.text.id}
+ {text: action.text.text, id: action.text.stoparea_id}
)
default:
return state
}
}
+const updateFormForDeletion = (stop) =>{
+ if (stop.stoppoint_id !== undefined){
+ let now = Date.now()
+ addInput('id', stop.stoppoint_id, now)
+ addInput('_destroy', 'true', now)
+ }
+}
const todos = (state = [], action) => {
switch (action.type) {
@@ -43,6 +52,7 @@ const todos = (state = [], action) => {
...state.slice(action.index + 2)
]
case 'DELETE_STOP':
+ updateFormForDeletion(state[action.index])
return [
...state.slice(0, action.index),
...state.slice(action.index + 1).map((todo)=>{
diff --git a/app/assets/javascripts/es6_browserified/stop_points.js b/app/assets/javascripts/es6_browserified/stop_points.js
index 9c0195f2b..f8b8448cd 100644
--- a/app/assets/javascripts/es6_browserified/stop_points.js
+++ b/app/assets/javascripts/es6_browserified/stop_points.js
@@ -19,14 +19,14 @@ const getInitialState = () => {
fancyText += ", " + value.zip_code + " " + value.city_name
state.push({
- id: value.id,
- name: value.name,
+ stoppoint_id: value.stoppoint_id,
+ stoparea_id: value.stoparea_id,
+ index: index,
city_name: value.city_name,
zip_code: value.zip_code,
text: fancyText
})
}
- // console.log(state)
return state
}
@@ -38,11 +38,17 @@ let store = createStore(
// applyMiddleware(thunkMiddleware, promise, loggerMiddleware)
)
-// console.log(store.getState())
-
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('stop_points')
)
+
+document.querySelector('input[name=commit]').addEventListener('click', (event)=>{
+ let state = store.getState()
+ for (let [i, todo] of state.todos.entries()){
+ addInput('id',todo.stoppoint_id, i)
+ addInput('stop_area_id',todo.stoparea_id, i)
+ }
+})