Changes between Initial Version and Version 1 of Ticket #801, comment 169


Ignore:
Timestamp:
Jan 11, 2016, 12:11:06 PM (9 years ago)
Author:
olle

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #801, comment 169

    initial v1  
    55Design discussion:
    66
    7 The wizards in question already allow a library preparation dilution protocol to be created. This is implemented by defining an action coupled to an external JSP file to a form tag in the JSP file for the wizard. Adding another action is not simple. One solution is to let the second JSP file and its related javascript file handle creation of different types of protocols, controlled by values of different attributes. Another solution, which was selected here, is to define a new form tag with a new name for the new protocol. The design of the lab protocol for library preparation is based on a corresponding Reggie wizard, that allows the protocol to contain either a list view or a plate view. However, the Reggie version assumes that the library plate already has been defined and data for it stored in the database, and the views indicate different barcode variants, instead of index primers determined by the well position. Substantial modifications of the data transfer part was therefore needed, while much of the layout creation has been maintained.
    8  
     7 * The wizards in question already allow a library preparation dilution protocol to be created. This is implemented by defining an action coupled to an external JSP file to a form tag in the JSP file for the wizard. Adding another action is not simple. One solution is to let the second JSP file and its related javascript file handle creation of different types of protocols, controlled by values of different attributes. Another solution, which was selected here, is to define a new form tag with a new name for the new protocol. The design of the lab protocol for library preparation is based on Reggie wizard `libprep_protocol.jsp` with lab protocol JSP file `libprep_protocol2.jsp`, that allows the protocol to contain either a list view or a plate view. However, the Reggie version assumes that the library plate already has been defined and data for it stored in the database, and the views indicate different barcode variants, instead of index primers determined by the well position. Substantial modifications of the data transfer part was therefore needed, while much of the layout creation has been maintained.
     8 * When calling `JSON.stringify(submitInfo)` for JSONObject `submitInfo` to obtain string to store in hidden form field, problems with circular references occurred. This was fixed by instead calling `JSON.stringify(submitInfo, circular_reference_remover)`, where second argument is a new function `circular_reference_remover(key, value)`, that removes any circular references in input JSON object.
     9
    910Design update:
    1011
    1112 1. JSP file `inspect_start_plate.jsp` in `resources/libprep/` updated:[[BR]]a. Links for creating a lab protocol in either list view or plate view inserted below the plate layout, above the button for creating a library preparation file for the Illumina MiSeq software.[[BR]]b. A new form tag with name "`meludi2`" added, with an action coupled to new external JSP file `libprep_plate_protocol2.jsp`.
    12  2. Javascript file `inspect_start_plate.js` in `resources/libprep/` updated:[[BR]]a. Function `initPage()` updated by adding event handlers for clicks on new lab protocol links coupled to new function `viewProtocol()`. Also removal of unused code.[[BR]]b. Function `plateInfoLoaded(response)` updated by setting plate name to name in response data.[[BR]]c. Function `downloadLibPrepFile()` updated by obtaining submit info for bioplate by calling new function `fetchBioplateData()`.[[BR]]d. New function `fetchBioplateData()` added. It contains code previously in function `downloadLibPrepFile()`, in order to make it available to other functions.[[BR]]e. New function `viewProtocol(event)` added.
     13 2. Javascript file `inspect_start_plate.js` in `resources/libprep/` updated:[[BR]]a. Function `initPage()` updated by adding event handlers for clicks on new lab protocol links coupled to new function `viewProtocol()`. Also removal of unused code.[[BR]]b. Function `plateInfoLoaded(response)` updated by setting plate name to name in response data.[[BR]]c. Function `downloadLibPrepFile()` updated by obtaining bioplate data for submit info by calling new function `fetchBioplateData()`.[[BR]]d. New function `fetchBioplateData()` added. It contains code previously in function `downloadLibPrepFile()`, in order to make it available to other functions.[[BR]]e. Function `createProtocol()` updated by obtaining submit info for bioplate by calling new function `fetchSubmitInfo()`. Call of function `JSON.stringify(submitInfo)` to obtain string to store in hidden form field exchanged for call of function `JSON.stringify(submitInfo, circular_reference_remover)`, where second argument is new function `circular_reference_remover(key, value)`, that removes any circular references in input JSON object.[[BR]]f. New function `fetchSubmitInfo()` added. It contains code previously in function `createProtocol()`, in order to make it available to other functions.[[BR]]g. New function `viewProtocol(event)` added. It calls new function `fetchBioplateData()` to obtain bioplate data for submit info, and new function `fetchSubmitInfo()` to obtain rest of the submit info. Function `JSON.stringify(submitInfo, circular_reference_remover)` is called to obtain string to store in hidden form field, where second argument is new function `circular_reference_remover(key, value)`, that removes any circular references in input JSON object. Data is stored in hidden fields for form with name "`meludi2`", after which `frm.submit()` is called to change action to JSP file `libprep_plate_protocol2.jsp`.[[BR]]h. New function `circular_reference_remover(key, value)` added. It removes any circular references in input JSON object, relying on global JSONArray `circular_reference_cache`, that should be set to `null`, after each call to `JSON.stringify(JSONJObject, circular_reference_remover)`.