Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#816 closed task (fixed)

MeLuDI v.1.3.3 bug fixes and improvements

Reported by: olle Owned by: olle
Priority: major Milestone: MeLuDI v1.4.0
Component: net.sf.basedb.meludi Keywords:
Cc:

Description

This ticket covers bug fixes and improvements to MeLuDI v.1.3.3.

Change History (120)

comment:1 by olle, 9 years ago

Status: newassigned

Ticket accepted.

comment:2 by olle, 9 years ago

Traceability note:

  • MeLuDi v.1.0 was introduced in Ticket #690 (MeLuDi - Registration wizard for melanoma-lung cancer projects).
  • MeLuDi v.1.1 was introduced in Ticket #718 (MeLuDi v.1.0 bug fixes and improvements).
  • MeLuDi v.1.2 was introduced in Ticket #725 (MeLuDi v.1.1 bug fixes and improvements).
  • MeLuDI v.1.2.1 was introduced in Ticket #759 (MeLuDi v.1.2 bug fixes and improvements).
  • MeLuDI v.1.2.2 was introduced in Ticket #767 (MeLuDI v.1.2.1 bug fixes and improvements).
  • MeLuDI v.1.2.3 was introduced in Ticket #768 (MeLuDI v.1.2.2 bug fixes and improvements).
  • MeLuDI v.1.2.4 was introduced in Ticket #777 (MeLuDI v.1.2.3 bug fixes and improvements).
  • MeLuDI v.1.2.5 was introduced in Ticket #786 (MeLuDI v.1.2.4 bug fixes and improvements).
  • MeLuDI v.1.3.1 was introduced in Ticket #792 (MeLuDI v.1.2.5 bug fixes and improvements).
  • First version of library preparation wizards was introduced in Ticket #801 (MeLuDI library preparation wizards first version).
  • MeLuDI v.1.3.2 was introduced in Ticket #802 (MeLuDI v.1.3.1 bug fixes and improvements).
  • MeLuDI v.1.3.3 was introduced in Ticket #815 (MeLuDI v.1.3.2 bug fixes and improvements).

comment:3 by olle, 9 years ago

(In [3523]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number change to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:4 by olle, 9 years ago

(In [3526]) Refs #801. Refs #816. Case summary updated to present information on fpa and fpb DNA aliquots in a separate section (initially the "Library" section will be used), instead of the "DNA" section:

  1. JSP file case_summary.jsp in resources/reports/ updated with "Library" section (previously commented out), after the "DNA" section.
  2. Javascript file case_summary.js in resources/reports/ updated in function caseInfoLoaded(response) to obtain information on fpa and fpb DNA aliquots from the CaseSummaryServlet response, and insert it in appropriate fields in the "Library" section of the case summary form. Code for barcode name updated to display "NA", if not defined.
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetCaseInfo" to send information on fpa and fpb DNA aliquots in new JSON object with key "lib". The barcode string is constructed based on the well location on the library plate.
Last edited 9 years ago by olle (previous) (diff)

comment:5 by olle, 9 years ago

(In [3527]) Refs #801. Refs #816. Roles MeludiRole.LIBRARY_PREP and MeludiRole.LIBRARY_PLATE_DESIGNER used in library preparation are installed (they were previously defined in data access object Annotationtype.java in src/net/sf/basedb/meludi/dao/):

  1. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp):
    a. For commands "Validate" and "Install" to check roles MeludiRole.LIBRARY_PREP and MeludiRole.LIBRARY_PLATE_DESIGNER, and create them if missing.
    b. For command "GetPermissions" to include information on membership in roles MeludiRole.LIBRARY_PREP and MeludiRole.LIBRARY_PLATE_DESIGNER, respectively.

comment:6 by olle, 9 years ago

