8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-27 15:12:25 +00:00

Fix: BFT Tag : JS fail sur le reset des input quand init_val != ""

Ajoute une fonction init_input qui fait ce que faisait reset_input avant
et maintenant reset_input, se contente de mettre "" dans les input
This commit is contained in:
Maël Kervella 2017-10-08 01:29:50 +00:00
parent d21e39ee88
commit d52e4d58e2

View file

@ -232,41 +232,49 @@ def typeahead_js( f_name, f_value, f_bound,
js_content = ( js_content = (
'var choices_{f_name} = {choices};' 'var choices_{f_name} = {choices};'
'var engine_{f_name};'
'var setup_{f_name} = function() {{' 'var setup_{f_name} = function() {{'
'var engine_{f_name} = {engine};' 'engine_{f_name} = {engine};'
'$( "#{input_id}" ).typeahead( "destroy" );' '$( "#{input_id}" ).typeahead( "destroy" );'
'$( "#{input_id}" ).typeahead( {datasets} );' '$( "#{input_id}" ).typeahead( {datasets} );'
'{reset_input}'
'}};' '}};'
'$( "#{input_id}" ).bind( "typeahead:select", {updater} );' '$( "#{input_id}" ).bind( "typeahead:select", {updater} );'
'$( "#{input_id}" ).bind( "typeahead:change", {change} );' '$( "#{input_id}" ).bind( "typeahead:change", {change} );'
'{updates}' '{updates}'
'$( "#{input_id}" ).ready( setup_{f_name} );' '$( "#{input_id}" ).ready( function() {{'
'setup_{f_name}();'
'{init_input}'
'}} );'
).format( ).format(
f_name = f_name, f_name = f_name,
choices = choices, choices = choices,
engine = engine, engine = engine,
input_id = input_id( f_name ), input_id = input_id( f_name ),
datasets = default_datasets( f_name, match_func ), datasets = default_datasets( f_name, match_func ),
reset_input = reset_input( f_name, f_bound ),
updater = typeahead_updater( f_name ), updater = typeahead_updater( f_name ),
change = typeahead_change( f_name ), change = typeahead_change( f_name ),
updates = ''.join( updates = ''.join( [ (
['$( "#{u_id}").change( setup_{f_name} );'.format( '$( "#{u_id}" ).change( function() {{'
'setup_{f_name}();'
'{reset_input}'
'}} );'
).format(
u_id = u_id, u_id = u_id,
reset_input = reset_input( f_name ),
f_name = f_name f_name = f_name
) for u_id in update_on ] ) for u_id in update_on ]
) ),
init_input = init_input( f_name, f_bound ),
) )
return render_tag( 'script', content=mark_safe( js_content ) ) return render_tag( 'script', content=mark_safe( js_content ) )
def reset_input( f_name, f_bound ) : def init_input( f_name, f_bound ) :
""" The JS script to reset the fields values """ """ The JS script to init the fields values """
init_key = f_bound.value() or '""' init_key = f_bound.value() or '""'
return ( return (
'$( "#{input_id}" ).typeahead("val", {init_val});' '$( "#{input_id}" ).typeahead("val", {init_val});'
'$( "#{hidden_id}").val( {init_key} );' '$( "#{hidden_id}" ).val( {init_key} );'
).format( ).format(
input_id = input_id( f_name ), input_id = input_id( f_name ),
init_val = '""' if init_key == '""' else init_val = '""' if init_key == '""' else
@ -278,6 +286,16 @@ def reset_input( f_name, f_bound ) :
hidden_id = hidden_id( f_name ) hidden_id = hidden_id( f_name )
) )
def reset_input( f_name ) :
""" The JS script to reset the fields values """
return (
'$( "#{input_id}" ).typeahead("val", "");'
'$( "#{hidden_id}" ).val( "" );'
).format(
input_id = input_id( f_name ),
hidden_id = hidden_id( f_name )
)
def default_choices( f_value ) : def default_choices( f_value ) :
""" The JS script creating the variable choices_<fieldname> """ """ The JS script creating the variable choices_<fieldname> """
return '[ {objects} ]'.format( return '[ {objects} ]'.format(