Opened 10 years ago

Closed 10 years ago

#796 closed (fixed)

Management of table preferences should be more stable

Reported by: olle Owned by: olle
Milestone: Proteios SE 2.18.0 Keywords:
Cc:

Description

Management of table preferences should be more stable. Current design has been known to sometimes lead to erroneous updates of table preferences, when no preferences have been changed by the user. As such an erroneous update will save default table settings, the user often perceives this as if the previous table settings were never saved, while they actually were later over-written by standard settings.

Change History (6)

comment:1 Changed 10 years ago by olle

Status: newassigned

Ticket accepted.

comment:2 Changed 10 years ago by olle

Traceability note.

  • Saving of table preferences were introduced in Ticket #582 (Table setting in the Hits table should be persistent).
  • Ticket #783 (Table preferences job table) describes a problem with job table preferences, but related to the preferences not being saved between sessions.
  • Ticket #795 (Job table buttons may trigger erroneous table preferences update) concerns another problem related to table preferences for the job table.

comment:3 Changed 10 years ago by olle

Problem discussion.

This discussion assumes that the user has selected to always save table preferences.

  • Valid parameter VString VTABLECONFIGURATIONUPDATED with name "tableConfigurationUpdated" is defined in class/file action/ConfigureTableFactory2.java in client/servlet/, and is used to indicate when a user has updated the table configuration in the table preferences pop-up window. The latter is defined in public method Tag convert(org.proteios.gui.table.Table table) in class/file gui/web/GUIConverter.java in client/servlet/, and contains an "Apply" button, which when clicked will submit the form that includes a hidden input field with name "tableConfigurationUpdated" and value set to "true".
  • When a class with a table managed by ConfigureTableFactory2 is entered, the values of some valid parameters including VString VTABLECONFIGURATIONUPDATED are checked, to determine if the current table settings should be saved in the preferences file. The other parameters are valid parameter VBoolean VTABLEUPDATEBUTTONCLICKED and boolean instance variable ConfigureTableFactory2.externalTableUpdateButtonClicked, which are used when table filter settings are changed. Afterwards, the table is created with settings read from the preferences file.
  • When a class with a table managed by ConfigureTableFactory2 is first entered, the value of valid parameter VString VTABLECONFIGURATIONUPDATED is null, which class ConfigureTableFactory2 handles as "false". However, after the table configuration has been changed and saved from the table preferences pop-up window, when one returns to the original table after some other action, the value of valid parameter VString VTABLECONFIGURATIONUPDATED has sometimes been "true" instead of null, making default settings being saved in the preferences file, overwriting the desired settings. This conclusion could be drawn from inspection of debug output of variable values in log files, and direct inspection of the contents of the preferences file in question at different stages of the use case. Unfortunately, it is not easy to determine exactly where the problem starts.
Last edited 10 years ago by olle (previous) (diff)

comment:4 Changed 10 years ago by olle

Design update.

  • Values of valid parameters can be set when an action link like a button is clicked, or via an input field in a submitted form. The table preferences pop-up window defined in public method Tag convert(org.proteios.gui.table.Table table) in class/file gui/web/GUIConverter.java in client/servlet/ is updated to not have a hidden input field with name "tableConfigurationUpdated" and value set to "true", but instead define an action link coupled to the "Apply" button, and adding parameter "tableConfigurationUpdated" with value "true" to this action link. The intention is to couple the setting of the flag more closely to the clicking of the "Apply" button in the table preferences pop-up window, and avoid any undesired side effects from having the value set in a hidden input field in the form.
  • In order to test if this modification makes management of table preferences more stable, the fixes made in Ticket #795 (Job table buttons may trigger erroneous table preferences update) to class/file action/job/ListJobs.java in client/servlet/, where the value of valid parameter VString VTABLECONFIGURATIONUPDATED was explicitly set to "false", when one of the buttons for the job table was clicked, should be reverted.

comment:5 Changed 10 years ago by olle

(In [4398]) Refs #796. Refs #795. Refs #783. Update of table preferences management:

  1. The table preferences pop-up window defined in public method Tag convert(org.proteios.gui.table.Table table) in class/file gui/web/GUIConverter.java in client/servlet/ is updated to not have a hidden input field with name "tableConfigurationUpdated" and value set to "true", but instead define an action link coupled to the "Apply" button, and adding parameter "tableConfigurationUpdated" with value "true" to this action link. The intention is to couple the setting of the flag more closely to the clicking of the "Apply" button in the table preferences pop-up window, and avoid any undesired side effects from having the value set in a hidden input field in the form.
  1. The fixes made in Ticket #795 (Job table buttons may trigger erroneous table preferences update) to class/file action/job/ListJobs.java in client/servlet/, where the value of valid parameter VString VTABLECONFIGURATIONUPDATED was explicitly set to "false", when one of the buttons for the job table was clicked, have been reverted, in order to check if the modification above makes management of table preferences more stable.

comment:6 Changed 10 years ago by olle

Resolution: fixed
Status: assignedclosed

Ticket closed since the added changes seems to be an improvement. If unwanted side effects should be found, this ticket may be reopened, or a new ticket created.

Note: See TracTickets for help on using tickets.