Initialize answers 'after-insert' callback to keep answers order

Also provide a function to initialize new set of answers 'affer-insert'
callback after adding new questions.
This commit is contained in:
Senén Rodero Rodríguez
2019-03-21 14:03:38 +01:00
parent 5e98c23be5
commit 71887f2911

View File

@@ -1,9 +1,20 @@
App.Answers =
initializeAnswers: (answers) ->
$(answers).on 'cocoon:after-insert', (e, new_answer) ->
given_order = App.Answers.maxGivenOrder(answers) + 1
$(new_answer).find("[name$='[given_order]']").val(given_order)
maxGivenOrder: (answers) ->
max_order = 0
$(answers).find("[name$='[given_order]']").each (index, answer) ->
value = parseFloat($(answer).val())
max_order = if value > max_given_order then value else max_given_order
return max_given_order
nestedAnswers: ->
$('.nested-answers').on 'cocoon:after-insert', (e, insertedItem) ->
nestedAnswersCount = $("input[type='hidden'][name$='[given_order]']").size()
$(insertedItem).find("input[type='hidden'][name$='[given_order]']").val(nestedAnswersCount)
$('.js-answers').each (index, answers) ->
App.Answers.initializeAnswers(answers)
initialize: ->
App.Answers.nestedAnswers()