(In [3529]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a1".

  1. Version number change to "1.3.4a1":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:7 by olle, 9 years ago

(In [3530]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:8 by olle, 9 years ago

(In [3532]) Refs #801. Refs #816. Case summary updated to present information on fpa and fpb DNA aliquot barcode tags as links to the corresponding Tag items:

  1. Javascript file case_summary.js in resources/reports/ updated in function caseInfoLoaded(response) to present fpa and fpb aliquot barcode tags as links by calling function asLink(itemType, item, maxLength).
  2. Java data access object class/file Barcode.java in src/net/sf/basedb/meludi/dao/ added. It contains among other methods one for retrieving a barcode Tag item from the database, if the name of the former is known.
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetCaseInfo" to send information on fpa and fpb DNA aliquot Illumina index 1 and 2 name and id in new JSON objects with keys "index1" and "index2", respectively. The barcode info is constructed based on the well location on the library plate.

comment:9 by olle, 9 years ago

(In [3536]) Refs #801. Refs #816. It has been decided not to use role MeludiRole.LIBRARY_PLATE_DESIGNER in MeLuDI. Where previously used, it is exchanged for role MeludiRole.LIBRARY_PREP:

  1. JSP file index.jsp in resources/ updated by exchanging "LibraryPlateDesigner" for "LibraryPrep".
  2. Data access object class/file MeludiRole.java in src/net/sf/basedb/meludi/dao/ updated by commenting out definition of role LIBRARY_PLATE_DESIGNER ("LibraryPlateDesigner").
  3. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated by exchanging checks for role MeludiRole.LIBRARY_PLATE_DESIGNER for role MeludiRole.LIBRARY_PREP.
  4. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for commands "Validate" and "Install" to no longer create role MeludiRole.LIBRARY_PLATE_DESIGNER, if missing.

comment:10 by olle, 9 years ago

(In [3537]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 2 by removing optional input of last used FPA column for demo purposes, since it has been decided that the start column should be determined by the reagent kit selected, and that extracts should always be placed in order on the plate in a contiguous sequence (i.e. the placement should not continue in the first column after the right-most column has been filled):

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated by removing input field for last used column.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function nextPlateNameLoaded(response) by setting value lastUsedColumn to 5, making the next FPA column to be the first column.

comment:11 by olle, 9 years ago

(In [3538]) Refs #801. Refs #816. Sub-section "Reagent kit management wizards" is extended with a wizard for adding a new "Consumables lot number file" to the library preparation kit data. A "Consumables lot number file" is a text file with rows of tab/comma/semicolon-separated values, where each row contains a specification key in first/second column, followed by data columns:

  1. JSP file index.jsp in resources/ updated in "Library preparation wizards" section with new sub-section "Reagent kit management wizards". The first wizard in the latter is a "Add new consumables lot number file" wizard, linked to new JSP file add_consumables_lot_number_file.jsp in resources/libprep/.
  2. JSP and javascript files add_consumables_lot_number_file.jsp and add_consumables_lot_number_file.js in resources/libprep/ added. The latter communicates with the server using the following functions:
    a. Function downloadReagentLotNoFile sends a "POST" request to command "PrepareDownloadReagentLotNoFile" in servet LibPrepServlet, with callback function downloadReagentLotNoFileResults(response).
    b. Function downloadReagentLotNoFileResults(response) retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadReagentLotNoFile" in servet LibPrepServlet, after which "window.open(url)" is called to present a download file dialog.
    c. Function submit() sends table data in a "POST" request to command "RegisterReagentLotNoFile" in servet LibPrepServlet, with callback function submissionResults(response).
  3. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "DownloadReagentLotNoFile". It retrieves a path to a temporary file, reads the data and adds it to an output buffer, after which it removes the temporary file.
    b. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated with new command "PrepareDownloadReagentLotNoFile". It stores the sent data in a temporary file on the server and sends back the file path.
    c. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated with new command "RegisterReagentLotNoFile". It retrieves the data, after which the rows in the table representing kits not already in the kit storage are added to the latter, with default values for data not in the input file.

comment:12 by olle, 9 years ago

(In [3539]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a2".

  1. Version number change to "1.3.4a2":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:13 by olle, 9 years ago

(In [3540]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:14 by olle, 9 years ago

(In [3546]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" updated by exchanging input of a start date for an expiration date. Also, a registration date and a "last updated" date are added to the stored library preparation kit data. At registration of a "Consumables lot number file", the latter dates are set to the date at registration, i.e. the current date:

  1. JSP and javascript files add_consumables_lot_number_file.jsp and add_consumables_lot_number_file.js in resources/libprep/ updated by exchanging references to "start date" for "expiration date".
  2. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "DownloadReagentLotNoFile" to exchange start date for expiration date.
    b. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "PrepareDownloadReagentLotNoFile" to exchange start date for expiration date.
    c. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterReagentLotNoFile" to store registration date, last updated date, and expiration date in the library preparation kit data storage. The expiration date is retrieved from the sent data, while the other dates are set to the current date.

comment:15 by olle, 9 years ago

(In [3547]) Refs #801. Refs #816. Sub-section "Reagent kit management wizards" extended with a new "Inspect library preparation kit data" wizard for inspecting the stored library preparation kit data.

i. Step 1 includes a menu for selecting a library preparation kit filter, with the following options:
a. "All"
b. "Used & available"
c. "Used & unavailable"
d. "Used"
e. "Unused"
f. "Available"
g. "Unavailable"

ii. Step 2 presents the filtered data in a table with specification keys in a header row, with data for each kit on a single row. Basically, this is the same table format as used in step 2 of the "Add new consumables lot number file" wizard, but with added columns for:
a. Registration date.
b. Last updated date.
c. Expiration date.
d. "Available", a boolean flag indicating if a kit is available.
e. "#Times used", the number of times a kit has been thawed (6 times is the maximum allowed).
f. "Unused FPA plate locations", a string of comma-separated FPA plate locations, from A1 to H6.
g. "Comment".

iii. Step 2 also allows the filtered kit storage data table to be downloaded in a file with semi-colon-separated columns:

  1. JSP file index.jsp in resources/ updated in "Library preparation wizards" section, sub-section "Reagent kit management wizards", with new "Inspect library preparation kit data" wizard. It is linked to new JSP file inspect_lib_prep_kit_data.jsp in resources/libprep/.
  2. JSP and javascript files inspect_lib_prep_kit_data.jsp and inspect_lib_prep_kit_data.js in resources/libprep/ added. The latter communicates with the server using the following functions:
    a. Function initializeStep2() sends a "GET" request to command "GetLibPrepKitData" in servet LibPrepServlet, with callback function libPrepKitDataResults(response).
    b. Function libPrepKitDataResults(response) retrieves data for the filtered library preparation kit data in JSON format, and creates a table to present it.
    c. Function downloadLibPrepKitDataFile sends a "POST" request to command "PrepareDownloadLibPrepKitDataFile" in servet LibPrepServlet, with callback function downloadLibPrepKitDataFileResults(response).
    d. Function downloadLibPrepKitDataFileResults(response) retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadLibPrepKitDataFile" in servet LibPrepServlet, after which "window.open(url)" is called to present a download file dialog.
  3. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "GetLibPrepKitData". It retrieves the selected library preparation kit filter and applies it when retrieving the stored library preparation kit data, which is returned in JSON format.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "DownloadLibPrepKitDataFile". It retrieves a path to a temporary file, reads the data and adds it to an output buffer, after which it removes the temporary file.
    c. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated with new command "PrepareDownloadLibPrepKitDataFile". It stores the sent data in a temporary file on the server and sends back the file path.

comment:16 by olle, 9 years ago

(In [3551]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" updated:
a. Step 2 updated by extending the table displayed by a column for "Expiration date". Also, a downloaded library preparation reagent lot number file should include a column for expiration date. The date is set to the entered expiration date for all library preparation kits in the same consumables file.
b. Variable name for JSONArray with kit names is changed from "jsonKitNames" to "jsonKitName", since other JSONArrays are named after the entity/quantity in singular. Correspondingly, the JSON key for JSONArray "jsonKitName" is changed from "KitNames" to "KitName".

  1. JSP file add_consumables_lot_number_file.jsp in resources/libprep/ updated in displayed text only.
  2. Javascript file add_consumables_lot_number_file.js in resources/libprep/ updated:
    a. Function parseConsumablesFile(data) updated by including JSONArray for expiration date and setting the value to the entered date.
    b. Function initializeStep2() updated by adding a column for expiration date to the displayed table.
    c. Variable name for JSONArray with kit names is changed from "jsonKitNames" to "jsonKitName", since other JSONArrays are named after the entity/quantity in singular. Correspondingly, the JSON key for JSONArray "jsonKitName" is changed from "KitNames" to "KitName".
  3. Javascript file inspect_lib_prep_kit_data.js in resources/libprep/ updated by change of variable name for JSONArray with kit names from "jsonKitNames" to "jsonKitName", since other JSONArrays are named after the entity/quantity in singular. Correspondingly, the JSON key for JSONArray "jsonKitName" is changed from "KitNames" to "KitName".
  4. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "PrepareDownloadReagentLotNoFile" to include data for expiration date in the created temporary file.
    b. Variable name for JSONArray with kit names is changed from "jsonKitNames" to "jsonKitName", since other JSONArrays are named after the entity/quantity in singular. Correspondingly, the JSON key for JSONArray "jsonKitName" is changed from "KitNames" to "KitName".

comment:17 by olle, 9 years ago

(In [3552]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" updated when downloading a library preparation reagent lot number file to have the file name contain prefix "-exp-" before the expiration date, in order to clearly indicate that the date signifies an expiration date. (Previously, only prefix "-" was used.)

  1. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "DownloadReagentLotNoFile" to add prefix "-exp-" before the expiration date in the name of the file to be downloaded.
    b. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "PrepareDownloadReagentLotNoFile" to add prefix "-exp-" before the expiration date in the name of the temporary file to be created.
Last edited 9 years ago by olle (previous) (diff)

comment:18 by olle, 9 years ago

(In [3553]) Refs #801. Refs #816. Wizards "Add new consumables lot number file" and "Inspect library preparation kit data" in sub-section "Reagent kit management wizards" updated when javascripts send a request to LibPrepServlet for downloading a reagent lot number file by exchanging name of parameter "consumablesFileName" for "referenceName", since the name is only used in the name of the file to download, and in the future one might want to call this functionality in cases where the reference name is not a file name, but e.g. a kit name.

  1. Javascript file add_consumables_lot_number_file.js in resources/libprep/ updated:
    a. Functions downloadReagentLotNoFile() and downloadReagentLotNoFileResults(response) updated by exchange of parameter name "consumablesFileName" for "referenceName", when calling LibPrepServlet.
    b. Function submit() updated by exchange of JSONObject key "consumablesFileName" for "referenceName", when calling LibPrepServlet.
  2. Javascript file inspect_lib_prep_kit_data.js in resources/libprep/ updated in function submit() by not setting any values for JSONObjects with keys "referenceName" and "expirationDate".
  3. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "DownloadReagentLotNoFile" by exchanging name of parameter "consumablesFileName" for "referenceName".
    b. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "PrepareDownloadReagentLotNoFile" by exchanging name of parameter "consumablesFileName" for "referenceName".
    c. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterReagentLotNoFile" by exchanging name of JSONObject key "consumablesFileName" for "referenceName" (the name is currently only used in optional debug output).

comment:19 by olle, 9 years ago

(In [3554]) Refs #801. Refs #816. Sub-section "Reagent kit management wizards" is extended with a new "Add new library preparation kit" wizard for adding lot numbers etc. for a single library preparation kit. The first version contains a single step, with the following components:

a. Input fields for all entries in a consumables lot number file, except initial header lines.
b. An input field for an expiration date.
c. A button to clear values in all input fields.
d. A button for selecting a reagent lot number file in CSV format with data for the kit to be added.
e. A button for downloading a reagent lot number file in CSV format with data in the input fields.
e. A "Cancel" and a "Register" button. At registration, the kit data will be added to the library preparation kit storage, provided that the latter does not already contain an entry with the same kit name.

  1. JSP file index.jsp in resources/ updated in "Library preparation wizards" section, sub-section "Reagent kit management wizards", with new "Add new library preparation kit" wizard. It is linked to new JSP file add_new_libprep_kit.jsp in resources/libprep/.
  2. JSP and javascript files add_new_libprep_kit.jsp and add_new_libprep_kit.js in resources/libprep/ added. The latter communicates with the server using the following functions:
    a. Function downloadReagentLotNoFile() calls function addConsumablesInput() to store input data in JSONArrays, after which it sends a "POST" request to command "PrepareDownloadReagentLotNoFile" in servet LibPrepServlet, with callback function downloadReagentLotNoFileResults(response).
    b. Function downloadReagentLotNoFileResults(response) retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadReagentLotNoFile" in servet LibPrepServlet, after which "window.open(url)" is called to present a download file dialog.
    c. Function submit() sends a "POST" request to command "RegisterReagentLotNoFile" in servet LibPrepServlet, with callback function submissionResults(response).
    d. Function submissionResults(response) displays rhe response message and shows the "Restart" button.

comment:20 by olle, 9 years ago

(In [3560]) Refs #801. Refs #816. Wizard "Inspect library preparation kit data" in sub-section "Reagent kit management wizards" extended in the table in step 2 with an extra column of "Edit..." buttons for editing values of most cells, a single kit at a time. Pressing an "Edit..." button displays a pop-up dialog for editing cell values for the kit data in the same row, as the button, in the same manner as editing data in step 3 of the "DNA/RNA registration/quantification" wizard. Modified values in the main table are highlighted in yellow, and enclosed in angular brackets "<>". Other properties:

a. Kit name and last updated date are exempted from manual editing (the last update date is set automatically).
b. The "Register" button is disabled, until some value has been modified in the table.
c. Pressing the "Register" button updates the library preparation kit storage with the modified values.
d. Kits, for which some data has been modified, have its last updated date set to the current date.

  1. JSP file index.jsp in resources/ updated in "Library preparation wizards" section, sub-section "Reagent kit management wizards", by exchanging title of wizard "Inspect library preparation kit data" for "Inspect/edit library preparation kit data".
  2. JSP file inspect_lib_prep_kit_data.jsp in resources/libprep/ updated by exchanging title "Inspect library preparation kit data" for "Inspect/edit library preparation kit data".
  3. Javascript file inspect_lib_prep_kit_data.js in resources/libprep/ updated:
    a. New global variables JSONObjects jsonConsumablesOrig and jsonConsumablesModified.
    b. Function libPrepKitDataResults(response) updated by calling new function copyJsonConsumables(jsonConsumablesSrc) to store a copy of JSONObject jsonConsumables in jsonConsumablesOrig, after which new function updateDetailsTable() is called. The latter function contains the bulk of the code previously in function libPrepKitDataResults(response).
    c. New function updateDetailsTable() updates the displayed table with data in JSONObject jsonConsumables, highlighting data, that has been modified. Data for modified kits are compiled in JSONObject jsonConsumablesModified. An extra column with an "Edit..." button for each row is added, where the buttons are coupled to new function editLibPrepKitDetails(event). The "Register" button is disabled, unless some data has been modified in the table.
    d. New function fetchJsonConsumables() is added to be used by javascript for the edit dialogs to access JSON data for the table.
    e. New function copyJsonConsumables(jsonConsumablesSrc) added. It returns a copy of the input JSONObject.
    f. Function editLibPrepKitDetails(event) added. It gets the index for the table row of the pressed button, obtains the kit name of that row, and calls Dialogs.openPopup(url, ...) for a url to new JSP file edit_libprep_kit_details.jsp.
    g. Function submit() updated to use JSONObject jsonConsumablesModified as submit info when calling LibPrepServlet with command "RegisterReagentLotNoFile" and setting parameter "overwrite" to "true".
  4. New JSP file edit_libprep_kit_details.jsp in resources/libprep/ added. It contains layout for the edit pop-up dialog, and is coupled to javascript file edit_libprep_kit_details.js, also in resources/libprep/.
  5. New javascript file edit_libprep_kit_details.js in resources/libprep/ added. It calls window.opener.ExtractionReg.fetchJsonConsumables() to call function fetchJsonConsumables() in javascript inspect_lib_prep_kit_data.js to obtain JSON data for the kit data table, that is inserted as default values in the dialog forms. Function saveDetails() calls window.opener.ExtractionReg.updateDetailsTable() to call function updateDetailsTable() in javascript inspect_lib_prep_kit_data.js to update the table with data entered in the dialog.
  6. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) for command "RegisterReagentLotNoFile":
    a. Boolean parameter "overwrite" is retrieved.
    b. If value of parameter "overwrite" is true, only data for kits not in supplied list of update kits, will be loaded from the library preparation kit storage. Otherwise, all previously stored data will be loaded, as only data for new kits will be added.
    c. If value of parameter "overwrite" is true, values for registration date, expiration date, "available" flag, number of times used, unused FPA plate locations, and comment for supplied kit data are taken from the latter, otherwise they are set to default values. (Last updated date is always set to current date for added/updated kits.)
    d. The response message for modified kits will describe the kit as "updated", instead of "added".

comment:21 by olle, 9 years ago

(In [3561]) Refs #801. Refs #816. JSP file inspect_lib_prep_kit_data.jsp and javascript file inspect_lib_prep_kit_data.js in resources/libprep/ renamed inspect_libprep_kit_data.jsp and inspect_libprep_kit_data.js, respectively, in order to have names more similar to other files in resources/libprep/:

  1. JSP file index.jsp in resources/ updated in "Library preparation wizards" section, sub-section "Reagent kit management wizards", to link wizard "Inspect/edit library preparation kit data" to JSP file with new name inspect_libprep_kit_data.jsp in resources/libprep/.
  2. JSP file inspect_lib_prep_kit_data.jsp in resources/libprep/ renamed inspect_libprep_kit_data.jsp, and updated to link to javascript file with new name inspect_libprep_kit_data.js in resources/libprep/.
  3. Javascript file inspect_lib_prep_kit_data.js in resources/libprep/ renamed inspect_libprep_kit_data.js,

comment:22 by olle, 9 years ago

(In [3562]) Refs #801. Refs #816. Bug fix: JSP file edit_libprep_kit_details.jsp updated in style specification for unused FPA plate locations by increasing parameter maxlength from 8 to 255, since the lower value prohibited adding data to the string.

comment:23 by olle, 9 years ago

(In [3573]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated for selecting library preparation kit and placing selected DNA aliquots in start plate wells according to empirical rules:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated with style items for kit plates and new third step for selecting library preparation kit to use.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function initPage() updated with new third step for selecting library preparation kit to use.
    b. Function initializeStep3(event) updated to call LibPrepServlet with command "GetLibPrepKitsAsPlates" and callback function kitPlatesInfoLoaded(response) to retrieve information on available wells for kits for placing the selected number of DNA aliquots on a start plate.
    c. Function kitPlatesInfoLoaded(response) retrieves information on available wells for kits and calls new function buildKitInfoPlate(plate) to present the layout of the new start plate graphically with the selected DNA aliquots placed in reserved wells, with one plate view per used kit. The user may select one of these used kits, or an unused available kit, in a menu.
    d. New function buildKitInfoPlate(plate) generates HTML code for displaying a table representing the FPA part of a start plate for a kit.
    e. Function initializeStep4(event) among other things calls DNAServlet with command "GetNextAutoGeneratedPlateName" and callback function nextPlateNameLoaded(response).
    f. Function nextPlateNameLoaded(response) retrieves information on the selected library preparation kit and presents the layout of the new start plate with the selected DNA aliquots placed in reserved wells.
    g. Function submit updated to call LibPrepServlet with command "RegisterReagentLotNoFile" and parameters "overwrite" and "update" set to true, parameter "referenceName" set to the name of the selected library preparation kit, and callback function kitUpdateSubmissionResults(response). This will update data for the used library preparation kit.
    h. New function kitUpdateSubmissionResults(response) calls DnaServlet with command "CreateDnaOrLibPlate" with callback function submissionResults(response).
    i. Convenience functions wellStrToRow(wellStr) and wellStrToCol(wellStr) takes a plate well location string consisting of row letter plus column number and returns the row and column indices, respectively.
  3. Java data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new string annotation type "LibPrepKitName" for bioplates.
  4. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) by adding new string annotation type "LibPrepKitName" for bioplates.
  5. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) for command "CreateDnaOrLibPlate" to set value of new annotation Annotationtype.LIB_PREP_KIT_NAME to name kit to use for created plate.
  6. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. LibPrepServlet constructor updated to initialize new private hash maps Map<Integer,String> indexToRowLetterHashMap and Map<String,Integer> rowLetterToIndexHashMap.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetLibPrepKitData" to call new private method JSONObject fetchJsonKitData(String libPrepKitNameFilter, Boolean availableFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs) to obtain a JSONObject with library preparation kit data.
    c. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "GetLibPrepKitsAsPlates". It calls new private method JSONObject fetchJsonKitData(String libPrepKitNameFilter, Boolean availableFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs) to obtain a JSONObject with kit data for available library preparation kits, and returns a JSONArray with information on unused, effectively unused, and reserved wells for FPA DNA aliquots for the kits.
    d. New private method JSONObject fetchJsonKitDataForUpdate(String libPrepKitName, List<String> reservedWellsList) calls new private method JSONObject fetchJsonKitData(String libPrepKitNameFilter, Boolean availableFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs) to obtain a JSONObject with kit data for a single library preparation kit, updates the latter regarding number of times used, available flag (if number of times used is >= 6 after update), last updated date, and comma-separated list string of locations for unused wells for FPA DNA aliquotes. The updated JSONObject for the selected library preparation kit is then returned.
    e. New private method JSONObject fetchJsonKitData(String libPrepKitNameFilter, Boolean availableFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs) retrieves the requested data from the library preparation kit storage, and returns it as a JSONObject.
    f. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterReagentLotNoFile" to retrieve new boolean parameter "update" and string parameter "referenceName" from request (the latter parameter was previously retrieved from submitted JSONData). If parameter "update" has value true, the list of reserved wells is retrieved, after which new private method JSONObject fetchJsonKitDataForUpdate(String libPrepKitName, List<String> reservedWellsList) is called to obtain a JSONObject with kit data for the updated library preparation kit. At the end, the submitted JSON data is transferred to the returned JSONObject, in order for the latter to be available for further processing when creating a new start plate.

comment:24 by olle, 9 years ago

(In [3574]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated regarding dilution calculation:
a. The default aliquot volume of 10.5µl, i.e. volume of FPA + FPB = 21µl, should be changed to 10.0µl, if the dilution factor is 1.0, i.e. no water is added.

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function getWellText(well)updated by setting the aliquot volume to 10.0µl, if the dilution factor is 1.0.
Last edited 9 years ago by olle (previous) (diff)

comment:25 by olle, 9 years ago

Functional specification update:

  • Wizard "Create label file for a number of new cases" in section "Sample processing wizards", sub-section "Case registration", should be updated to store the highest case number, for which labels have been created, and use this as start number, the next time labels should be created. The highest case number should only be updated, when a label file is created, but not for a preview. However, the case number should be updated, even if the created label file is opened in a third-party program, but not downloaded directly.

Design discussion:

Since the label generation is coupled to MeLuDI cases, the same highest case number, for which labels have been created, will apply for all users. The number will therefore be stored in a file placed in the BASE user files directory. Initially, the file will only contain a single line, consisting of key, separator, and value.

Design update:

  1. Javascript file labelgeneration.js in resources/sampleproc/ updated in function doExport(preview) to add parameter "preview" when calling LabelGenerationServlet with command "GetLabelFile".
  2. Java servlet class/file LabelGenerationServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "CountCases" to call new private method long fetchCaseCount() to obtain the highest used case number, for which labels have been created. If this fails, the highest stored case number in the database is used.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetLabelFile" to retrieve value of parameter "preview" from the request, and if this is false, call new private method void updateCaseCount(int endCaseNumber) to update the highest used case number, for which labels have been created.
    c. New private method long fetchCaseCount() added. It opens the case label info file and reads the value of the highest used case number, for which labels have been created, and then returns the value.
    d. New private method void updateCaseCount(int endCaseNumber) added. It opens the case label info file for writing, and stores the given case number in it.

comment:26 by olle, 9 years ago

(In [3575]) Refs #816. Wizard "Create label file for a number of new cases" in section "Sample processing wizards", sub-section "Case registration", updated to store the highest case number, for which labels have been created, and use this as start number, the next time labels should be created. The highest case number is only be updated, when a label file is created, but not for a preview. However, the case number is updated, even if the created label file is opened in a third-party program, but not downloaded directly.

  1. Javascript file labelgeneration.js in resources/sampleproc/ updated in function doExport(preview) to add parameter "preview" when calling LabelGenerationServlet with command "GetLabelFile".
  2. Java servlet class/file LabelGenerationServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "CountCases" to call new private method long fetchCaseCount() to obtain the highest used case number, for which labels have been created. If this fails, the highest stored case number in the database is used.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetLabelFile" to retrieve value of parameter "preview" from the request, and if this is false, call new private method void updateCaseCount(int endCaseNumber) to update the highest used case number, for which labels have been created.
    c. New private method long fetchCaseCount() added. It opens the case label info file and reads the value of the highest used case number, for which labels have been created, and then returns the value.
    d. New private method void updateCaseCount(int endCaseNumber) added. It opens the case label info file for writing, and stores the given case number in it.

comment:27 by olle, 9 years ago

(In [3577]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated when placing selected DNA aliquots in start plate wells according to empirical rules. If all FPA aliquots do not fit in available wells in the leftmost non-full column of such wells, but if they fit in some of the available wells of that column and a number of fully filled available columns to the right, this solution is used:

  1. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetLibPrepKitsAsPlates" when the number of aliquots fits in current non-full column plus a number of filled columns to the right.

comment:28 by olle, 9 years ago

(In [3582]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 3 by allowing selection of library preparation kit to use by clicking a radio button next to the kit name & description, instead of selection in a menu at the end. Unused kits, which were only shown in the menu, are now listed with radio buttons below the list of used & available kits.

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated by removing prompt, status, and help components for library preparation kit selection menu. The menu itself will kept for internal storage of kit info in JSON format for the kits, but will be hidden from the user interface.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Global variables for kit number and selected kit name added.
    b. Function kitPlatesInfoLoaded(response)updated by adding radio button next to library preparation kit name & description for both used & available and unused kits. The kit description has been condensed to fit on a single line. Event handlers for the radio buttons are coupled to new function kitOnChange(event). The library preparation kit menu is hidden from the user, as it is only used internally.
    c. New function kitOnChange(event) sets the value of global variable selectedKitName to the name of the selected kit, and unchecks all other radio buttons.
    d. Function nextPlateNameLoaded(response) updated to obtain JSON data for the selected kit from the (now hidden) library preparation kit selection menu, based on the name of the selected kit obtained from the value of global variable selectedKitName.
    e. Function buildKitInfoPlate(plate) updated to skip the text header section above the plate table, since the former is now replaced with a condensed description next to the selection radio button.

comment:29 by olle, 9 years ago

(In [3587]) Refs #816. Bug fixed in default cell text in extraction protocol table for RNA and DNA concentration (RNA concentration was previously described as "DNA conc." and DNA concentration as "RNA conc."). This default text was normally never shown in the displayed table, but should naturally be correct, in order not to lead to mistakes, when the code is updated:

  1. JSP file extraction_protocol2.jsp in resources/sampleproc/ updated to have correct default cell text in extraction protocol table for RNA and DNA concentration.

comment:30 by olle, 9 years ago

(In [3590]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated regarding dilution calculation and possibility to create a library preparation dilution protocol:
i. The default aliquot volume is always 10.0µl. However, if the dilution factor is > 1.0, a diluted solution of DNA plus water with volume 21µl is prepared, from which 10µl is taken for each aliquot (FPA and FPB). The extra 1µl is not used, but is needed, since there is practical difficulty in transferring all material from a solution vial to a plate well.
ii. It is now possible to create a dilution protocol for a start plate, after FPA and FPB aliquots have been allocated for reserved wells. It contains a header and a table. The header contains the name of the start plate and the current date. The table contains one row per selected DNA extract, with the following columns:
a. DNA extract name.
b. DNA plate name and well position.
c. FPA aliquot well position.
d. FPB aliquot well position.
e. Volume DNA (µl).
f. Volume water (µl).
g. Solution volume (µl).
h. Dilution factor.
i. ΔCt value.
j. DNA Qubit concentration (ng/µl).
k. Comment.

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated.
    a. Form tag added with action "libprep_diltion_protocol2.jsp", method "post", id "wizard", and class "wizard".
    b. New hidden input fields added for id, submit info, and number of items. Navigation table updated by adding button for creating library preparation dilution protocol. The button is coupled to id "gocreate".
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function initPage() updated with event handler for button for creating a dilution protocol. The event handler couples the button to new function createProtocol().
    b. Step initialization functions updated to hide the button for creating a dilution protocol, until the last fourth step.
    c. New function createProtocol() added. It obtains information on DNA aliquots allocated for reserved wells of the current start plate, adds data for well position to the JSONObject representing the aliquot, and submits a JSONArray of the extract items together with other JSON data (including start plate name and current date) to new JSP file libprep_dilution_protocol2.jsp by calling frm.submit().
    d. New convenience function wellRowColumnToWellStr(row, column) added. It returns a well string (row letter + column number, 1-based) for an 8x12 plate from row and column indices (0-based).
    e. New convenience function formatDate(date) added. It returns a date object as a date string in format "yyyy-mm-dd".
    f. Function getWellText(well) updated to use new dilution volumes, and to store dilution data needed for the dilution protocol in the JSONObject for the extract in each well.
  3. New JSP file libprep_dilution_protocol2.jsp in resources/libprep/ added. It is coupled to new javascript file libprep_dilution_protocol.js in resources/libprep/.
  4. New javascript file libprep_dilution_protocol.js in resources/libprep/ added.
    a. Function initPage() obtains submit info etc. in JSON format from posted page data, after which it calls function initializeProtocol(submitInfoJsonStr).
    b. Function initializeProtocol(submitInfoJsonStr) writes the header table, and then calls function tableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName) to create the dilution table.
    c. Function tableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName) obtains JSON data for the DNA extract items placed on the start plate, and creates the dilution table, with one row for each selected DNA extract.

comment:31 by olle, 9 years ago

Functional specification update:

  • Wizard "Lab tracking protocol for FFPE extraction" in section "Sample processing wizards", sub-section "DNA/RNA extraction wizards", should be updated regarding the contents of a qPCR sample ID file to download. The latter file should be updated to put QCT samples in the first three columns on the first row.

Design update:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "DownloadQPcrSampleIdFile" to put QCT samples in the first three columns on the first row.

comment:32 by olle, 9 years ago

(In [3591]) Refs #816. Wizard "Lab tracking protocol for FFPE extraction" in section "Sample processing wizards", sub-section "DNA/RNA extraction wizards", updated regarding the contents of a qPCR sample ID file to download. The latter file is updated to put QCT samples in the first three columns on the first row.

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "DownloadQPcrSampleIdFile" to put QCT samples in the first three columns on the first row.

comment:33 by olle, 9 years ago

(In [3592]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated regarding dilution calculation:
a. The dilution factor calculation updated to include an upper cut-off at 16.0 (previously a lower cut-off at 1.0 has been implemented), restricting the range of the dilution factor to [1.0, 16.0].
b. Since the new dilution factor cut-off ensures that the needed amount of DNA = (solution volume)/(dilution factor) >= (solution volume)/16.0 will be >= 1.0µl, as long as the solution volume >= 16.0µl. A solution volume of 20.0µl will therefore be adequate for all DNA extracts.

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function getWellText(well) updated to always use dilution volume 20.0µl.
    b. Function fetchDilutionFactor(deltaCt) updated to apply upper cut-off restricting the dilution factor to values <= 16.0.

comment:34 by olle, 9 years ago

(In [3593]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 4 by restricting plate well context menu to two items, comment and case summary:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated by commenting out all plate well context menu items, except comment and case summary.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function initPage() by commenting out event handlers for all plate well context menu items, except comment and case summary.

comment:35 by olle, 9 years ago

(In [3594]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 4 by removing toolbar for editing plate layout:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated by commenting out toolbar for editing plate layout.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function initPage() by commenting out event handlers for toolbar buttons for editing plate layout.

comment:36 by olle, 9 years ago

(In [3596]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 4:
a. Pool layout menu disabled.
b. Menu for controls to use commented out for now.
c. References to selecting aliquots for QC removed.

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated:
    a. Menu for controls to use commented out.
    b. References to selecting aliquots for QC commented out.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function initPage() updated by commenting out event handlers for QC quantities.
    b. Function nextPlateNameLoaded(response) updated by disabling pool schema menu.
    c. Function quantityOnChange(event) updated by commenting out references to QC quantities.

comment:37 by olle, 9 years ago

(In [3597]) Refs #816. Wizard "Create label file for a number of new cases" in section "Sample processing wizards", sub-section "Case registration", updated to create the file used to store the highest case number, for which labels have been created, if the file does not exist:

  1. Java servlet class/file LabelGenerationServlet.java in src/net/sf/basedb/meludi/servlet/ updated in private method void updateCaseCount(int endCaseNumber) to create the case label info file, if it does not exist.

comment:38 by olle, 9 years ago

(In [3598]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a3".

  1. Version number change to "1.3.4a3":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:39 by olle, 9 years ago

(In [3599]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:40 by olle, 9 years ago

Development note:

  • Current MeLuDI version tested with positive result under Eclipse Mars.1 4.5.1, Java 1.8.0_66, Tomcat 8, and BASE 3.6.2 (build #7012). In order to work under BASE 3.6.2, the database schema had to be updated from 121 to 126 before use.

comment:41 by olle, 9 years ago

(In [3608]) Refs #801. Refs #816. Wizard "Inspect/edit library preparation kit data" updated with fix of bug leading to lot numbers for index primers A703 being displayed also for index primers A704, instead of the correct ones:

  1. Javascript file inspect_libprep_kit_data.js in resources/libprep/ updated in function updateDetailsTable() by fix of bug leading to lot numbers for index primers A703 being displayed also for index primers A704, instead of the correct ones.

comment:42 by olle, 9 years ago

(In [3609]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" updated with fix of bug when expiration date was changed after consumables file was loaded, in which case the new expiration date wasn't used. Also removal of unused code:

  1. Javascript file add_consumables_lot_number_file.js in resources/libprep/ updated:
    a. Function initPage() updated by adding event handler for expiration date input field coupled to new function expirationDateOnChange().
    New function expirationDateOnChange() added. It performs a validation test of the entered expiration date, and if OK, updates the expiration date in the jsonConsumables JSONObject, if a consumables file already has been loaded.
    c. Unused code removed.

comment:43 by olle, 9 years ago

(In [3610]) Refs #801. Refs #816. MeLuDI library preparation wizards updated to store kit data as BASE Kit items, added to BASE 3.7:

  1. Outermost Ant build file build.xml in / updated with new version requirements for Java and BASE.
  2. JSP file edit_libprep_kit_details.jsp in resources/´libprep/ updated by exchanging name of flag "Available" for "Active".
  3. Javascript file edit_libprep_kit_details.js in resources/´libprep/ updated by exchanging name of flag "Available" for "Active". Functions initPage() and saveDetails() updated to display the negation of kit attribute inactive value as "yes" or "no".
  4. JSP file inspect_libprep_kit_data.jsp in resources/´libprep/ updated by exchanging "Available" for "Active" in the library preparation kit filter menu.
  5. Javascript file inspect_libprep_kit_data.js in resources/´libprep/ updated by exchanging name of flag "Available" for "Active". Function updateDetailsTable() updated to display the negation of kit attribute inactive value as "yes" or "no" for the "Active" flag.
  6. Javascript file select_dna_for_start_plate.js in resources/´libprep/ updated in function kitPlatesInfoLoaded(response) by changing names of variables related to the inactive attribute of a kit. The "Available" and "available" part of the name was exchanged for "Active" and "active", respectively. Corresponding changes were made in displayed text.
  7. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new kit annotation types for library preparation kit lot numbers, last updated date, number of times used, and unused wells for FPA aliquots.
  8. Data access object class/file Subtype.java in src/net/sf/basedb/meludi/dao/ updated by definition of a new library preparation kit subtype, Subtype.LIBRARY_PREPARATION_KIT, corresponding to the same subtype in BASE.
  9. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated to include the new kit annotation types.
    b. Public method <T extends BasicItem<?> & Nameable> T createMeludiRole(SessionControl sc, MeludiRole<T> role) updated by removing BasicItem generic argument to <T extends BasicItem & Nameable> T createMeludiRole(SessionControl sc, MeludiRole<T> role).
  10. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Constant and variable names related to attribute "Available" updated by exchanging the "Available" and "available" part of the name for "Active" and "active", respectively. Correspondingly, "unavailable" was exchanged for "inactive".
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for commands "GetLibPrepKitData" and "GetLibPrepKitsAsPlates" to include new first argument DbControl dc when calling updated private method JSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs).
    c. Private method JSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList) updated with first new argument DbControl dc and to include new first argument DbControl dc when calling updated private method JSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs).
    d. Private method JSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs) updated with first new argument DbControl dc, to call new private method JSONArray fetchKitJsonHeaders() to obtain header names, and to perform a database query to obtain data for the kits.
    e. New private convenience method JSONArray fetchKitJsonHeaders() added. It returns a JSONArray with header names for library preparation kit components.
    f. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "PrepareDownloadLibPrepKitDataFile" to convert the negation of kit attribute inactive value to strings "true" or "false" for the "Active" flag.
    g. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterReagentLotNoFile" to include new first argument DbControl dc when calling updated private method JSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList) and to store new or updated kit data as kit items in the database.
    h. Unused code removed.

comment:44 by olle, 9 years ago

(In [3613]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 to not show well information on bioplate location, ΔCt, and Qubit concentration by default:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated by not checking check boxes for bioplate location, ΔCt, and Qubit concentration by default.

comment:45 by olle, 9 years ago

(In [3614]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 to show well information on index 1 and 2 primers:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated with definition of new style class indexprimer, with centered text in red
  2. Javascript select_dna_for_start_plate.jsp in resources/libprep/ updated in function getWellText(well) to display index 2 and index 1 primers, one above the other, for wells containing extracts.
Version 0, edited 9 years ago by olle (next)

comment:46 by olle, 9 years ago

(In [3615]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) regarding information to be displayed for each well:
a. If information on a specific subject is not chosen to be displayed for each well, then neither will warnings regarding that subject be displayed.

  1. Javascript select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function toggleInfo(event) updated to call Plate.paint(Plate.getWells()) to re-paint well info to show/hide warnings after target class has been added/removed.
    b. Function getWellText(well) updated to call new convenience function hasClass(elementId, cls) for element id "plate" and classes "hide-location", "hide-quality-score", and "hide-qubitconc" to determine if warnings should be displayed for bioplate location, ΔCt, and Qubit concentration.
    c. New convenience function hasClass(elementId, cls) added. It returns true if HTML element with id elementId has class cls, else false.

comment:47 by olle, 9 years ago

(In [3617]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 by exchanging entry field for amount of DNA to use for minimum volume of DNA to use, where a warning will be displayed if the volume is below this value:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated by exchanging entry field for amount of DNA to use for minimum volume of DNA to use.
  2. Javascript select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function initPage() updated by commenting out event handler function quantityOnChange(event) for regular quantity, and adding new event handler minVolDnaOnChange(event) for minimum DNA volume.
    b. Event handler function quantityOnChange(event) updated by commenting out references to undefined entities.
    c. New event handler function minVolDnaOnChange(event) added. It checks the validity of the entered value, and if OK, calls function Plate.paint(Plate.getWells()) to re-display well data for the current start plate layout.
    d. Function autoSelect(event) updated by commenting out references to undefined entities.
    e. Function getWellText(well) updated to display a warning message if the removed DNA volume related to an extract in a well is less than the entered minimum volume.

comment:48 by olle, 9 years ago

(In [3619]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) by allowing a previously stored library preparation protocol to be selected:

  1. JSP file select_dna_for_start_plate.js in resources/´libprep/ updated by adding a library preparation protocol menu in step 4, between the start plate name and kit name.
  2. Javascript file select_dna_for_start_plate.js in resources/´libprep/ updated:
    a. Function initializeStep4(event) updated by loading the protocol menu with library preparation protocols by calling ProtocolServlet with command "GetProtocols", attribute subtype set to "LIBRARY_PROTOCOL", and callback function to protocolsLoaded(response).
    b. New callback function protocolsLoaded(response) added. It loads the protocol menu with retrieved library preparation protocols, after which an extra none item is added.
    c. Function submit() updated by adding the selected library preparation protocol id and name to the submitted info and call parameters. Servlet call corrected to calling DnaServlet with command "CreateDnaOrLibPlate".
    d. Function createProtocol() updated by adding the selected library preparation protocol id and name to the submitted info. This is intended for future use.
  3. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new bioplate annotation types for library preparation protocol id and name, BATCH_LIBRARY_PREPARATION_PROTOCOL_ID and BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME, respectively.
  4. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) to include the new bioplate annotation types for library preparation protocol id and name.
  5. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) for command "CreateDnaOrLibPlate" to retrieve the library preparation protocol id and name from request parameters and store them in new annotations for the created start plate. Also, the protocol is attached to the creation event of the aliquot child extracts placed in the wells of the start plate.

comment:49 by olle, 9 years ago

(In [3621]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) by storing the id of the used library preparation kit with the start plate (previously the kit name was stored):

  1. JSP file select_dna_for_start_plate.jsp in resources/´libprep/ updated by adding a hidden input field with name "hiddenLibPrepKitId" to store the library preparation kit id in.
  2. Javascript file select_dna_for_start_plate.js in resources/´libprep/ updated:
    a. Function kitPlatesInfoLoaded(response) updated by adding the id for a kit to the jsonKit JSONObject with key "id".
    b. Function nextPlateNameLoaded(response) updated by retrieving the library preparation kit id from the jsonKit JSONObject, and storing in new hidden input field with name "hiddenLibPrepKitId".
    c. Function submit() updated by retrieving the selected library preparation kit id from new hidden input field with name "hiddenLibPrepKitId", and adding it to the submitted plate info with JSON key "kitId".
    d. Function kitUpdateSubmissionResults(response) is removed, since it is never called.
  3. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated:
    a. Bioplate string annotation type for library preparation kit name, LIB_PREP_KIT_NAME, changed to BATCH_LIB_PREP_KIT_NAME, to clearly indicate in the name, that the annotation is for a batch of items (in this case on a bioplate).
    b. New integer bioplate annotation type BATCH_LIB_PREP_KIT_ID defined.
  4. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) to include the new bioplate annotation type for library preparation kit id and the renamed annotation type for library preparation name. Code for including bioplate annotation types for library preparation protocol id and name moved to library preparation section, next to code for library preparation kit id and name. New bioplate annotation type for library preparation kit id and the renamed annotation type for library preparation name added to Subtype.DNA annotation type category.
  5. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) for command "CreateDnaOrLibPlate" to retrieve the library preparation kit id and name from submit info and store them in annotations for the created start plate.
  6. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetLibPrepKitAsPlates" to retrieve the library preparation kit id values for the performed database query, and store them in new JSONArray jsonKitId, to later be stored in JSONObject jsonPlate for each kit with JSON key "kitId".
    b. Private method JSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs) updated to retrieve the library preparation kit id values for the performed database query, and store them in new JSONArray jsonKitId, to later be stored in returned JSONObject jsonConsumables with JSON key "KitId" (traditionally, JSON keys for jsonConsumables start with an upper case letter).

comment:50 by olle, 9 years ago

(In [3624]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) by allowing a library preparation file to be downloaded, that is intended to be imported to the Illumina MiSeq software before analysis:

  1. JSP file select_dna_for_start_plate.jsp in resources/´libprep/ updated in step 4 by adding a button to download a library preparation file. The button is placed below the plate display, over the navigation buttons.
  2. Javascript file select_dna_for_start_plate.js in resources/´libprep/ updated:
    a. Function initPage() updated by adding an event handler for the library preparation file download button, coupled to new function downloadLibPrepFile().
    b. New function downloadLibPrepFile() added. It sends a "POST" request to command "PrepareDownloadLibPrepFile" in servet LibPrepServlet, with callback function downloadLibPrepFileResults(response).
    c. New function downloadLibPrepFileResults(response) added. It retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadLibPrepFile" in servlet LibPrepServlet, after which "window.open(url)" is called to present a download file dialog.
  3. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "DownloadLibPrepFile". It retrieves a path to a temporary file, reads the data and adds it to an output buffer, after which it removes the temporary file.
    b. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated with new command "PrepareDownloadLibPrepFile". It stores the sent data in a temporary file on the server and sends back the file path.

comment:51 by olle, 9 years ago

(In [3626]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated for registration of a start plate to also update the used library preparation kit regarding number of times used and unused wells for FPA aliquots:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function submissionResults(response) (callback function for call to DnaServlet from function submit()) updated by calling servlet LibPrepServlet with command "RegisterReagentLotNoFile" and attributes "overwrite" and "update" set to true. Response messages from previous operation are transferred as a JSONArray to submitted JSONObject data with JSON key "transferredMessages". Callback function for the new servlet call is new function updateKitDataResults(response).
    b. New function updateKitDataResults(response) added. It displays response messages and shows the "Restart" button.
  2. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Private function JSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList) updated with fix of bugs when retrieving the "Active" flag and number of times used from JSONArrays (code had not been updated from old implementation, when these values were stored as strings, instead of boolean and integer values).
    b. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterReagentLotNoFile" to retrieve JSONArray of transferred messages and transfer them to current jsonMessages JSONArray.

comment:52 by olle, 9 years ago

(In [3627]) Refs #801. Refs #816. When LibPrepServlet protected method void doPost(HttpServletRequest req, HttpServletResponse resp) was updated with command "RegisterReagentLotNoFile" 2015-10-13, its purpose was to register kit data from a "Consumables" lot number file. However, since then the command has been updated to be used for registering kit data entered in a web form, and to update data for existing kits. The name of the command is therefore changed to "RegisterKits".

  1. Javascript files add_consumables_lot_number_file.js, add_new_libprep_kit.js, inspect_libprep_kit_data.js, and select_dna_for_start_plate.js, all in resources/libprep/, updated by exchanging LibPrepServlet command "RegisterReagentLotNoFile" for "RegisterKits".
  2. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) by exchanging name of command "RegisterReagentLotNoFile" for "RegisterKits".

comment:53 by olle, 9 years ago

(In [3628]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated for registration of a start plate to store used kit with creation events for the plate and DNA child extracts placed on it:

  1. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) for command "CreateDnaOrLibPlate" to store used kit with creation events for start DNA reaction plate and DNA child extracts placed on the plate.

comment:54 by olle, 9 years ago

(In [3630]) Refs #801. Refs #816. In order to make it possible to add control reference standards as extra material of type "DNA", an annotation type for control item lot number is defined for DNA extracts:

  1. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new string extract annotation type CONTROL_LOT_NO defined.
  2. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) to include the new extract annotation type for control lot number. The new annotation type is added to Subtype.DNA annotation type category.

comment:55 by olle, 9 years ago

Design note regarding registration of control reference standards as extra material of type "DNA":

  • Currently, these standards are obtained from Horizon Discovery, and it is therefore recommended that they are given names starting with "Horizon".

comment:56 by olle, 9 years ago

(In [3631]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 3 (the step after initial selection of DNA extracts, concerned with selecting a library preparation kit to use) by allowing manual selection of extra DNA extracts and/or control items:

a. Three new buttons are added to the top of the form, "Add extract...", "Add control...", and "Reset".
b. Clicking the "Add extract..." button opens a BASE pop-up extract selection dialog, with filters: Name: "%.d", Type: "DNA", and Remaining quantity (µg): ">0". Selecting any extract items makes the step 3 form update with the new item selection, after the "OK" is pressed in the dialog.
c. Clicking the "Add control..." button opens a BASE pop-up extract selection dialog, with filters: Name: "Horizon%.d", Type: "DNA", and Remaining quantity (µg): ">0". Selecting any extract items makes the step 3 form update with the new item selection, after the "OK" is pressed in the dialog.
d. Clicking the "Reset" button removes any manually made extra item selections, and makes the step 3 form update with the original item selection.

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step 3 by adding buttons for manual selection of extra DNA items, control items, and reset of the manually made selection. The buttons are placed at the top of the form, above the display of active used kits as plates.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Two new global variables defined: A JSONArray for keeping track of the originally selected extract names, and a flag indicating whether the original names have been loaded into the former.
    b. Function initPage() updated by adding event handlers for the new buttons in step 3. The "Add extract..." button is coupled to new function manualSelectExtract(), the "Add control..." button is coupled to new function manualSelectControl(), and the "Reset" button is coupled to new function manualSelectReset(). An event handler is coupled to the BASE selection dialog used for the two first buttons, coupling it to new callback function manuallySelectedExtract(event).
    c. Function initializeStep1(response) is updated by resetting the JSONArray for keeping track of the originally selected extract names, and the flag indicating whether the original names have been loaded into the former.
    d. Function initializeStep3(response) is updated by disabling the three new buttons together with the "Next" button until the kit tables have been loaded. Also, the kit table section is now hidden until the kit tables have been loaded, since older versions of the tables could confuse the user, when the form is re-displayed. The first time the function is used, the JSONArray for keeping track of the originally selected extract names is loaded with the latter, and the flag indicating whether the original names have been loaded is then set to true. The message displayed while the kit tables are loading has been changed from "Loading information about plate..." to the more correct "Loading information about kits...".
    e. Function kitPlatesInfoLoaded(response) updated by enabling the three new buttons together with the "Next" button after the kit tables have been loaded, and show the kit table section.
    f. New function manualSelectExtract(event) added. It calls Dialogs.selectItem('EXTRACT', 'plate', 1, url) to open up a BASE extract selection dialog with filters: Name: "%.d", Type: "DNA", and Remaining quantity (µg): ">0".
    g. New function manualSelectControl(event) added. It calls Dialogs.selectItem('EXTRACT', 'plate', 1, url) to open up a BASE extract selection dialog with filters: Name: "Horizon%.d", Type: "DNA", and Remaining quantity (µg): ">0".
    h. New function manuallySelectedExtract(event) added. It is callback function for the BASE extract selection dialog, and adds the names of the extracts selected in the dialog to the JSONArray of previously selected, after which function initializeStep3(event) is called to re-display the form.
    i. New function manualSelectReset() added. It is coupled to the "Reset" button, and resets the JSONArray of selected extract names to the original ones, after which function initializeStep3(event) is called to re-display the form.

comment:57 by olle, 9 years ago

Functional specification update:

  • Wizard "Register new extra material" in sub-section "Case registration" in section "Sample processing wizards" should be updated to make it possible to add a control lot number, when registering a control reference standard as extra material of type "DNA". To emphasize that the new attribute is only intended to be used for special types of extra material, the interface should be as follows:

    a. Under header "Control reference std." a check box and an input field should be placed.
    b. If the check box is unchecked (default), the input field is disabled.
    c. If the type is not "DNA", the check box should be unchecked, and the input field cleared and disabled.
    d. At registration, an optional control lot number should be stored in extract annotation "ControlLotNo" (Annotationtype.CONTROL_LOT_NO) for the created extra material DNA extract.

Design update:

  1. Javascript file extramaterial.js in resources/sampleproc/ updated:
    a. Function initializeStep2() updated by adding a check box and an input field between arrival date and operator delivery comment. An event handler couples the check box changes to new function controlOnChange(event). The control lot number input field is initially disabled.
    b. Function typeOnChange(event) updated to enable the control check box, if the type is "DNA", otherwise uncheck and disable the check box, as well as clearing and disabling the control lot number input field.
    c. New function controlOnChange(event) added. If the control check box is checked, the control lot number input field is enabled, otherwise it is cleared and disabled.
    d. Function submit() updated by transferring the value of control lot number input field as submitted info with JSONObject key "controllotno" for each item.
  2. Java servlet class/file SpecimenTubeServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "CreateExtraMaterial" to obtain the control lot number string for each item, and if the number is not null or an empty string, store the value as annotation of type Annotationtype.CONTROL_LOT_NO for the extract.

comment:58 by olle, 9 years ago

(In [3637]) Refs #801. Refs #816. Functional specification update:

  • Wizard "Register new extra material" in sub-section "Case registration" in section "Sample processing wizards" updated to make it possible to add a control lot number, when registering a control reference standard as extra material of type "DNA". To emphasize that the new attribute is only intended to be used for special types of extra material, the interface is as follows:

    a. Under header "Control reference std." a check box and an input field are placed.
    b. If the check box is unchecked (default), the input field is disabled.
    c. If the type is not "DNA", the check box is unchecked, and the input field cleared and disabled.
    d. At registration, an optional control lot number is stored in extract annotation "ControlLotNo" (Annotationtype.CONTROL_LOT_NO) for the created extra material DNA extract.
  1. Javascript file extramaterial.js in resources/sampleproc/ updated:
    a. Function initializeStep2() updated by adding a check box and an input field between arrival date and operator delivery comment. An event handler couples the check box changes to new function controlOnChange(event). The control lot number input field is initially disabled.
    b. Function typeOnChange(event) updated to enable the control check box, if the type is "DNA", otherwise uncheck and disable the check box, as well as clearing and disabling the control lot number input field.
    c. New function controlOnChange(event) added. If the control check box is checked, the control lot number input field is enabled, otherwise it is cleared and disabled.
    d. Function submit() updated by transferring the value of control lot number input field as submitted info with JSONObject key "controllotno" for each item.
  2. Java servlet class/file SpecimenTubeServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "CreateExtraMaterial" to obtain the control lot number string for each item, and if the number is not null or an empty string, store the value as annotation of type Annotationtype.CONTROL_LOT_NO for the extract.

comment:59 by olle, 9 years ago

Functional specification update:

  • Bug should be fixed in function isSpecimen(item) in utility javascript file extraction_utils.js in resources/sampleproc/, that did not return true for extra material items with names starting with figures, e.g. "12_Xtra_49". This led among other problems to no QIAcube position being defined for such an item in DNA/RNA extraction wizards.

Design update:

  1. Javascript file extraction_utils.js in resources/sampleproc/ updated in function isSpecimen(item) by modifying regular expression pattern to include item names starting with figures.
Last edited 9 years ago by olle (previous) (diff)

comment:60 by olle, 9 years ago

(In [3638]) Refs #801. Refs #816. Bug fixed in function isSpecimen(item) in utility javascript file extraction_utils.js in resources/sampleproc/, that did not return true for extra material items with names starting with figures, e.g. "12_Xtra_49". This led among other problems to no QIAcube position being defined for such an item in DNA/RNA extraction wizards.

  1. Javascript file extraction_utils.js in resources/sampleproc/ updated in function isSpecimen(item) by modifying regular expression pattern to include item names starting with figures.

comment:61 by olle, 9 years ago

Functional specification update:

  • Wizard "Register new extra material" in sub-section "Case registration" in section "Sample processing wizards" should be updated by displaying information on name conventions for extra material, and extended checks, that these are followed.

Design update:

  1. JSP file extramaterial.jsp in resources/sampleproc/ updated in step 2 by displaying new header section with information on name conventions for extra material.
  2. Javascript file extramaterial.js in resources/sampleproc/ updated in function nameOnChange(event) by adding checks that name:
    a. Does not start with underscore.
    b. Does not start with hyphen.
    c. Only contains letters, figures, underscores, and hyphens.
    d. Contains at least one letter.
Last edited 9 years ago by olle (previous) (diff)

comment:62 by olle, 9 years ago

(In [3639]) Refs #801. Refs #816. Wizard "Register new extra material" in sub-section "Case registration" in section "Sample processing wizards" updated by displaying information on name conventions for extra material, and extended checks, that these are followed:

  1. JSP file extramaterial.jsp in resources/sampleproc/ updated in step 2 by displaying new header section with information on name conventions for extra material.
  2. Javascript file extramaterial.js in resources/sampleproc/ updated in function nameOnChange(event) by adding checks that name:
    a. Does not start with underscore.
    b. Does not start with hyphen.
    c. Only contains letters, figures, underscores, and hyphens.
    d. Contains at least one letter.

comment:63 by olle, 9 years ago

(In [3641]) Refs #801. Refs #816. Since protocol and kit can be set for bioplate creation events, there is no need to use annotations for this:

  1. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated by removing bioplate annotation types BATCH_LIBRARY_PREPARATION_PROTOCOL_ID, BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME, BATCH_LIB_PREP_KIT_ID, and BATCH_LIB_PREP_KIT_NAME.
  2. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) by removing code for installing now removed bioplate annotations BATCH_LIBRARY_PREPARATION_PROTOCOL_ID, BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME, BATCH_LIB_PREP_KIT_ID, and BATCH_LIB_PREP_KIT_NAME.
  3. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) for command "CreateDnaOrLibPlate" to set library preparation protocol for the bioplate creation event. Code for setting values of now removed bioplate annotations BATCH_LIBRARY_PREPARATION_PROTOCOL_ID, BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME, BATCH_LIB_PREP_KIT_ID, and BATCH_LIB_PREP_KIT_NAME has been removed.

comment:64 by olle, 9 years ago

(In [3642]) Refs #801. Refs #816. MeLuDI index page updated:
a. MeLuDI sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated by removing entries for currently unused wizards.
b. MeLuDI "admin" section updated by removing entry for updating processed start lists with lot numbers from extracts in sub-section "Special conversion tools". This tool was only needed when updating to MeLuDI v1.3.2.

  1. JSP file index.jsp in resources/ updated:
    a. MeLuDI sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated by removing entries for currently unused wizards.
    b. MeLuDI "admin" section updated by removing entry for updating processed start lists with lot numbers from extracts in sub-section "Special conversion tools".

comment:65 by olle, 9 years ago

(In [3643]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated in step 3 when displaying used and available kits as plates. A kit is now not included if the number of reserved wells according to special placement rules is less than the number of needed wells:

  1. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetLibPrepKitsAsPlates" to count the number of reserved wells for a kit, and only include it in the returned JSONArray, if the number of reserved wells is greater or equal to the number of needed wells.

comment:66 by olle, 9 years ago

(In [3644]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated to only include items of interest in selection menus:

a. Step 1 updated to only include start lists with at least one item, that has not been placed on a start plate (library plate).
b. Step 2 updated to only include DNA extracts, that have not been placed on a start plate (library plate).
c. The counter next to the entry for wizard "Create new start DNA plate" on MeLuDI index page updated to only include start lists with at least one item, that has not been placed on a start plate (library plate).

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function initPage() updated to set value of new parameter "anItemNotOnLibPlate" to true, when calling ExtractionServlet for command "GetProcessedStartItemLists", in order to only include start lists with at least one item, that has not been placed on a start plate (library plate).
    b. Function initializeStep2() updated to set value of new parameter "itemNotOnLibPlate" to true, when calling ExtractionServlet for command "GetListOfItemsFromStartItemLists", in order to only include DNA extracts, that have not been placed on a start plate (library plate).
  2. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for commands "GetStartItemLists", "GetUnprocessedStartItemLists", and "GetProcessedStartItemLists", to obtain value for new Boolean parameter "anItemNotOnLibPlate" and use that as fourth argument, when calling updated private method JSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate).
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetListOfItemsFromStartItemLists", to obtain value for new Boolean parameter "itemNotOnLibPlate" and if the value is true, only include a DNA extract in the returned JSONArray, if new private method boolean dnaHasNoFpaChild(DbControl dc, Extract e) returns true.
    c. Private method JSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate) updated with new fourth argument "Boolean anItemNotOnLibPlate". if value of anItemNotOnLibPlate is true, new private method boolean dnaHasNoFpaChild(DbControl dc, Extract e) is called for DNA extracts in the start lists, in order to only include start lists with at least one item, that has not been placed on a start plate (library plate).
    d. New private method boolean dnaHasNoFpaChild(DbControl dc, Extract e) added. It checks whether an extract is of type DNA and has no FPA child items, in which case it returns true, else false.
  3. JSP file index.jsp in resources/ updated in counter for entry for wizard "Create new start DNA plate" to display value of new counter "start-lists-processed-an-item-not-on-lib-plate".
  4. Java counter service class/file CounterService.java in src/net/sf/basedb/meludi/counter/ updated in private method void countItemLists(DbControl dc, JSONObject json) to count the number of processed start lists with at least one item, that has not been placed on a start plate (library plate), and return the number with JSON key "start-lists-processed-an-item-not-on-lib-plate".

comment:67 by olle, 9 years ago

(In [3646]) Refs #801. Refs #816. Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated:
a. Bug fixed that blocked registration, unless a reagent lot number file had been downloaded.
b. Registration is now blocked unless a kit name is entered.
c. Fields are now cleared if wizard is restarted.

  1. Javascript file add_new_libprep_kit.js in resources/libprep/ updated:
    a. New global boolean variable kitNameIsValid is added.
    b. Function initPage() updated by adding new event handler kitNameOnChange() to changes of kit name field values.
    c. Function initializeStep1() updated by calling function clearReagents() to clear reagent input fields.
    d. Function validateStep1() updated by calling function addConsumablesInput() to add reagent input to consumables JSONObject. Also checks that kit name is valid.
    e. Function clearReagents() updated to call new function kitNameOnChange() after reagent fields have been cleared, in order to mark blank name as invalid.
    f. New function kitNameOnChange() added. It checks that the entered kit name is not null or an empty string.
    g. Function parseReagentFile() updated by calling new function kitNameOnChange() after reagent field values have been updated, in order to check that kit name is valid.

comment:68 by olle, 9 years ago

(In [3647]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated by fix of bug that made existing kit items being overwritten with new data:

  1. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) for command "RegisterKits" to only update an existing kit, if parameter "overwrite" has value true (and otherwise only create a new kit item, if no previous kit item with the same name already exists).

comment:69 by olle, 9 years ago

(In [3648]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated with fix of bug in javascript convenience function for formatting dates in YYYY-MM-DD format, that led to initial zeroes not being inserted for month and day values < 10.

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated by fix of bug in convenience function formatDate(date) for formatting dates in YYYY-MM-DD format, that led to initial zeroes not being inserted for month and day values < 10.

comment:70 by olle, 9 years ago

(In [3649]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a4".

  1. Version number change to "1.3.4a4":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:71 by olle, 9 years ago

(In [3650]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:72 by olle, 9 years ago

(In [3652]) Refs #801. Refs #816. A new wizard, "Inspect start DNA plate", added in section "Library preparation wizards", sub-section "Start DNA plate wizards":

a. Step 1 shows a menu of created start plates (library plates), from which one can be chosen.
b. Step 2 displays data for the selected start plate, similar to that shown in step 4 of wizard "Create new start DNA plate", except that no data can be changed (fields are disabled). However, it is possible to select what information to display for each cell in the plate display, including warnings.
c. Step 4 includes a button for creating a library preparation file for download.
d. Step 4 includes a button for creating a library preparation dilution protocol/report copy. The created document has the name "Dilution Report" instead of "Dilution Protocol".

  1. JSP file index.jsp in resources/ updated with new entry "Inspect start DNA plate" added in section "Library preparation wizards", sub-section "Start DNA plate wizards". It is coupled to new JSP file inspect_start_plate.jsp in resources/libprep/, and counter "dna-plates".
  2. New JSP file inspect_start_plate.jsp in resources/libprep/ added. It is coupled to new javascript file inspect_start_plate.js, also in resources/libprep/.
  3. New javascript file inspect_start_plate.js in resources/libprep/ added, based on javascript file select_dna_for_start_plate.js. While much of the functionality is re-used, some of the most notable changes are as follows:
    a. Function initPage() calls DnaServlet with command "GetStartPlates" to get data on existing start plates returned to callback function initializeStep1(response).
    b. Function initializeStep1(response) fills a start plate selection menu with returned start plate data. Each entry shows start plate name, number of MeLuDI and extra items, respectively, and the registration date of the plate.
    c. Function initializeStep2(event) retrieves JSON data for the selected start plate and fills form fields with data for the plate, and cells in the plate view with data for the DNA extracts on the plate, after which Plate.paint(Plate.getWells()) is called to create the plate view.
    d. Function createProtocol() calls frm.submit() to change JSP file to libprep_dilution_protocol2.jsp to create a dilution report from submitted data, where docMode is set to "report".
  4. JSP file libprep_dilution_protocol2.jsp in resources/libprep/ updated in protocol header to set id for dilution protocol date name to "protocolDateName", making it possible to set the name from javascript.
  5. Javascript file libprep_dilution_protocol.js in resources/libprep/ updated in function initializeProtocol(submitInfoJsonStr) to set docMode to "protocol" by default, and to adjust the header name and dilution protocol date name, depending on whether docMode is set to "protocol" or "report".
  6. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function createProtocol() to set value of submitted parameter docMode to "protocol", instead of "report".
  7. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) with new command "GetStartPlates". It performs a query to obtain information on plates of desired type and with names starting with desired prefix. Data for the found plates and extracts on them are returned in a JSON format similar to that used for step 4 in wizard "Create new start DNA plate", in order to reuse as much javascript functionality, as possible.

comment:73 by olle, 9 years ago

(In [3653]) Refs #801. Refs #816. Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated in table in step 2 to add tool tip with name of kit to button for opening edit pop-up dialog for a kit, in order to easier find the correct button, when the table is long:

  1. Javascript file inspect_libprep_kit_data.js in resources/libprep/ updated in function updateDetailsTable() to add tool tip with name of kit to button for opening edit pop-up dialog for a kit.

comment:74 by olle, 9 years ago

(In [3654]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a5".

  1. Version number change to "1.3.4a5":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:75 by olle, 9 years ago

(In [3655]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:76 by olle, 9 years ago

(In [3656]) Refs #801. Refs #816. A new wizard, "Inspect used library preparation kits" added in section "Library preparation wizards", sub-section "Reagent kit management wizards":

a. It contains a single step, where used and active library preparation kits are displayed as half-plates, in the same manner as in step 3 of wizard "Create new start DNA plate".
b. At the top is a menu for selecting 0-48 reserved FPA wells, to be indicated in the plate view.
c. A list of unused kits is shown below the plate views of used and active kits.

  1. JSP file index.jsp in resources/ updated with new entry "Inspect used library preparation kits" added in section "Library preparation wizards", sub-section "Reagent kit management wizards". It is coupled to new JSP file inspect_libprep_used_kits.jsp in resources/libprep/.
  2. New JSP file inspect_libprep_used_kits.jsp in resources/libprep/ added. It is coupled to new javascript file inspect_libprep_used_kits.js, also in resources/libprep/.
  3. New javascript file inspect_libprep_used_kits.js in resources/libprep/ added, based on step 3 of javascript file select_dna_for_start_plate.js:
    a. Function initPage() calls function initializeStep1(), which in turn calls LibPrepServlet with command "GetLibPrepKitsAsPlates" and parameter numItems set to the value of the number of reserved FPA wells, selected in the menu. The returned data is sent to callback function kitPlatesInfoLoaded(response).
    b. Function kitPlatesInfoLoaded(response) displays half-plate views of used and active kits, followed by a list of unused kits. Name and expiration date are shown for all kits, and also number of times used for the used and active kits.
    c. Selection changes in the menu for selecting the number of reserved FPA wells are coupled to new function numReservedCellsOnChange(event), that calls function initializeStep1() to redraw the web form.

comment:77 by olle, 9 years ago

(In [3657]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a6".

  1. Version number change to "1.3.4a6":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:78 by olle, 9 years ago

(In [3658]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:79 by olle, 9 years ago

(In [3660]) Refs #801. Refs #816. Case summary updated in "Library" section to display links to library preparation protocol and kit for DNA extracts on DNA start library plates:

  1. JSP file case_summary.jsp in resources/reports/ updated by adding table rows for library preparation protocol and kit, above the row for remaining quantity. The new rows are given id values "lib.libPrepProtocol" and "lib.libPrepKit", respectively.
  2. Javascript file case_summary.js in resources/reports/ updated to set links to library preparation protocol and kit from data obtained from JSONObject of DNA library extract for JSON keys "libPrepProtocol" and "libPrepKit", respectively.
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetCaseInfo" to obtain library preparation protocol and kit from creation event of library DNA extract, and return the data for JSON keys "libPrepProtocol" and "libPrepKit", respectively, after having the data processed by JsonUtil.getProtocolAsJSON(Protocol p) and JsonUtil.getKitAsJSON(Kit k).
  4. Java utility class/file JsonUtil.java in src/net/sf/basedb/meludi/ updated with new public static method JSONObject getKitAsJson(Kit k). It returns a JSONObject with information about the kit id, name, and a flag indicating whether the item may be edited.

comment:80 by olle, 9 years ago

(In [3661]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a7".

  1. Version number change to "1.3.4a7":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:81 by olle, 9 years ago

(In [3662]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:82 by olle, 9 years ago

(In [3667]) Refs #801. Refs #816. Wizards "Create new start DNA plate" and "Inspect start DNA plate" updated to clearly state the origin of presented values in the wells of the start plate display:

a. The text next to the check box for showing bioplate location extended with the clarification "(orig. DNA)".
b. When check box for "QubitConc" is checked, both values for Qubit concentration of parent DNA and calculated aliquot concentration are now shown in each used well, where the former is appended by text "(orig.)", and the latter by "(calc.)".
c. Creation of the JSONArray for the plate wells has been re-written, to avoid problems in the future with variables for different wells referring to the same source variable. Creation of the FPA and FPB parts of the plate is therefore separated, and a new function createByParentName(parentName, name) is introduced to create a clone of the JSON data for the parent DNA extract.
d. Function createProtocol() in javascript file select_dna_for_start_plate.js updated to set value of submitted parameter docMode to "protocol", instead of "report".

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated:
    a. Style definitions to show/hide fields "origqubitconc" and "calcqubitconc" added.
    b. Text next to the check box for showing bioplate location extended with the clarification "(orig. DNA)".
    c. Plate table definition updated with classes "hide-origqubitconc" and "hide-calcqubitconc".
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. Function nextPlateNameLoaded(response) updated to create JSONArrays for FPA and FPB wells separately, and call new function createByParentName(parentName, name) to create a clone of the JSON data for the parent DNA extract.
    b. New function createByParentName(parentName, name) added. It creates a clone of the JSON data for the parent DNA extract having name given by argument parentName.
    c. Function toggleInfo(event) updated for event target "qubitconc" (coupled to check box "QubitConc") to toggle display of values in fields "origqubitconc" and "calcqubitconc".
    d. Function downloadLibPrepFile() updated to get id for for parent DNA in plate well from JSON object well.extract.info.origId instead of well.extract.id.
    e. Function createProtocol() updated to set value of submitted parameter docMode to "protocol", instead of "report".
    f. Function getWellText(well) updated to use new JSON keys for parent DNA data, and to calculate aliquot concentration by dividing the concentration for parent DNA with the dilution factor. When check box for "QubitConc" is checked, both concentration values are shown in each used well, where the former is appended by text "(orig.)", and the latter by "(calc.)".
  3. JSP file inspect_start_plate.jsp in resources/libprep/ updated with corresponding changes as for select_dna_for_start_plate.jsp.
  4. Javascript file inspect_start_plate.js in resources/libprep/ updated with corresponding changes as for select_dna_for_start_plate.js, with the following exceptions:
    a. Function initializeStep2(event) updated to create JSONArrays for FPA and FPB wells separately, and call new function createByParentName(parentName, name) to create a clone of the JSON data for the parent DNA extract.
    d. Function createProtocol() unchanged.
  5. Javascript file libprep_dilution_protocol.js in resources/libprep/ updated in function tableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName) to use new JSON keys for parent DNA data.
  6. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetStartPlates" to store JSON data for parent DNA in a well using new JSON keys "origLocation", "origId", "origQubitConc", "origDeltaCt", "origBioWell", and "origName". Also, all wells are now scanned for information, including the FPB half of the plate (however, source extracts are only counted in the FPA half).

comment:83 by olle, 9 years ago

Bug fix:

  • A bug was introduced 2015-11-05 in case registration wizards through change set [3575], where wizard "Create label file for a number of new cases" in section "Sample processing wizards", sub-section "Case registration", was updated to store the highest case number, for which labels have been created, and use this as start number, the next time labels should be created. Command "CountCases" in java servlet LabelGenerationServlet was updated to the described functionality, but it was missed that the same command was used by wizards "Register new cases without patient info" and "Pathology referral form registration", where no change of functionality was desired, at least not a coupling to the highest case number, for which labels have been created.

Design update:

  • Command "CountCases" in java servlet LabelGenerationServlet is restored to its previous functionality, and a new command is created for label generation purposes. In order to increase clarity, names of some convenience methods are changed to clearly indicate that they are related to label generation.
  1. Javascript file labelgeneration.js in resources/sampleproc/ updated in function initPage() to call new command "GetLastLabelCase" in java servlet LabelGenerationServlet instead of command "CountCases".
  2. Java servlet class/file LabelGenerationServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "CountCases" by restoring functionality to the previously used, where the number of registered cases is returned.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "GetLastLabelCase" to call renamed private method long fetchLabelCaseCount() (previously called "long fetchCaseCount()") to obtain the highest used case number, for which labels have been created. If this fails, the highest stored case number in the database is used.
    c. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetLabelFile" to call renamed private method void updateLabelCaseCount(int endCaseNumber) (previously called "updateCaseCount(int endCaseNumber)") to update the highest used case number, for which labels have been created.
    d. Private method long fetchCaseCount() renamed long fetchLabelCaseCount(). It opens the case label info file and reads the value of the highest used case number, for which labels have been created, and then returns the value.
    e. Private method void updateCaseCount(int endCaseNumber) renamed void updateLabelCaseCount(int endCaseNumber). It opens the case label info file for writing, and stores the given case number in it.

comment:84 by olle, 9 years ago

(In [3668]) Refs #801. Refs #816. Bug fix: A bug was introduced 2015-11-05 in case registration wizards through change set [3575], where wizard "Create label file for a number of new cases" in section "Sample processing wizards", sub-section "Case registration", was updated to store the highest case number, for which labels have been created, and use this as start number, the next time labels should be created. Command "CountCases" in java servlet LabelGenerationServlet was updated to the described functionality, but it was missed that the same command was used by wizards "Register new cases without patient info" and "Pathology referral form registration", where no change of functionality was desired, at least not a coupling to the highest case number, for which labels have been created.

Design update: Command "CountCases" in java servlet LabelGenerationServlet is restored to its previous functionality, and a new command is created for label generation purposes. In order to increase clarity, names of some convenience methods are changed to clearly indicate that they are related to label generation.

  1. Javascript file labelgeneration.js in resources/sampleproc/ updated in function initPage() to call new command "GetLastLabelCase" in java servlet LabelGenerationServlet instead of command "CountCases".
  2. Java servlet class/file LabelGenerationServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "CountCases" by restoring functionality to the previously used, where the number of registered cases is returned.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "GetLastLabelCase" to call renamed private method long fetchLabelCaseCount() (previously called "long fetchCaseCount()") to obtain the highest used case number, for which labels have been created. If this fails, the highest stored case number in the database is used.
    c. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetLabelFile" to call renamed private method void updateLabelCaseCount(int endCaseNumber) (previously called "updateCaseCount(int endCaseNumber)") to update the highest used case number, for which labels have been created.
    d. Private method long fetchCaseCount() renamed long fetchLabelCaseCount(). It opens the case label info file and reads the value of the highest used case number, for which labels have been created, and then returns the value.
    e. Private method void updateCaseCount(int endCaseNumber) renamed void updateLabelCaseCount(int endCaseNumber). It opens the case label info file for writing, and stores the given case number in it.

comment:85 by olle, 9 years ago

Functional specification update:

  • Wizard "Create label file for a number of new cases" in sub-section "Case registration" in section "Sample processing wizards" should be updated by changing default value for max number of tubes/case from 2 to 1.

Design update:

  1. JSP file labelgeneration.jsp in resources/sampleproc/ updated by changing default value for max number of tubes/case from 2 to 1.
Last edited 9 years ago by olle (previous) (diff)

comment:86 by olle, 9 years ago

(In [3669]) Refs #801. Refs #816. Wizard "Create label file for a number of new cases" in sub-section "Case registration" in section "Sample processing wizards" updated by changing default value for max number of tubes/case from 2 to 1:

  1. JSP file labelgeneration.jsp in resources/sampleproc/ updated by changing default value for max number of tubes/case from 2 to 1.

comment:87 by olle, 9 years ago

Functional specification update:

  • Case registration wizards "Register new cases without patient info" and "Pathology referral form registration" should be updated in last step to set default number of sections to 0 instead of 1, if comment "Utkarvad." (Carved out) has been added by clicking a dedicated button, but comment "MNB." (Medium needle biopsy) has not been added by clicking a dedicated button.

Design update:

  1. Javascript file specimentube.js in resources/sampleproc/ updated:
    a. Functions addCommentGeneral(event) and addComment(event) to call new function setNumberOfSectionsFromComment(event) at end of function.
    b. New function setNumberOfSectionsFromComment(event) added. It checks the added operator delivery comment for a specimen tube, and if "Utkarvad." is present, but not "MNB.", the number of sections is set to 0, else 1.
  2. Javascript file persinfo.js in resources/personal/ updated:
    a. Functions addCommentGeneral(event) and addComment(event) to call new function setNumberOfSectionsFromComment(event) at end of function.
    b. New function setNumberOfSectionsFromComment(event) added. It checks the added operator delivery comment for a specimen tube, and if "Utkarvad." is present, but not "MNB.", the number of sections is set to 0, else 1.
Last edited 9 years ago by olle (previous) (diff)

comment:88 by olle, 9 years ago

(In [3670]) Refs #801. Refs #816. Case registration wizards "Register new cases without patient info" and "Pathology referral form registration" updated in last step to set default number of sections to 0 instead of 1, if comment "Utkarvad." (Carved out) has been added by clicking a dedicated button, but comment "MNB." (Medium needle biopsy) has not been added by clicking a dedicated button:

  1. Javascript file specimentube.js in resources/sampleproc/ updated:
    a. Functions addCommentGeneral(event) and addComment(event) to call new function setNumberOfSectionsFromComment(event) at end of function.
    b. New function setNumberOfSectionsFromComment(event) added. It checks the added operator delivery comment for a specimen tube, and if "Utkarvad." is present, but not "MNB.", the number of sections is set to 0, else 1.
  2. Javascript file persinfo.js in resources/personal/ updated:
    a. Functions addCommentGeneral(event) and addComment(event) to call new function setNumberOfSectionsFromComment(event) at end of function.
    b. New function setNumberOfSectionsFromComment(event) added. It checks the added operator delivery comment for a specimen tube, and if "Utkarvad." is present, but not "MNB.", the number of sections is set to 0, else 1.

comment:89 by olle, 9 years ago

(In [3671]) Refs #801. Refs #816. Bug fix: A bug was introduced 2015-12-15 in wizard "Create new start DNA plate" through change set [3667], when wizards "Create new start DNA plate" and "Inspect start DNA plate" were updated to clearly state the origin of presented values in the wells of the start plate display. Functions for registering a new start plate and updating the used library preparation kit were not updated with the new JSON keys.

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in functions submit() and submissionResults(response) to use JSON expression dna.info.origId instead of dna.id to get the id value of the parent DNA extract for a plate well.

comment:90 by olle, 9 years ago

(In [3672]) Refs #801. Refs #816. Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated by recommending that library preparation kit names are in format "LP_kit_xxx", where "xxx" = zero-filled number (previously format "ML_kit_xxx" was recommended):

  1. JSP file add_new_libprep_kit.jsp in resources/libprep/ updated by changing recommended format for library preparation kit names from "ML_kit_xxx" to "LP_kit_xxx".

comment:91 by olle, 9 years ago

(In [3673]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a8".

  1. Version number change to "1.3.4a8":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:92 by olle, 9 years ago

(In [3674]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:93 by olle, 9 years ago

(In [3675]) Refs #801. Refs #816. Bug fix: Registration in wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" did not work when the proposed start DNA plate name was changed by the user in step 4 (a start plate named "main" was created, and aliquot names were given an extra suffix ".d" and ".d2", instead of ".fpa" and ".fpb", respectively). The reason turned out to be a bug in javascript file select_dna_for_start_plate.js in resources/libprep/, method plateInfoLoaded(response), which is callback function to function plateNameOnChange(event) after calling ExtractionServlet with command "CheckIfStartPlateNameUsed" to check if the new plate name was used earlier.

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in method plateInfoLoaded(response), which is callback function to function plateNameOnChange(event) after calling ExtractionServlet with command "CheckIfStartPlateNameUsed" to check if the new plate name was used earlier. Variable Plate.name is now set to value of variable plateInfo.name instead of name.

comment:94 by olle, 9 years ago

(In [3676]) Refs #801. Refs #816. Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated in step 1 by inserting a proposed name in the kit name field. The proposed kit name is of format "LP_kit_xxx", where "xxx" is the zero-filled number following the highest used number for existing library preparation kits.

  1. Javascript file add_new_libprep_kit.js in resources/libprep/ updated:
    a. Function initializeStep1() to call new command "GetNextAutoGeneratedKitName" in java servlet LibPrepServlet with new callback function nextKitNameLoaded(response).
    b. New function nextKitNameLoaded(response) added. It retrieves the next kit name from the servlet response and inserts it in the kit name field.
  2. Java servlet class/file LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "GetNextAutoGeneratedKitName". It performs a database query to find the library preparation kit name with highest number, and then returns the next number in the series.

comment:95 by olle, 9 years ago

(In [3677]) Refs #801. Refs #816. Javascript file updated in commented-out code to use new JSON key value:

  1. Javascript file inspect_start_plate.js in resources/libprep/ updated in commented-out code in function getWellText(well) to use new JSON key when referring to delta-Ct value for parent DNA.

comment:96 by olle, 9 years ago

(In [3678]) Refs #801. Refs #816. Bug fix: Wizard "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 1 to show number of MeLuDI and extra material items for menu items in start DNA plate menu, also when the number of MeLuDI items equals 0:

  1. Javascript file inspect_start_plate.js in resources/libprep/ updated in function initializeStep1(response) to show number of MeLuDI and extra material items for menu items in start DNA plate menu, also when the number of MeLuDI items equals 0.

comment:97 by olle, 9 years ago

(In [3679]) Refs #801. Refs #816. Wizards "Create new start DNA plate" and "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated when a library preparation dilution protocol/report is created to show description for parent DNA in "Remark" column:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function createByParentName(parentName, name) to set JSON object info.origDescription to description for parent DNA.
  2. Javascript file inspect_start_plate.js in resources/libprep/ updated in function createByParentName(parentName, name) to set JSON object info.origDescription to description for parent DNA.
  3. Javascript file libprep_dilution_protocol.js in resources/libprep/ updated in function tableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName) to set comment to value of JSON object info.origDescription.

comment:98 by olle, 9 years ago

(In [3680]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a9".

  1. Version number change to "1.3.4a9":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:99 by olle, 9 years ago

(In [3681]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:100 by olle, 9 years ago

(In [3682]) Refs #801. Refs #816. Wizards "Create new start DNA plate" and "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step showing plate view to let entered minimum volume of DNA indicate the minimum volume per aliquot, not removed volume (which is twice that amount):

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step showing plate view to specify that the entered minimum volume of DNA is per aliquot, not removed volume (which is twice that amount).
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function getWellText(well) to display a warning if the aliquot DNA volume is less than the entered minimum volume.
  3. JSP file inspect_start_plate.jsp in resources/libprep/ updated in step showing plate view to specify that the entered minimum volume of DNA is per aliquot, not removed volume (which is twice that amount).
  4. Javascript file inspect_start_plate.js in resources/libprep/ updated in function getWellText(well) to display a warning if the aliquot DNA volume is less than the entered minimum volume.

comment:101 by olle, 9 years ago

Functional specification update:

  • DNA/RNA extraction wizards should be updated in step 2 by exchanging "Extraction" for "Deparaffinization" in the section header, since the actual DNA/RNA extraction is performed in the following QIAcube step.

Design update:

  1. JSP files
    extraction_preparation.jsp,
    extraction_startlist_removal.jsp,
    extraction_registration.jsp,
    extraction_formcopy.jsp,
    all in resources/sampleproc/ updated in step 2 by exchanging "Extraction" for "Deparaffinization" in the section header.
Last edited 9 years ago by olle (previous) (diff)

comment:102 by olle, 9 years ago

(In [3683]) Refs #801. Refs #816. DNA/RNA extraction wizards updated in step 2 by exchanging "Extraction" for "Deparaffinization" in the section header, since the actual DNA/RNA extraction is performed in the following QIAcube step:

  1. JSP files
    extraction_preparation.jsp,
    extraction_startlist_removal.jsp,
    extraction_registration.jsp,
    extraction_formcopy.jsp,
    all in resources/sampleproc/ updated in step 2 by exchanging "Extraction" for "Deparaffinization" in the section header.

comment:103 by olle, 9 years ago

(In [3684]) Refs #801. Refs #816. Library preparation dilution protocol created in start DNA plate wizards updated to highlight DNA, water, and solution volume values in red if aliquot DNA volume < 1.0 µl:

  1. JSP file libprep_dilution_protocol2.jsp in resources/libprep/ updated by defining class "lowvolume" with color style set to red.
  2. Javascript file libprep_dilution_protocol.js in resources/libprep/ updated in function tableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName) to display DNA, water, and solution volume values in style for class "lowvolume" if aliquot DNA volume < 1.0 µl.

comment:104 by olle, 9 years ago

(In [3685]) Refs #801. Refs #816. Wizards for creating and inspecting a start plate in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated to allow creation of a lab protocol for library preparation. It includes a plate view including the information shown on the Illumina MiSeq software plate view, but with additional information. Items marked with an asterisk are included in the Illumina plate view:

Header:
a. Protocol name and MeLuDI version.
b. * Start plate name.
c. Start plate description.
d. Library preparation kit name.

Well data:
e. * Compressed uppercase aliquot name.
f. Dilution information with optional highlight for low DNA volume.
g. * Index primers.

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated:
    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.
    b. A new form tag with name "meludi2" added, with an action coupled to new external JSP file libprep_plate_protocol2.jsp.
    c. Tag id "tsLibPrepKitNo" for start plate library preparation kit exchanged for "tsLibPrepKit".
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    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.
    b. Function downloadLibPrepFile() updated by obtaining bioplate data for submit info by calling new function fetchBioplateData().
    c. New function fetchBioplateData() added. It contains code previously in function downloadLibPrepFile(), in order to make it available to other functions.
    d. 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.
    e. New function fetchSubmitInfo() added. It contains code previously in function createProtocol(), in order to make it available to other functions.
    f. 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.
    g. 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).
    h. Tag id "tsLibPrepKitNo" for start plate library preparation kit exchanged for "tsLibPrepKit".
  3. JSP file inspect_start_plate.jsp in resources/libprep/ updated:
    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.
    b. A new form tag with name "meludi2" added, with an action coupled to new external JSP file libprep_plate_protocol2.jsp.
  4. Javascript file inspect_start_plate.js in resources/libprep/ updated:
    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.
    b. Function downloadLibPrepFile() updated by obtaining bioplate data for submit info by calling new function fetchBioplateData().
    c. New function fetchBioplateData() added. It contains code previously in function downloadLibPrepFile(), in order to make it available to other functions.
    d. 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.
    e. New function fetchSubmitInfo() added. It contains code previously in function createProtocol(), in order to make it available to other functions.
    f. 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.
    g. 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).
    h. Function plateInfoLoaded(response) updated by setting plate name to name in response data.
  5. New JSP file libprep_plate_protocol2.jsp in resources/libprep/ added. Start plate name, description, library preparation kit name, pool schema, and JSONArray with data for DNA aliquots in wells are retrieved from request parameters, after which a list or plate view HTML layout is created for a plate with 8x12 wells. The JSP file is coupled to new javascript file libprep_plate_protocol.js in resources/libprep/.
  6. New javascript file libprep_plate_protocol.js in resources/libprep/ added.
    a. Function initializeProtocol(submitInfoJsonStr) obtains data for the DNA items on the plate and then calls either function viewAsList(list) or viewAsPlate(list, schema), depending on the value of attribute view.
    b. Function viewAsList(list) calls function libListEntry(lib) for each aliquot in the input item list, in order to create a list of data for the wells on the start plate.
    c. Function viewAsPlate(list, schema) sets plate extracts for wells for each aliquot in the input item list, after which Plate.paint(Plate.getWells()) is called to draw a plate view of the start plate.
    d. Function painter.getClassNameForWell(well, schema) sets the background for a well to green for FPA aliquots, and blue for FPB aliquots.
    e. Function painter.getWellText(well, schema) calls function painter.fetchPlateViewAliquotName(name) to obtain a compressed aliquot name to display for a well, prints the DNA and water dilution volumes, with optional highlight for low DNA volume, and prints Illumina index 1 and 2 primers for each well.
    f. Function painter.fetchPlateViewAliquotName(name) returns a compressed aliquot name by concatenating the parts before first dot and after last dot and convert to uppercase.

comment:105 by olle, 9 years ago

MeLuDI version number change:

  • Since the next release of MeLuDI probably will include the first version of library preparation wizards, the version number will be moved from 1.3.3 to 1.4.0. In order to be able to keep track of alpha releases since 1.3.3, the alpha version release number sequence will not be changed, i.e. alpha release version 1.3.4a9 will be followed by 1.4.0a10.
Last edited 9 years ago by olle (previous) (diff)

comment:106 by olle, 9 years ago

Milestone: MeLuDI v1.3.4MeLuDI v1.4.0

Milestone renamed

comment:107 by olle, 9 years ago

(In [3686]) Refs #801. Refs #816. Updates due to version number change to "1.4.0a10".

  1. Version number change to "1.4.0a10":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:108 by olle, 9 years ago

(In [3687]) Refs #801. Refs #816. Updates due to version number change to "1.4.0-dev".

  1. Version number changed to "1.4.0-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:109 by olle, 9 years ago

(In [3693]) Refs #801. Refs #816. Wizard "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated:
a. Javascript code for creating plate layout simplified, since the JSON input now contains data from a stored start plate.
b. Servlet code updated to include database id of DNA aliquots in wells, for future use.

  1. Javascript file inspect_start_plate.js in resources/libprep/ updated:
    a. Function initializeStep2(event) updated by simplifying code for creating plate layout, since the JSON input now contains data from a stored start plate.
    b. Function createByParentName(parentName, name) updated with new third argument for DNA id to createByParentName(parentName, name, id). The returned JSONObject contains the input "id" value for JSON key "id".
  2. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetStartPlates" by including database id of DNA aliquots in wells in returned JSONObject.

comment:110 by olle, 9 years ago

Functional specification update:

  • Wizard "DNA/RNA registration/quantification" in sub-section "DNA/RNA extraction wizards" in section "Sample processing wizards" should be updated to support import of DNA concentration values from file created by new version of Qubit instrument (previously used instrument was allegedly version 2, and the new one version 3). Both versions of the Qubit file should be supported, without the need for the user to indicate what version of the instrument was used.

Design discussion:

  • The new version of the file differs in at least 3 ways from the previous one:
    a. Names of some columns have changed.
    b. New columns have been added.
    c. All column data, both column names and values, are now enclosed in double quotes.

    The name of one of the core columns have changed from "Assay Conc." to "Qubit® tube conc.". The registered trademark character "®" may lead to problems when the concentration column should be identified from the header line, if the file is not read using the correct encoding, which is ISO-8859-1 (at least this works for the intended purposes).

Design update:

  1. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. Function qubitFileOnChange() updated to call FileReader function readAsText() with an extra argument specifying encoding ISO-8859-1, i.e. readAsText(file, 'ISO-8859-1').
    b. Function parseQubitFile(data) updated. Double quotes are replaces with blanks in all lines. New function fetchQubitFileHeaderVersion(header) is called with the Qubit file header line as input to find the header version number (local use only). New function fetchQubitFileColumnName(key, headerVersion) is called with locally defined JSON keys and found Qubit file header version to find names of columns with data for name, concentration, units, and dilution factor, for use as argument "col" when calling function findColumn(columns, col) to find index of desired column.
    c. New function fetchQubitFileHeaderVersion(header) added. It returns a local header version number, given the Qubit file header line.
    d. New function fetchQubitFileColumnName(key, headerVersion) added. It returns the name of the desired column, given the Qubit file header version.

comment:111 by olle, 9 years ago

(In [3694]) Refs #816. Refs #801. Wizard "DNA/RNA registration/quantification" in sub-section "DNA/RNA extraction wizards" in section "Sample processing wizards" updated to support import of DNA concentration values from file created by new version of Qubit instrument (previously used instrument was allegedly version 2, and the new one version 3). Both versions of the Qubit file are now supported, without the need for the user to indicate what version of the instrument was used.

  1. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. Function qubitFileOnChange() updated to call FileReader function readAsText() with an extra argument specifying encoding ISO-8859-1, i.e. readAsText(file, 'ISO-8859-1').
    b. Function parseQubitFile(data) updated. Double quotes are replaces with blanks in all lines. New function fetchQubitFileHeaderVersion(header) is called with the Qubit file header line as input to find the header version number (local use only). New function fetchQubitFileColumnName(key, headerVersion) is called with locally defined JSON keys and found Qubit file header version to find names of columns with data for name, concentration, units, and dilution factor, for use as argument "col" when calling function findColumn(columns, col) to find index of desired column.
    c. New function fetchQubitFileHeaderVersion(header) added. It returns a local header version number, given the Qubit file header line.
    d. New function fetchQubitFileColumnName(key, headerVersion) added. It returns the name of the desired column, given the Qubit file header version.

comment:112 by olle, 9 years ago

(In [3695]) Refs #801. Refs #816. Updates due to version number change to "1.4.0a11".

  1. Version number change to "1.4.0a11":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:113 by olle, 9 years ago

(In [3696]) Refs #801. Refs #816. Updates due to version number change to "1.4.0-dev".

  1. Version number changed to "1.4.0-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:114 by olle, 9 years ago

(In [3701]) Refs #801. Refs #816. Outermost README file updated for MeLuDI 1.4.0.

comment:115 by olle, 9 years ago

(In [3702]) Refs #801. Refs #816. Updates due to version number change to "1.4.0".

  1. Version number changed to "1.4.0":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:116 by olle, 9 years ago

(In [3703]) Refs #801. Refs #816. Section header "Library preparation wizards" updated by removing note describing the section contents as "Experimental":

  1. JSP file index.jsp in resources/ updated in section header "Library preparation wizards" by removing note describing the section contents as "Experimental":

comment:117 by olle, 9 years ago

(In [3705]) Refs #801. Refs #816. Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated to make the web form more user-friendly:

a. Columns for "Registration date", "Last updated", "Expiration date", "Active", "#Times used", "Unused FPA plate locations", and "Comment" moved to the beginning of the table row, after the kit name, since these data are more often checked/edited than the reagent lot numbers.
b. Each table row now has "Edit..." buttons both at the beginning and end of the row (only the one at the end needs to have a tool tip with the kit name).

  1. Javascript file inspect_libprep_kit_data.js in resources/libprep/ updated in function updateDetailsTable():
    a. Columns for "Registration date", "Last updated", "Expiration date", "Active", "#Times used", "Unused FPA plate locations", and "Comment" moved to the beginning of the table row, after the kit name.
    b. A new "Edit..." button added at the beginning of each table row.
    c. Only "Edit..." buttons at the end of a table row gets a tool tip with the kit name.

comment:118 by olle, 9 years ago

(In [3706]) Refs #801. Refs #816. Outermost README file updated for MeLuDI 1.4.0 by adding info on new wizard sections.

comment:119 by olle, 9 years ago

Resolution: fixed
Status: assignedclosed

Ticket closed as MeLuDI version 1.4.0 has been created.

comment:120 by olle, 9 years ago

(In [3708]) Refs #836. Refs #816. Updates due to version number change to "1.4.1-dev".

  1. Version number changed to "1.4.1-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.
Note: See TracTickets for help on using tickets.