(event_data, onchange_funcs)
| 303 | |
| 304 | |
| 305 | def trigger_onchange(event_data, onchange_funcs): |
| 306 | name = event_data['name'] |
| 307 | onchange_func = onchange_funcs[name] |
| 308 | |
| 309 | # save current input name to session, so that the `input_update()` function can get it |
| 310 | task_id = get_current_task_id() |
| 311 | onchange_trigger_key = 'onchange_trigger-' + task_id |
| 312 | previous_name = get_current_session().internal_save.get(onchange_trigger_key) |
| 313 | get_current_session().internal_save[onchange_trigger_key] = name # used in `pywebio.input.input_update()` |
| 314 | |
| 315 | try: |
| 316 | onchange_func(event_data['value']) |
| 317 | except Exception as e: |
| 318 | logger.warning('Get %r in onchange function for name:"%s"', e, name) |
| 319 | finally: |
| 320 | if previous_name is None: |
| 321 | get_current_session().internal_save.pop(onchange_trigger_key, None) |
| 322 | else: |
| 323 | get_current_session().internal_save[onchange_trigger_key] = previous_name |
| 324 | |
| 325 | |
| 326 | @chose_impl |
no test coverage detected
searching dependent graphs…