Opened 9 years ago

Closed 8 years ago

#801 closed task (fixed)

MeLuDI library preparation wizards first version

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

Description

This ticket covers updates related to the first version of the MeLuDI library preparation wizards. The purpose of the ticket is to collect code changes related to the first library preparation wizards in one place. The ticket may span over several MeLuDI versions, since it was decided to release new additions for testing outside the development environment at an early stage, in order to get feedback for improvements.

Change History (185)

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).
Last edited 9 years ago by olle (previous) (diff)

comment:3 by olle, 9 years ago

Functional specification.

(Placeholder for functional specification)

comment:4 by olle, 9 years ago

Design discussion.

(Placeholder for design discussion)

comment:5 by olle, 9 years ago

(In [3449]) Refs #801. Refs #792. First experimental version of library preparation wizards for MeLuDI:

Updates of previous files:

  1. XML servlet configuration file servlets.xml in META-INF/ updated with entries for new servlet classes LibPrepServlet and DnaServlet.
  2. JSP file index.jsp in resources/ updated with new section for library preparation wizards, containing links to three wizards. In view of the experimental character of the latter (especially the ones related to protocol creation and barcode assignment), the section header has been given the extra caution "(Experimental - For testing only)".
  3. CSS file plate.css in resources\css\ updated by increasing the well width from 90 to 100 pixels, in view of the longer storage location names in MeLuDI, relative to Reggie.
  4. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new annotation types related to library preparation.
  5. Data access object class/file BioPlateType.java in src/net/sf/basedb/meludi/dao/ updated with new bioplate type LIBRARY, and allowing plate name prefix and number of digits in name to be editable.
  6. Data access object class/file Dna.java in src/net/sf/basedb/meludi/dao/ updated with new public static method List<Dna> toList(Collection<Extract> extracts).
  7. Data access object class/file MeludiRole.java in src/net/sf/basedb/meludi/dao/ updated with new roles LIBRARY_PREP and LIBRARY_PLATE_DESIGNER.
  8. Data access object class/file Subtype.java in src/net/sf/basedb/meludi/dao/ updated by adding new attribute String itemSuffix, and new public method BasicItem getLatestProjectDefault(DbControl dc).
  9. 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 types, and install barcodes.

New files related to library preparation:

  1. CSS file startplate.css in resources\css\ added. It is a modified version of plate.css, that restricts highlights to the left half of the plate, since any change in that half should be replicated with a corresponding change in the right half.
  2. Image file manual_dna.png in resources/images/ added.
  3. JSP and javascript files related to the first version of library preparation wizards added to resources/libprep/:
    a. assign_barcodes.js
    b. assign_barcodes.jsp
    c. auto_select_dna.js
    d. auto_select_dna.jsp
    e. dna_protocol.js
    f. dna_protocol.jsp
    g. dna_protocol2.jsp
    h. libprep_protocol.js
    i. libprep_protocol.jsp
    j. libprep_protocol2.jsp
    k. pools.js
    l. select_dna.js
    m. select_dna.jsp
    n. select_dna_for_start_plate.js
    o. select_dna_for_start_plate.jsp
    p. select_file.js
    q. select_file.jsp
  4. Data access object classes/files Library.java and PooledLibrary.java in src/net/sf/basedb/meludi/dao/ added.
  5. Java servlet classes/files DnaServlet.java and LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ added.

comment:6 by olle, 9 years ago

(In [3450]) Refs #801. Refs #792. Debug output in library preparation java servlets removed:

  1. Java servlet classes/files DnaServlet.java and LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated by removing debug output.

comment:7 by olle, 9 years ago

(In [3452]) Refs #801. Refs #792. Instruction file README in / updated by increasing minimum BASE version from 3.4 to 3.5 (needed for use of ItemList items).

comment:8 by olle, 9 years ago

Milestone: MeLuDI v1.3MeLuDI v1.3.1

Milestone renamed

comment:9 by olle, 9 years ago

Milestone: MeLuDI v1.3.1MeLuDI v1.3.2

Milestone changed to MeLuDI v1.3.2, as MeLuDI v1.3.1 has been released.

comment:10 by olle, 9 years ago

(In [3456]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by exchanging references to "Controller" for "Control":

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step 3 form by exchanging references to "Controller" for "Control".

comment:11 by olle, 9 years ago

(In [3457]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug for manual selection:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function manuallySelected(event) by fix of bug preventing placement of more than the first FPA aliquot (variables "row" and "column" had not been defined and given values, when used to find the FPB well on the right side of the plate from the FPA well).

comment:12 by olle, 9 years ago

(In [3458]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug for manual selection:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function manuallySelected(event) by fix of two bugs:
    a. Fix of bug in code creating JSONArray of modified wells. If the number of selected items was larger than the number of selected wells, the array previously included a gap of undefined array items between the modified FPA wells and FPB wells.
    b. Removal of test code making extra item placements starting from the upper left well and continuing downwards.

comment:13 by olle, 9 years ago

(In [3459]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by adapting routine for loading data from file to placing FPA and FPB aliquots on plate:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function parseDnaFile(data) adapting routine for loading data from file to placing FPA and FPB aliquots on plate.
  2. Javascript file select_file.js in resources/libprep/ updated by referring to DNA instead of RNA.

comment:14 by olle, 9 years ago

(In [3460]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug in routine for loading data from file, when column number 7 is addressed in the file:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function parseDnaFile(data) by fix of bug, when column number 7 is addressed in the file. The condition for checking what columns are allowed for FPA extracts uses a column variable adjusted to numbering columns 0-11, instead of 1-12, so the first column number for FPB extracts is 6, not 7.

comment:15 by olle, 9 years ago

(In [3461]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated by placing selected DNA extracts on plate depending on information on the last used column (1-6) for FPA extracts, using current TruSight library preparation kit. The columns are proposed according to a cyclic scheme, intending to make best use of the barcode reagents in a kit:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step 2 form by addition of pop-up menu for selecting last used column (1-6) for FPA extracts, using current TruSight library preparation kit. This will simulate the resulting proposed DNA layout of the plate. In the final program, the value for last used column is intended to be obtained from the last stored start plate, where the selected TruSight library preparation kit was used.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated by moving code for placing selected DNA items on plate from function barcodesLoaded(response) to nextPlateNameLoaded(response). The latter function also updated to place the DNA extracts in columns making best use of the barcode reagents in a kit.
Last edited 8 years ago by olle (previous) (diff)

comment:16 by olle, 9 years ago

(In [3462]) Refs #801. Refs #802. MeLuDI updated to sort MeLuDI items and extra material items by name when obtaining DNA items from start item lists:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetListOfItemsFromStartItemLists" to sort MeLuDI items and extra material items by name, before combining them into a final item list. Previously, in each category, only items from each input start item list were guaranteed to come in alphabetical order.

comment:17 by olle, 9 years ago

(In [3463]) Refs #801. Refs #802. MeLuDI "admin" section updated by removing entry for creating start lists from selected start plates in sub-section "Special conversion tools". This tool was only needed when updating to MeLuDI v1.3.1, and will not work with start plates created in the library preparation wizard, since the needed annotation data does not exist:

  1. JSP file index.jsp in resources/ updated in "admin" section by removing entry for creating start lists from selected start plates in sub-section "Special conversion tools".

comment:18 by olle, 9 years ago

(In [3464]) Refs #801. Refs #802. Updates due to version number change to "1.3.2a1".

  1. Version number change to "1.3.2a1":
    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:19 by olle, 9 years ago

(In [3465]) Refs #801. Refs #802. Updates due to version number change to "1.3.2-dev".

  1. Version number change to "1.3.2-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:20 by olle, 8 years ago

Milestone: MeLuDI v1.3.2Milestone MeLuDI v1.3.3

Milestone changed to MeLuDI v1.3.3, as MeLuDI v1.3.2 has been released.

comment:21 by olle, 8 years ago

(In [3512]) Refs #801. Refs #815. Updates due to version number change to "1.3.3-dev".

  1. Version number change to "1.3.3-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:22 by olle, 8 years ago

Functional specification update:

  • It may take some time before the list of DNA items from selected start item lists is loaded in step 2 of wizard "Create new start DNA plate". The "Next" button should therefore be disabled until the list is loaded, in order to avoid problems.

Design update:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in functions initializeStep2(event) and maxDeltaCtOnChange(event) to disable the "Next" button (both these functions call servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" and callback function dnaItemListLoaded(response)), while function dnaItemListLoaded(response) is updated to enble the "Next" button again.

comment:23 by olle, 8 years ago

(In [3518]) Refs #801. Refs #815. Since it may take some time before the list of DNA items from selected start item lists is loaded in step 2 of wizard "Create new start DNA plate", the "Next" button is disabled until the list is loaded, in order to avoid problems:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in functions initializeStep2(event) and maxDeltaCtOnChange(event) to disable the "Next" button (both these functions call servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" and callback function dnaItemListLoaded(response)), while function dnaItemListLoaded(response) is updated to enble the "Next" button again.

comment:24 by olle, 8 years ago

Functional specification update:

  • Wizard "Create new start DNA plate" should be updated regarding dilution calculation and reporting:
    a. The aliquot volume should be increased from 10 to 10.5µl, i.e. volume of FPA + FPB from 20 to 21µl.
    b. The dilution factor should be calculated from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself. The aim is to avoid large differences in dilution for extracts with ΔCt values on separate sides of a ladder step.
    c. Dilution volumes for DNA and water, as well as ΔCt values, should be reported with 2 decimals instead of 1, in order to simplify checking the dilution calculation.

Design update:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. function getWellText(well)updated by increasing the aliquot volume from 10 to 10.5µl, and report dilution volumes for DNA and water, as well as ΔCt values, with 2 decimals instead of 1.
    b. Function fetchDilutionFactor(deltaCt) updated to calculate the dilution factor from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself.

comment:25 by olle, 8 years ago

(In [3519]) Refs #801. Refs #815. Wizard "Create new start DNA plate" updated regarding dilution calculation and reporting:
a. The aliquot volume is increased from 10 to 10.5µl, i.e. volume of FPA + FPB from 20 to 21µl.
b. The dilution factor is now calculated from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself. The aim is to avoid large differences in dilution for extracts with ΔCt values on separate sides of a ladder step.
c. Dilution volumes for DNA and water, as well as ΔCt values, are now reported with 2 decimals instead of 1, in order to simplify checking the dilution calculation.

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. function getWellText(well)updated by increasing the aliquot volume from 10 to 10.5µl, and report dilution volumes for DNA and water, as well as ΔCt values, with 2 decimals instead of 1.
    b. Function fetchDilutionFactor(deltaCt) updated to calculate the dilution factor from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself.

comment:26 by olle, 8 years ago

(In [3520]) Refs #801. Refs #815. Javascript file select_dna.js in resources/libprep/ updated by change of top function name from "SelectDna" to "SelectDnaRefCode", since the code is currently not active, but left for reference during early development of the library preparation wizards. Javascript file select_dna_for_start_plate.js in resources/libprep/ is based on the former file, and currently has top function name "SelectDna". Function dnaSelected(response) in javascript file auto_select_dna.js in resources/libprep/ calls function SelectDna.dnaSelected(response) in the file, it was called from, which currently is select_dna_for_start_plate.js. The name change avoids misunderstanding of what function in what file is called from auto_select_dna.js.

comment:27 by olle, 8 years ago

(In [3521]) Refs #801. Refs #815. Updates due to version number change to "1.3.3".

  1. Version number change to "1.3.3":
    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:28 by olle, 8 years ago

Milestone: Milestone MeLuDI v1.3.3Milestone MeLuDI v1.3.4

Milestone changed to MeLuDI v1.3.4, as MeLuDI v1.3.3 has been released.

comment:29 by olle, 8 years ago

Milestone: Milestone MeLuDI v1.3.4MeLuDI v1.3.4

Milestone renamed

comment:30 by olle, 8 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:31 by olle, 8 years ago

Functional specification update:

  • Case summary should be 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.

Design update:

  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 8 years ago by olle (previous) (diff)

comment:32 by olle, 8 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 8 years ago by olle (previous) (diff)

comment:33 by olle, 8 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 MeludiRole.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.
Last edited 8 years ago by olle (previous) (diff)

comment:34 by olle, 8 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:35 by olle, 8 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:36 by olle, 8 years ago

Functional specification update:

  • Case summary should be updated to present information on fpa and fpb DNA aliquot barcode tags as links to the corresponding Tag items.

Design update:

  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:37 by olle, 8 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:38 by olle, 8 years ago

Functional specification update:

  • It has been decided not to use role MeludiRole.LIBRARY_PLATE_DESIGNER in MeLuDI. Where previously used, it should be exchanged for role MeludiRole.LIBRARY_PREP.

Design update:

  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:39 by olle, 8 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:40 by olle, 8 years ago

Functional specification update:

  • Wizard "Create new start DNA plate" should be 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).

Design update:

  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:41 by olle, 8 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:42 by olle, 8 years ago

Placeholder for new decisions regarding extract placement on library plates and related topics.

comment:43 by olle, 8 years ago

Functional specification update:

  • Section "Library preparation wizards" should be extended with a new sub-section "Reagent kit management wizards". The latter should contain wizards for adding, updating, and presenting information on library preparation kits.

Design discussion:

Data for library preparation kits should be stored in MeLuDI, but currently BASE does not include support for this general type of item. Possible solutions are:

a. Store data in one or more files on the MeLuDI server system.
b. Store the data in a special table in the BASE database, using functionality added in BASE 3.4 (for details, see BASE Ticket http://base.thep.lu.se/ticket/1892, "Implement support for extensions to add their own tables the BASE database").
c. Using a suitable existing BASE item to store the kit data, even though they have no reference to the intended data to be stored.
d. Extend BASE with the desired functionality.

In order to add functionality fast, solution (a), storage in files on the server file system, will by used initially.

comment:44 by olle, 8 years ago

Functional specification update:

  • Sub-section "Reagent kit management wizards" should be 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.

    a. The first step allows the user to select a consumables lot number file on the local file system, as well as a start date for the kit (the name of the later date may be changed in the future).
    b. The file is parsed, assuming known specification keys at the beginning of each row.
    c. The data is then presented in a table with specification keys in a header row, with data for each kit on a single row. (Basically, original rows/columns -> columns/rows.)
    d. It should be possible to download a reagent lot number file with the presented table data as one row for each kit, with the lot numbers etc. in semi-colon-separated columns.
    e. At registration, the rows in the table representing kits not already in the kit storage will be added to the latter, with default values for data not in the input file.

Design discussion:

  1. Item (d) above, downloading the table data as a reagent lot number file, is complicated by the fact that the normal coding procedure for opening a dialog for downloading a file involves having a javascript function creating a url for sending a "GET" request to a java servlet, after which the url is used in call "window.open(url)" from the javascript. However, this will only work if all relevant information needed by the servlet can be included as text in the url iteself, and the latter is limited in the length allowed for it. In the current case, the table normally contains too much data to be be encoded in the url, making a "POST" request to the servlet the obvious choice, but this does not seem to work with the mentioned "window.open(url)" call. The solution used was to first send table data in a "POST" request to the servlet, that stores the data in a temporary file on the server and sends back the file path, which the callback javascript function uses in creating a url for a "GET" request to another servlet command, after which it calls "window.open(url). The latter servlet command retrieves the path to the temporary file, reads the data and adds it to an output buffer, after which it removes the temporary file.
  2. The kit storage data will be stored in a file in the user-files directory on the server, with one row for each kit, with the lot numbers etc. in semi-colon-separated columns.
  3. The kit storage will initially include the following new columns for each kit:
    a. "Available", a boolean flag indicating if a kit is available.
    b. "#Times used", the number of times a kit has been thawed (6 times is the maximum allowed).
    c. "Unused FPA plate locations", a string of comma-separated FPA plate locations, from A1 to H6.
    d. "Comment".

Design update:

  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:45 by olle, 8 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:46 by olle, 8 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:47 by olle, 8 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:48 by olle, 8 years ago

Functional specification update:

  • Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" should be updated by exchanging input of a start date for an expiration date. Also, a registration date and a "last updated" date should be added to the stored library preparation kit data. At registration of a "Consumables lot number file", the latter dates should be set to the date at registration, i.e. the current date. The kit storage will therefore include the following new columns for each kit:

    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".

Design update:

  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:49 by olle, 8 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:50 by olle, 8 years ago

Functional specification update:

  • Sub-section "Reagent kit management wizards" should be extended with a new "Inspect library preparation kit data" wizard for inspecting the stored library preparation kit data.

    i. Step 1 should include 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 should present 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 should allow the filtered kit storage data table to be downloaded in a file with semi-colon-separated columns.

Design discussion:

  1. Downloading the filtered table data as a file will be implemented with the same two-step procedure, as used for downloading a reagent lot number file in the "Add new consumables lot number file" wizard.

Design update:

  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:51 by olle, 8 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:52 by olle, 8 years ago

Design update:

  • 2015-10-16 it was decided to extend BASE with a new annotatable "Kit" item, based on the "Protocol" item. When this has been implemented, MeLuDI will be updated to used this for kit management, instead of the current file-based solution. However, until BASE has been updated, MeLuDI kit management will be developed using the latter, but with more emphasis on an API, that will facilitate future change to use of the new BASE "Kit" item.
Last edited 8 years ago by olle (previous) (diff)

comment:53 by olle, 8 years ago

Functional specification update:

  • Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" should be updated in step 2 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 should be set to the entered expiration date for all library preparation kits in the same consumables file.

Design update:

In addition to code changes related to including an expiration date column described above, the following changes should be made in order to make the code more consistent:

  • Variable name for JSONArray with kit names should change from "jsonKitNames" to "jsonKitName", since other JSONArrays are named after the entity/quantity in singular. Correspondingly, the JSON key for JSONArray "jsonKitName" should be 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:54 by olle, 8 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:55 by olle, 8 years ago

Functional specification update:

  • Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" should be 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.)

Design update:

  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 8 years ago by olle (previous) (diff)

comment:56 by olle, 8 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 8 years ago by olle (previous) (diff)

comment:57 by olle, 8 years ago

Design update:

  • Wizards "Add new consumables lot number file" and "Inspect library preparation kit data" in sub-section "Reagent kit management wizards" should be 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).
Last edited 8 years ago by olle (previous) (diff)

comment:58 by olle, 8 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:59 by olle, 8 years ago

Functional specification update:

  • Sub-section "Reagent kit management wizards" should be extended with a new "Add new library preparation kit" wizard for adding lot numbers etc. for a single library preparation kit. The first version will contain 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.

Design discussion:

In order to reuse as much functionality as possible, existing commands for LibPrepServlet will be used to implement the desired functionality. In order to achieve this, the data will be stored in JSONArrays with a single element.

Design update:

  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:60 by olle, 8 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:61 by olle, 8 years ago

Functional specification update:

  • Wizard "Inspect library preparation kit data" in sub-section "Reagent kit management wizards" should be 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 should display 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 should be highlighted in yellow, and enclosed in angular brackets "<>". Other properties:

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

Design discussion:

In order to reuse as much functionality as possible, existing LibPrepServlet command "RegisterReagentLotNoFile" will be used to implement the desired functionality. However, code for the latter command will updated to accept boolean parameter "overwrite", that will trigger it to use new data instead of old for kits already in the library preparation kit storage. On the javascript side, only JSON data for modified kits will be submitted.

Design update:

  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".
Last edited 8 years ago by olle (previous) (diff)

comment:62 by olle, 8 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:63 by olle, 8 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:64 by olle, 8 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:65 by olle, 8 years ago

Functional specification update:

  • Section "Library preparation wizards" should be updated in sub-section "Start DNA plate wizards" for wizard "Create new start DNA plate". The latter wizard currently contains 3 steps:

    Step 1: Select start list[s] to pick DNA items from
    Step 2: Select DNA items
    Step 3: Fragmented DNA plate

    A new step should be introduced between the current second and third steps for selecting a library preparation kit to use:

    Step 1: Select start list[s] to pick DNA items from
    Step 2: Select DNA items
    Step 3: Select library preparation kit to use
    Step 4: Fragmented DNA plate

    The new step should allow the user to select a library preparation kit from a list of available ones. The aim of this selection is to balance two desires, that sometimes compete:

    a. To use plate well marker reagents "Index 1 Primers" and "Index 2 Primers" economically for a kit.
    b. To place DNA aliquots in plate wells in a way that simplifies lab work.

    In order for the user to make an informed choice, the following information should be displayed in the new third step:

    i. Only used kits with enough unused wells for FPA aliquots should be listed.
    ii. For used kits, a visual display should show what wells are unused for FPA aliquots.
    iii. Expiration date and number of times used should be shown for all available kits.

It would also be beneficial if the visual display of unused wells for a used kit would indicate what of the latter wells will be used in placing FPA aliquots on the start plate in the next step, provided that the kit was selected. However, this placement depends on a number of empirical rules, intended to balance the desire for economical kit usage and simple lab procedures, mentioned above. These rules will be described in a separate section.

Last edited 8 years ago by olle (previous) (diff)

comment:66 by olle, 8 years ago

Empirical rules for placing FPA aliquots on a start plate:

  • General: FPA aliquots of DNA extracts are placed in the left part of an 8x12 well start plate, i.e. columns 1-6. If an FPA aliquot of a DNA extract is placed in a well with row number r_fpa and column number c_fpa, an FPB aliquot of the same DNA extract is placed in the corresponding well in the right part of the plate, with row number r_fpa and column number (c_fpa + 6).

General rules determined by the desire for simple lab procedures

  1. A batch of selected DNA aliquots are placed on a single start plate.
  2. A single library preparation kit is used for a single start plate.
  3. FPA aliquots are placed in consecutive wells, without gaps, downwards in a column, continuing with the first row in the next column to the right, when the last row of a column is reached. Note that this still allows the start well to be on another row, than the first.
  4. DNA aliquots are placed in wells according the scheme above, in the same order, as presented in the wizard lists, i.e. MeLuDI samples before external material, alphabetically listed after name in each group.
  5. FPA aliquots are always placed in a column in a way, that at least one well is on the first or last row, i.e. the selected wells always connect with the top or bottom of the plate. Isolated "islands" of selected cells in the middle of a column are not allowed. When starting to fill wells in a column, with all wells available, the column is always filled top to bottom, i.e. the first filled well in the column is on the first row.

Requirement 5 has the added implication, that isolated islands of unused wells in a column, where the former do not contain wells on the first or last row, will never be eligible for hosting FPA aliquots. The effective number of wells available for FPA aliquots may therefore be smaller than the number of unused wells.

In the following, an "available" well denotes a well that is unused by the selected library preparation kit, and is not part of an isolated "island" of unused wells in a column.

More detailed rules for placing FPA aliquots on available wells of a start plate

  1. If all FPA aliquots fit in available wells in the leftmost column of such wells, the former are placed in these wells. If the available wells include the one on the first row, the filling is started from the top, otherwise from a well making the filling end with the well on the last row.
  2. If all FPA aliquots do not fit in available wells in the leftmost column of such wells, but if they fit exactly in the available wells of that column and a number of fully available columns to the right, this solution is used.
  3. Otherwise, the first fully available columns from the left are used. The wells are filled from the top of the first column.

Rule 7 may have peculiar consequences regarding how many wells are effectively available for FPA aliquots for a kit. As an example, consider a kit with the following unused wells (only left part of plate for FPA aliquots shown):

1 2 3 4 5 6
A A6
B B6
C C6
D D6
E E6
F F5 F6
G G5 G6
H H5 H6

This kit may be used for 1-8 and 11 aliquots (1-3 in column 5, 4-8 in column 6, and 11 in columns 5 and 6), but not for 9 or 10 aliquots.

Last edited 8 years ago by olle (previous) (diff)

comment:67 by olle, 8 years ago

Design update 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.
Last edited 8 years ago by olle (previous) (diff)

comment:68 by olle, 8 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:69 by olle, 8 years ago

Functional specification update:

  • Wizard "Create new start DNA plate" should be 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.

Design update:

  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 8 years ago by olle (previous) (diff)

comment:70 by olle, 8 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 8 years ago by olle (previous) (diff)

comment:71 by olle, 8 years ago

Update of empirical rules for placing FPA aliquots on a start plate:

The desire to place FPA aliquots in wells on a start plate in a way that maximizes the number of unused full columns to the right, prompted a change of the detailed rules described above. (Alternative interpretation: The previous description of the rule was wrong, and should be corrected.)

Old detailed rule 7 for placing FPA aliquots in available wells of a start plate, when the leftmost column of available wells is not full:

  1. If all FPA aliquots do not fit in available wells in the leftmost column of such wells, but if they fit exactly in the available wells of that column and a number of fully available columns to the right, this solution is used.

Modified rule 7:

  1. If all FPA aliquots do not fit in available wells in the leftmost 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.

As an example of consequences regarding how many wells are effectively available for FPA aliquots for a kit, consider a kit with the following unused wells (only left part of plate for FPA aliquots shown):

1 2 3 4 5 6
A A6
B B6
C C6
D D6
E E6
F F5 F6
G G5 G6
H H5 H6
  • Old rule 7: This kit may be used for 1-8 and 11 aliquots (1-3 in column 5, 4-8 in column 6, and 11 in columns 5 and 6), but not for 9 or 10 aliquots.
  • New rule 7: This kit may be used for 1-11 aliquots (1-3 in column 5, 4-8 in column 6, 9 in H5 + full column 6, 10 in G5, H5 + full column 6, 11 in columns 5 and 6.

comment:72 by olle, 8 years ago

Design update for modified empirical rules for placing FPA aliquots on a start plate:

  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:73 by olle, 8 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:74 by olle, 8 years ago

Functional specification update:

  • Wizard "Create new start DNA plate" should be 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, should be listed with radio buttons below the list of used & available kits.

Design update:

  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:75 by olle, 8 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:76 by olle, 8 years ago

Functional specification update:

  • The update of wizard "Create new start DNA plate" regarding dilution calculation 2015-11-05 should be corrected, since it was based on a misunderstanding:
    a. The default aliquot volume should always be 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.
  • It should be possible to create a dilution protocol for a start plate, after FPA and FPB aliquots have been allocated for reserved wells. It should contain a header and a table. The header should contain the name of the start plate and the current date. The table should contain 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.

Design update:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated.
    a. Form tag added with action "libprep_diltion_protocol2.jsp" and 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.
    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.
Version 1, edited 8 years ago by olle (previous) (next) (diff)

comment:77 by olle, 8 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:78 by olle, 8 years ago

Functional specification update:

  • Another update of wizard "Create new start DNA plate" regarding dilution calculation:
    a. The dilution factor calculation should be 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.

Design update:

  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:79 by olle, 8 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:80 by olle, 8 years ago

Functional specification update:

  • Wizard "Create new start DNA plate" should be updated in step 4 by minimizing the user input, so as to not affect the proposed start plate layout. Existing code for editing the latter will be commented out, for possible use in a separate wizard for manual start plate creation:

    a. Pool layout will be fixed to "2 pools x 48 samples".
    b. Menu for controls to use will be commented out for now.
    c. Toolbar menu for editing plate layout will be commented out.
    d. Plate well context menu will be restricted to two items, comment and case summary.
    e. Info line below start plate layout will not contain icon for "Selected for QC".
Last edited 8 years ago by olle (previous) (diff)

comment:81 by olle, 8 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:82 by olle, 8 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:83 by olle, 8 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:84 by olle, 8 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.