Opened 9 years ago
Closed 9 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 , 9 years ago
Status: | new → assigned |
---|
comment:2 by , 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).
comment:5 by , 9 years ago
(In [3449]) Refs #801. Refs #792. First experimental version of library preparation wizards for MeLuDI:
Updates of previous files:
- XML servlet configuration file
servlets.xml
inMETA-INF/
updated with entries for new servlet classesLibPrepServlet
andDnaServlet
. - JSP file
index.jsp
inresources/
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)
". - CSS file
plate.css
inresources\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. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new annotation types related to library preparation. - Data access object class/file
BioPlateType.java
insrc/net/sf/basedb/meludi/dao/
updated with new bioplate typeLIBRARY
, and allowing plate name prefix and number of digits in name to be editable. - Data access object class/file
Dna.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static methodList<Dna> toList(Collection<Extract> extracts)
. - Data access object class/file
MeludiRole.java
insrc/net/sf/basedb/meludi/dao/
updated with new rolesLIBRARY_PREP
andLIBRARY_PLATE_DESIGNER
. - Data access object class/file
Subtype.java
insrc/net/sf/basedb/meludi/dao/
updated by adding new attributeString itemSuffix
, and new public methodBasicItem getLatestProjectDefault(DbControl dc)
. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to include the new extract annotation types, and install barcodes.
New files related to library preparation:
- CSS file
startplate.css
inresources\css\
added. It is a modified version ofplate.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. - Image file
manual_dna.png
inresources/images/
added. - 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 - Data access object classes/files
Library.java
andPooledLibrary.java
insrc/net/sf/basedb/meludi/dao/
added. - Java servlet classes/files
DnaServlet.java
andLibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
added.
comment:6 by , 9 years ago
comment:7 by , 9 years ago
comment:9 by , 9 years ago
Milestone: | MeLuDI v1.3.1 → MeLuDI v1.3.2 |
---|
Milestone changed to MeLuDI v1.3.2, as MeLuDI v1.3.1 has been released.
comment:10 by , 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":
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated in step 3 form by exchanging references to "Controller" for "Control".
comment:11 by , 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionmanuallySelected(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 , 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionmanuallySelected(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 , 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionparseDnaFile(data)
adapting routine for loading data from file to placing FPA and FPB aliquots on plate. - Javascript file
select_file.js
inresources/libprep/
updated by referring to DNA instead of RNA.
comment:14 by , 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionparseDnaFile(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 , 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:
- JSP file
select_dna_for_start_plate.jsp
inresources/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. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated by moving code for placing selected DNA items on plate from functionbarcodesLoaded(response)
tonextPlateNameLoaded(response)
. The latter function also updated to place the DNA extracts in columns making best use of the barcode reagents in a kit.
comment:16 by , 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:
- Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid 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 , 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:
- JSP file
index.jsp
inresources/
updated in "admin
" section by removing entry for creating start lists from selected start plates in sub-section "Special conversion tools".
comment:18 by , 9 years ago
(In [3464]) Refs #801. Refs #802. Updates due to version number change to "1.3.2a1
".
- Version number change to "
1.3.2a1
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:19 by , 9 years ago
(In [3465]) Refs #801. Refs #802. Updates due to version number change to "1.3.2-dev
".
- Version number change to "
1.3.2-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:20 by , 9 years ago
Milestone: | MeLuDI v1.3.2 → Milestone MeLuDI v1.3.3 |
---|
Milestone changed to MeLuDI v1.3.3, as MeLuDI v1.3.2 has been released.
comment:21 by , 9 years ago
(In [3512]) Refs #801. Refs #815. Updates due to version number change to "1.3.3-dev
".
- Version number change to "
1.3.3-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:22 by , 9 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionsinitializeStep2(event)
andmaxDeltaCtOnChange(event)
to disable the "Next" button (both these functions call servletExtractionServlet
with command "GetListOfItemsFromStartItemLists
" and callback functiondnaItemListLoaded(response)
), while functiondnaItemListLoaded(response)
is updated to enble the "Next" button again.
comment:23 by , 9 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionsinitializeStep2(event)
andmaxDeltaCtOnChange(event)
to disable the "Next" button (both these functions call servletExtractionServlet
with command "GetListOfItemsFromStartItemLists
" and callback functiondnaItemListLoaded(response)
), while functiondnaItemListLoaded(response)
is updated to enble the "Next" button again.
comment:24 by , 9 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. functiongetWellText(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. FunctionfetchDilutionFactor(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 , 9 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.
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. functiongetWellText(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. FunctionfetchDilutionFactor(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 , 9 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 , 9 years ago
(In [3521]) Refs #801. Refs #815. Updates due to version number change to "1.3.3
".
- Version number change to "
1.3.3
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:28 by , 9 years ago
Milestone: | Milestone MeLuDI v1.3.3 → Milestone MeLuDI v1.3.4 |
---|
Milestone changed to MeLuDI v1.3.4, as MeLuDI v1.3.3 has been released.
comment:30 by , 9 years ago
(In [3523]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number change to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:31 by , 9 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:
- JSP file
case_summary.jsp
inresources/reports/
updated with "Library
" section (previously commented out), after the "DNA
" section. - Javascript file
case_summary.js
inresources/reports/
updated in functioncaseInfoLoaded(response)
to obtain information on fpa and fpb DNA aliquots from theCaseSummaryServlet
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. - Java servlet class/file
CaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid 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.
comment:32 by , 9 years ago
(In [3526]) Refs #801. Refs #816. Case summary updated to present information on fpa and fpb DNA aliquots in a separate section (initially the "Library
" section will be used), instead of the "DNA
" section:
- JSP file
case_summary.jsp
inresources/reports/
updated with "Library
" section (previously commented out), after the "DNA
" section. - Javascript file
case_summary.js
inresources/reports/
updated in functioncaseInfoLoaded(response)
to obtain information on fpa and fpb DNA aliquots from theCaseSummaryServlet
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. - Java servlet class/file
CaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid 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.
comment:33 by , 9 years ago
(In [3527]) Refs #801. Refs #816. Roles MeludiRole.LIBRARY_PREP
and MeludiRole.LIBRARY_PLATE_DESIGNER
used in library preparation are installed (they were previously defined in data access object MeludiRole.java
in src/net/sf/basedb/meludi/dao/
):
- Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
:
a. For commands "Validate
" and "Install
" to check rolesMeludiRole.LIBRARY_PREP
andMeludiRole.LIBRARY_PLATE_DESIGNER
, and create them if missing.
b. For command "GetPermissions
" to include information on membership in rolesMeludiRole.LIBRARY_PREP
andMeludiRole.LIBRARY_PLATE_DESIGNER
, respectively.
comment:34 by , 9 years ago
(In [3529]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a1
".
- Version number change to "
1.3.4a1
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:35 by , 9 years ago
(In [3530]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:36 by , 9 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:
- Javascript file
case_summary.js
inresources/reports/
updated in functioncaseInfoLoaded(response)
to present fpa and fpb aliquot barcode tags as links by calling functionasLink(itemType, item, maxLength)
. - Java data access object class/file
Barcode.java
insrc/net/sf/basedb/meludi/dao/
added. It contains among other methods one for retrieving a barcodeTag
item from the database, if the name of the former is known. - Java servlet class/file
CaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid 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 , 9 years ago
(In [3532]) Refs #801. Refs #816. Case summary updated to present information on fpa and fpb DNA aliquot barcode tags as links to the corresponding Tag
items:
- Javascript file
case_summary.js
inresources/reports/
updated in functioncaseInfoLoaded(response)
to present fpa and fpb aliquot barcode tags as links by calling functionasLink(itemType, item, maxLength)
. - Java data access object class/file
Barcode.java
insrc/net/sf/basedb/meludi/dao/
added. It contains among other methods one for retrieving a barcodeTag
item from the database, if the name of the former is known. - Java servlet class/file
CaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid 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 , 9 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 roleMeludiRole.LIBRARY_PREP
.
Design update:
- JSP file
index.jsp
inresources/
updated by exchanging "LibraryPlateDesigner
" for "LibraryPrep
". - Data access object class/file
MeludiRole.java
insrc/net/sf/basedb/meludi/dao/
updated by commenting out definition of roleLIBRARY_PLATE_DESIGNER
("LibraryPlateDesigner
"). - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated by exchanging checks for roleMeludiRole.LIBRARY_PLATE_DESIGNER
for roleMeludiRole.LIBRARY_PREP
. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for commands "Validate
" and "Install
" to no longer create roleMeludiRole.LIBRARY_PLATE_DESIGNER
, if missing.
comment:39 by , 9 years ago
(In [3536]) Refs #801. Refs #816. It has been decided not to use role MeludiRole.LIBRARY_PLATE_DESIGNER
in MeLuDI. Where previously used, it is exchanged for role MeludiRole.LIBRARY_PREP
:
- JSP file
index.jsp
inresources/
updated by exchanging "LibraryPlateDesigner
" for "LibraryPrep
". - Data access object class/file
MeludiRole.java
insrc/net/sf/basedb/meludi/dao/
updated by commenting out definition of roleLIBRARY_PLATE_DESIGNER
("LibraryPlateDesigner
"). - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated by exchanging checks for roleMeludiRole.LIBRARY_PLATE_DESIGNER
for roleMeludiRole.LIBRARY_PREP
. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for commands "Validate
" and "Install
" to no longer create roleMeludiRole.LIBRARY_PLATE_DESIGNER
, if missing.
comment:40 by , 9 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:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated by removing input field for last used column. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionnextPlateNameLoaded(response)
by setting valuelastUsedColumn
to 5, making the next FPA column to be the first column.
comment:41 by , 9 years ago
(In [3537]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 2 by removing optional input of last used FPA column for demo purposes, since it has been decided that the start column should be determined by the reagent kit selected, and that extracts should always be placed in order on the plate in a contiguous sequence (i.e. the placement should not continue in the first column after the right-most column has been filled):
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated by removing input field for last used column. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionnextPlateNameLoaded(response)
by setting valuelastUsedColumn
to 5, making the next FPA column to be the first column.
comment:42 by , 9 years ago
Placeholder for new decisions regarding extract placement on library plates and related topics.
comment:43 by , 9 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 , 9 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:
- 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.
- 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.
- 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:
- JSP file
index.jsp
inresources/
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 fileadd_consumables_lot_number_file.jsp
inresources/libprep/
. - JSP and javascript files
add_consumables_lot_number_file.jsp
andadd_consumables_lot_number_file.js
inresources/libprep/
added. The latter communicates with the server using the following functions:
a. FunctiondownloadReagentLotNoFile
sends a "POST" request to command "PrepareDownloadReagentLotNoFile
" in servetLibPrepServlet
, with callback functiondownloadReagentLotNoFileResults(response)
.
b. FunctiondownloadReagentLotNoFileResults(response)
retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadReagentLotNoFile
" in servetLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog.
c. Functionsubmit()
sends table data in a "POST" request to command "RegisterReagentLotNoFile
" in servetLibPrepServlet
, with callback functionsubmissionResults(response)
. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 methodvoid 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 methodvoid 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 , 9 years ago
(In [3538]) Refs #801. Refs #816. Sub-section "Reagent kit management wizards" is extended with a wizard for adding a new "Consumables lot number file" to the library preparation kit data. A "Consumables lot number file" is a text file with rows of tab/comma/semicolon-separated values, where each row contains a specification key in first/second column, followed by data columns:
- JSP file
index.jsp
inresources/
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 fileadd_consumables_lot_number_file.jsp
inresources/libprep/
. - JSP and javascript files
add_consumables_lot_number_file.jsp
andadd_consumables_lot_number_file.js
inresources/libprep/
added. The latter communicates with the server using the following functions:
a. FunctiondownloadReagentLotNoFile
sends a "POST" request to command "PrepareDownloadReagentLotNoFile
" in servetLibPrepServlet
, with callback functiondownloadReagentLotNoFileResults(response)
.
b. FunctiondownloadReagentLotNoFileResults(response)
retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadReagentLotNoFile
" in servetLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog.
c. Functionsubmit()
sends table data in a "POST" request to command "RegisterReagentLotNoFile
" in servetLibPrepServlet
, with callback functionsubmissionResults(response)
. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 methodvoid 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 methodvoid 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 , 9 years ago
(In [3539]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a2
".
- Version number change to "
1.3.4a2
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:47 by , 9 years ago
(In [3540]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:48 by , 9 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:
- JSP and javascript files
add_consumables_lot_number_file.jsp
andadd_consumables_lot_number_file.js
inresources/libprep/
updated by exchanging references to "start date" for "expiration date". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "DownloadReagentLotNoFile
" to exchange start date for expiration date.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "PrepareDownloadReagentLotNoFile
" to exchange start date for expiration date.
c. Protected methodvoid 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 , 9 years ago
(In [3546]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" updated by exchanging input of a start date for an expiration date. Also, a registration date and a "last updated" date are added to the stored library preparation kit data. At registration of a "Consumables lot number file", the latter dates are set to the date at registration, i.e. the current date:
- JSP and javascript files
add_consumables_lot_number_file.jsp
andadd_consumables_lot_number_file.js
inresources/libprep/
updated by exchanging references to "start date" for "expiration date". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "DownloadReagentLotNoFile
" to exchange start date for expiration date.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "PrepareDownloadReagentLotNoFile
" to exchange start date for expiration date.
c. Protected methodvoid 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 , 9 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:
- 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:
- JSP file
index.jsp
inresources/
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 fileinspect_lib_prep_kit_data.jsp
inresources/libprep/
. - JSP and javascript files
inspect_lib_prep_kit_data.jsp
andinspect_lib_prep_kit_data.js
inresources/libprep/
added. The latter communicates with the server using the following functions:
a. FunctioninitializeStep2()
sends a "GET" request to command "GetLibPrepKitData
" in servetLibPrepServlet
, with callback functionlibPrepKitDataResults(response)
.
b. FunctionlibPrepKitDataResults(response)
retrieves data for the filtered library preparation kit data in JSON format, and creates a table to present it.
c. FunctiondownloadLibPrepKitDataFile
sends a "POST" request to command "PrepareDownloadLibPrepKitDataFile
" in servetLibPrepServlet
, with callback functiondownloadLibPrepKitDataFileResults(response)
.
d. FunctiondownloadLibPrepKitDataFileResults(response)
retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadLibPrepKitDataFile
" in servetLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 methodvoid 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 methodvoid 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 , 9 years ago
(In [3547]) Refs #801. Refs #816. Sub-section "Reagent kit management wizards" extended with a new "Inspect library preparation kit data" wizard for inspecting the stored library preparation kit data.
i. Step 1 includes a menu for selecting a library preparation kit filter, with the following options:
a. "All"
b. "Used & available"
c. "Used & unavailable"
d. "Used"
e. "Unused"
f. "Available"
g. "Unavailable"
ii. Step 2 presents the filtered data in a table with specification keys in a header row, with data for each kit on a single row. Basically, this is the same table format as used in step 2 of the "Add new consumables lot number file" wizard, but with added columns for:
a. Registration date.
b. Last updated date.
c. Expiration date.
d. "Available", a boolean flag indicating if a kit is available.
e. "#Times used", the number of times a kit has been thawed (6 times is the maximum allowed).
f. "Unused FPA plate locations", a string of comma-separated FPA plate locations, from A1 to H6.
g. "Comment".
iii. Step 2 also allows the filtered kit storage data table to be downloaded in a file with semi-colon-separated columns:
- JSP file
index.jsp
inresources/
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 fileinspect_lib_prep_kit_data.jsp
inresources/libprep/
. - JSP and javascript files
inspect_lib_prep_kit_data.jsp
andinspect_lib_prep_kit_data.js
inresources/libprep/
added. The latter communicates with the server using the following functions:
a. FunctioninitializeStep2()
sends a "GET" request to command "GetLibPrepKitData
" in servetLibPrepServlet
, with callback functionlibPrepKitDataResults(response)
.
b. FunctionlibPrepKitDataResults(response)
retrieves data for the filtered library preparation kit data in JSON format, and creates a table to present it.
c. FunctiondownloadLibPrepKitDataFile
sends a "POST" request to command "PrepareDownloadLibPrepKitDataFile
" in servetLibPrepServlet
, with callback functiondownloadLibPrepKitDataFileResults(response)
.
d. FunctiondownloadLibPrepKitDataFileResults(response)
retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadLibPrepKitDataFile
" in servetLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 methodvoid 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 methodvoid 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 , 9 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.
comment:53 by , 9 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
".
- JSP file
add_consumables_lot_number_file.jsp
inresources/libprep/
updated in displayed text only. - Javascript file
add_consumables_lot_number_file.js
inresources/libprep/
updated:
a. FunctionparseConsumablesFile(data)
updated by including JSONArray for expiration date and setting the value to the entered date.
b. FunctioninitializeStep2()
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
". - Javascript file
inspect_lib_prep_kit_data.js
inresources/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
". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 , 9 years ago
(In [3551]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" updated:
a. Step 2 updated by extending the table displayed by a column for "Expiration date". Also, a downloaded library preparation reagent lot number file should include a column for expiration date. The date is set to the entered expiration date for all library preparation kits in the same consumables file.
b. Variable name for JSONArray with kit names is changed from "jsonKitNames
" to "jsonKitName
", since other JSONArrays are named after the entity/quantity in singular. Correspondingly, the JSON key for JSONArray "jsonKitName
" is changed from "KitNames
" to "KitName
".
- JSP file
add_consumables_lot_number_file.jsp
inresources/libprep/
updated in displayed text only. - Javascript file
add_consumables_lot_number_file.js
inresources/libprep/
updated:
a. FunctionparseConsumablesFile(data)
updated by including JSONArray for expiration date and setting the value to the entered date.
b. FunctioninitializeStep2()
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
". - Javascript file
inspect_lib_prep_kit_data.js
inresources/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
". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 , 9 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:
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 methodvoid 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.
comment:56 by , 9 years ago
(In [3552]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" updated when downloading a library preparation reagent lot number file to have the file name contain prefix "-exp-" before the expiration date, in order to clearly indicate that the date signifies an expiration date. (Previously, only prefix "-" was used.)
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid 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 methodvoid 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.
comment:57 by , 9 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.
- Javascript file
add_consumables_lot_number_file.js
inresources/libprep/
updated:
a. FunctionsdownloadReagentLotNoFile()
anddownloadReagentLotNoFileResults(response)
updated by exchange of parameter name "consumablesFileName
" for "referenceName
", when callingLibPrepServlet
.
b. Functionsubmit()
updated by exchange of JSONObject key "consumablesFileName
" for "referenceName
", when callingLibPrepServlet
. - Javascript file
inspect_lib_prep_kit_data.js
inresources/libprep/
updated in functionsubmit()
by not setting any values for JSONObjects with keys "referenceName
" and "expirationDate
". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "DownloadReagentLotNoFile
" by exchanging name of parameter "consumablesFileName
" for "referenceName
".
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "PrepareDownloadReagentLotNoFile
" by exchanging name of parameter "consumablesFileName
" for "referenceName
".
c. Protected methodvoid 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:58 by , 9 years ago
(In [3553]) Refs #801. Refs #816. Wizards "Add new consumables lot number file" and "Inspect library preparation kit data" in sub-section "Reagent kit management wizards" updated when javascripts send a request to LibPrepServlet
for downloading a reagent lot number file by exchanging name of parameter "consumablesFileName
" for "referenceName
", since the name is only used in the name of the file to download, and in the future one might want to call this functionality in cases where the reference name is not a file name, but e.g. a kit name.
- Javascript file
add_consumables_lot_number_file.js
inresources/libprep/
updated:
a. FunctionsdownloadReagentLotNoFile()
anddownloadReagentLotNoFileResults(response)
updated by exchange of parameter name "consumablesFileName
" for "referenceName
", when callingLibPrepServlet
.
b. Functionsubmit()
updated by exchange of JSONObject key "consumablesFileName
" for "referenceName
", when callingLibPrepServlet
. - Javascript file
inspect_lib_prep_kit_data.js
inresources/libprep/
updated in functionsubmit()
by not setting any values for JSONObjects with keys "referenceName
" and "expirationDate
". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "DownloadReagentLotNoFile
" by exchanging name of parameter "consumablesFileName
" for "referenceName
".
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "PrepareDownloadReagentLotNoFile
" by exchanging name of parameter "consumablesFileName
" for "referenceName
".
c. Protected methodvoid 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 , 9 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:
- JSP file
index.jsp
inresources/
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 fileadd_new_libprep_kit.jsp
inresources/libprep/
. - JSP and javascript files
add_new_libprep_kit.jsp
andadd_new_libprep_kit.js
inresources/libprep/
added. The latter communicates with the server using the following functions:
a. FunctiondownloadReagentLotNoFile()
calls functionaddConsumablesInput()
to store input data in JSONArrays, after which it sends a "POST" request to command "PrepareDownloadReagentLotNoFile
" in servetLibPrepServlet
, with callback functiondownloadReagentLotNoFileResults(response)
.
b. FunctiondownloadReagentLotNoFileResults(response)
retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadReagentLotNoFile
" in servetLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog.
c. Functionsubmit()
sends a "POST" request to command "RegisterReagentLotNoFile
" in servetLibPrepServlet
, with callback functionsubmissionResults(response)
.
d. FunctionsubmissionResults(response)
displays rhe response message and shows the "Restart" button.
comment:60 by , 9 years ago
(In [3554]) Refs #801. Refs #816. Sub-section "Reagent kit management wizards" is extended with a new "Add new library preparation kit" wizard for adding lot numbers etc. for a single library preparation kit. The first version contains a single step, with the following components:
a. Input fields for all entries in a consumables lot number file, except initial header lines.
b. An input field for an expiration date.
c. A button to clear values in all input fields.
d. A button for selecting a reagent lot number file in CSV format with data for the kit to be added.
e. A button for downloading a reagent lot number file in CSV format with data in the input fields.
e. A "Cancel" and a "Register" button. At registration, the kit data will be added to the library preparation kit storage, provided that the latter does not already contain an entry with the same kit name.
- JSP file
index.jsp
inresources/
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 fileadd_new_libprep_kit.jsp
inresources/libprep/
. - JSP and javascript files
add_new_libprep_kit.jsp
andadd_new_libprep_kit.js
inresources/libprep/
added. The latter communicates with the server using the following functions:
a. FunctiondownloadReagentLotNoFile()
calls functionaddConsumablesInput()
to store input data in JSONArrays, after which it sends a "POST" request to command "PrepareDownloadReagentLotNoFile
" in servetLibPrepServlet
, with callback functiondownloadReagentLotNoFileResults(response)
.
b. FunctiondownloadReagentLotNoFileResults(response)
retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadReagentLotNoFile
" in servetLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog.
c. Functionsubmit()
sends a "POST" request to command "RegisterReagentLotNoFile
" in servetLibPrepServlet
, with callback functionsubmissionResults(response)
.
d. FunctionsubmissionResults(response)
displays rhe response message and shows the "Restart" button.
comment:61 by , 9 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:
- JSP file
index.jsp
inresources/
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". - JSP file
inspect_lib_prep_kit_data.jsp
inresources/libprep/
updated by exchanging title "Inspect library preparation kit data" for "Inspect/edit library preparation kit data". - Javascript file
inspect_lib_prep_kit_data.js
inresources/libprep/
updated:
a. New global variables JSONObjectsjsonConsumablesOrig
andjsonConsumablesModified
.
b. FunctionlibPrepKitDataResults(response)
updated by calling new functioncopyJsonConsumables(jsonConsumablesSrc)
to store a copy of JSONObjectjsonConsumables
injsonConsumablesOrig
, after which new functionupdateDetailsTable()
is called. The latter function contains the bulk of the code previously in functionlibPrepKitDataResults(response)
.
c. New functionupdateDetailsTable()
updates the displayed table with data in JSONObjectjsonConsumables
, highlighting data, that has been modified. Data for modified kits are compiled in JSONObjectjsonConsumablesModified
. An extra column with an "Edit..." button for each row is added, where the buttons are coupled to new functioneditLibPrepKitDetails(event)
. The "Register" button is disabled, unless some data has been modified in the table.
d. New functionfetchJsonConsumables()
is added to be used by javascript for the edit dialogs to access JSON data for the table.
e. New functioncopyJsonConsumables(jsonConsumablesSrc)
added. It returns a copy of the input JSONObject.
f. FunctioneditLibPrepKitDetails(event)
added. It gets the index for the table row of the pressed button, obtains the kit name of that row, and callsDialogs.openPopup(url, ...)
for a url to new JSP fileedit_libprep_kit_details.jsp
.
g. Functionsubmit()
updated to use JSONObjectjsonConsumablesModified
as submit info when callingLibPrepServlet
with command "RegisterReagentLotNoFile
" and setting parameter "overwrite" to "true". - New JSP file
edit_libprep_kit_details.jsp
inresources/libprep/
added. It contains layout for the edit pop-up dialog, and is coupled to javascript fileedit_libprep_kit_details.js
, also inresources/libprep/
. - New javascript file
edit_libprep_kit_details.js
inresources/libprep/
added. It callswindow.opener.ExtractionReg.fetchJsonConsumables()
to call functionfetchJsonConsumables()
in javascriptinspect_lib_prep_kit_data.js
to obtain JSON data for the kit data table, that is inserted as default values in the dialog forms. FunctionsaveDetails()
callswindow.opener.ExtractionReg.updateDetailsTable()
to call functionupdateDetailsTable()
in javascriptinspect_lib_prep_kit_data.js
to update the table with data entered in the dialog. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "RegisterReagentLotNoFile
":
a. Boolean parameter "overwrite" is retrieved.
b. If value of parameter "overwrite" istrue
, 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" istrue
, 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:62 by , 9 years ago
(In [3560]) Refs #801. Refs #816. Wizard "Inspect library preparation kit data" in sub-section "Reagent kit management wizards" extended in the table in step 2 with an extra column of "Edit..." buttons for editing values of most cells, a single kit at a time. Pressing an "Edit..." button displays a pop-up dialog for editing cell values for the kit data in the same row, as the button, in the same manner as editing data in step 3 of the "DNA/RNA registration/quantification" wizard. Modified values in the main table are highlighted in yellow, and enclosed in angular brackets "<>". Other properties:
a. Kit name and last updated date are exempted from manual editing (the last update date is set automatically).
b. The "Register" button is disabled, until some value has been modified in the table.
c. Pressing the "Register" button updates the library preparation kit storage with the modified values.
d. Kits, for which some data has been modified, have its last updated date set to the current date.
- JSP file
index.jsp
inresources/
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". - JSP file
inspect_lib_prep_kit_data.jsp
inresources/libprep/
updated by exchanging title "Inspect library preparation kit data" for "Inspect/edit library preparation kit data". - Javascript file
inspect_lib_prep_kit_data.js
inresources/libprep/
updated:
a. New global variables JSONObjectsjsonConsumablesOrig
andjsonConsumablesModified
.
b. FunctionlibPrepKitDataResults(response)
updated by calling new functioncopyJsonConsumables(jsonConsumablesSrc)
to store a copy of JSONObjectjsonConsumables
injsonConsumablesOrig
, after which new functionupdateDetailsTable()
is called. The latter function contains the bulk of the code previously in functionlibPrepKitDataResults(response)
.
c. New functionupdateDetailsTable()
updates the displayed table with data in JSONObjectjsonConsumables
, highlighting data, that has been modified. Data for modified kits are compiled in JSONObjectjsonConsumablesModified
. An extra column with an "Edit..." button for each row is added, where the buttons are coupled to new functioneditLibPrepKitDetails(event)
. The "Register" button is disabled, unless some data has been modified in the table.
d. New functionfetchJsonConsumables()
is added to be used by javascript for the edit dialogs to access JSON data for the table.
e. New functioncopyJsonConsumables(jsonConsumablesSrc)
added. It returns a copy of the input JSONObject.
f. FunctioneditLibPrepKitDetails(event)
added. It gets the index for the table row of the pressed button, obtains the kit name of that row, and callsDialogs.openPopup(url, ...)
for a url to new JSP fileedit_libprep_kit_details.jsp
.
g. Functionsubmit()
updated to use JSONObjectjsonConsumablesModified
as submit info when callingLibPrepServlet
with command "RegisterReagentLotNoFile
" and setting parameter "overwrite" to "true". - New JSP file
edit_libprep_kit_details.jsp
inresources/libprep/
added. It contains layout for the edit pop-up dialog, and is coupled to javascript fileedit_libprep_kit_details.js
, also inresources/libprep/
. - New javascript file
edit_libprep_kit_details.js
inresources/libprep/
added. It callswindow.opener.ExtractionReg.fetchJsonConsumables()
to call functionfetchJsonConsumables()
in javascriptinspect_lib_prep_kit_data.js
to obtain JSON data for the kit data table, that is inserted as default values in the dialog forms. FunctionsaveDetails()
callswindow.opener.ExtractionReg.updateDetailsTable()
to call functionupdateDetailsTable()
in javascriptinspect_lib_prep_kit_data.js
to update the table with data entered in the dialog. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "RegisterReagentLotNoFile
":
a. Boolean parameter "overwrite" is retrieved.
b. If value of parameter "overwrite" istrue
, 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" istrue
, 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 , 9 years ago
(In [3561]) Refs #801. Refs #816. JSP file inspect_lib_prep_kit_data.jsp
and javascript file inspect_lib_prep_kit_data.js
in resources/libprep/
renamed inspect_libprep_kit_data.jsp
and inspect_libprep_kit_data.js
, respectively, in order to have names more similar to other files in resources/libprep/
:
- JSP file
index.jsp
inresources/
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 nameinspect_libprep_kit_data.jsp
inresources/libprep/
. - JSP file
inspect_lib_prep_kit_data.jsp
inresources/libprep/
renamedinspect_libprep_kit_data.jsp
, and updated to link to javascript file with new nameinspect_libprep_kit_data.js
inresources/libprep/
. - Javascript file
inspect_lib_prep_kit_data.js
inresources/libprep/
renamedinspect_libprep_kit_data.js
,
comment:64 by , 9 years ago
comment:65 by , 9 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.
comment:66 by , 9 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 numberc_fpa
, an FPB aliquot of the same DNA extract is placed in the corresponding well in the right part of the plate, with row numberr_fpa
and column number(c_fpa + 6)
.
General rules determined by the desire for simple lab procedures
- A batch of selected DNA aliquots are placed on a single start plate.
- A single library preparation kit is used for a single start plate.
- 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.
- 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.
- 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
- 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.
- 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.
- 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.
comment:67 by , 9 years ago
Design update for selecting library preparation kit and placing selected DNA aliquots in start plate wells according to empirical rules:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated with style items for kit plates and new third step for selecting library preparation kit to use. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated with new third step for selecting library preparation kit to use.
b. FunctioninitializeStep3(event)
updated to callLibPrepServlet
with command "GetLibPrepKitsAsPlates
" and callback functionkitPlatesInfoLoaded(response)
to retrieve information on available wells for kits for placing the selected number of DNA aliquots on a start plate.
c. FunctionkitPlatesInfoLoaded(response)
retrieves information on available wells for kits for placing the selected number of DNA aliquots on a start plate, and presents the results graphically, 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. FunctioninitializeStep4(event)
among other things callsDNAServlet
with command "GetNextAutoGeneratedPlateName
" and callback functionnextPlateNameLoaded(response)
.
e. FunctionnextPlateNameLoaded(response)
retrieves information on the selected library preparation kit and calls new functionbuildKitInfoPlate(plate)
to present the layout of the new start plate with the selected DNA aliquots placed in reserved wells.
f. New functionbuildKitInfoPlate(plate)
generates HTML code for displaying a table representing the FPA part of a start plate for a kit.
g. Functionsubmit
updated to callLibPrepServlet
with command "RegisterReagentLotNoFile
" and parameters "overwrite
" and "update
" set totrue
, parameter "referenceName
" set to the name of the selected library preparation kit, and callback functionkitUpdateSubmissionResults(response)
. This will update data for the used library preparation kit.
h. New functionkitUpdateSubmissionResults(response)
callsDnaServlet
with command "CreateDnaOrLibPlate
" with callback functionsubmissionResults(response)
.
i. Convenience functionswellStrToRow(wellStr)
andwellStrToCol(wellStr)
takes a plate well location string consisting of row letter plus column number and returns the row and column indices, respectively. - Java data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new string annotation type "LibPrepKitName
" for bioplates. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
by adding new string annotation type "LibPrepKitName
" for bioplates.
comment:68 by , 9 years ago
(In [3573]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated for selecting library preparation kit and placing selected DNA aliquots in start plate wells according to empirical rules:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated with style items for kit plates and new third step for selecting library preparation kit to use. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated with new third step for selecting library preparation kit to use.
b. FunctioninitializeStep3(event)
updated to callLibPrepServlet
with command "GetLibPrepKitsAsPlates
" and callback functionkitPlatesInfoLoaded(response)
to retrieve information on available wells for kits for placing the selected number of DNA aliquots on a start plate.
c. FunctionkitPlatesInfoLoaded(response)
retrieves information on available wells for kits and calls new functionbuildKitInfoPlate(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 functionbuildKitInfoPlate(plate)
generates HTML code for displaying a table representing the FPA part of a start plate for a kit.
e. FunctioninitializeStep4(event)
among other things callsDNAServlet
with command "GetNextAutoGeneratedPlateName
" and callback functionnextPlateNameLoaded(response)
.
f. FunctionnextPlateNameLoaded(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. Functionsubmit
updated to callLibPrepServlet
with command "RegisterReagentLotNoFile
" and parameters "overwrite
" and "update
" set totrue
, parameter "referenceName
" set to the name of the selected library preparation kit, and callback functionkitUpdateSubmissionResults(response)
. This will update data for the used library preparation kit.
h. New functionkitUpdateSubmissionResults(response)
callsDnaServlet
with command "CreateDnaOrLibPlate
" with callback functionsubmissionResults(response)
.
i. Convenience functionswellStrToRow(wellStr)
andwellStrToCol(wellStr)
takes a plate well location string consisting of row letter plus column number and returns the row and column indices, respectively. - Java data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new string annotation type "LibPrepKitName
" for bioplates. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
by adding new string annotation type "LibPrepKitName
" for bioplates. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to set value of new annotationAnnotationtype.LIB_PREP_KIT_NAME
to name kit to use for created plate. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a.LibPrepServlet
constructor updated to initialize new private hash mapsMap<Integer,String> indexToRowLetterHashMap
andMap<String,Integer> rowLetterToIndexHashMap
.
b. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "GetLibPrepKitData
" to call new private methodJSONObject fetchJsonKitData(String libPrepKitNameFilter, Boolean availableFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
to obtain a JSONObject with library preparation kit data.
c. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated with new command "GetLibPrepKitsAsPlates
". It calls new private methodJSONObject 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 methodJSONObject fetchJsonKitDataForUpdate(String libPrepKitName, List<String> reservedWellsList)
calls new private methodJSONObject 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 methodJSONObject 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 methodvoid 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 valuetrue
, the list of reserved wells is retrieved, after which new private methodJSONObject 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 , 9 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctiongetWellText(well)
updated by setting the aliquot volume to 10.0µl, if the dilution factor is 1.0.
comment:70 by , 9 years ago
(In [3574]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated regarding dilution calculation:
a. The default aliquot volume of 10.5µl, i.e. volume of FPA + FPB = 21µl, should be changed to 10.0µl, if the dilution factor is 1.0, i.e. no water is added.
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctiongetWellText(well)
updated by setting the aliquot volume to 10.0µl, if the dilution factor is 1.0.
comment:71 by , 9 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:
- 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:
- 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 , 9 years ago
Design update for modified empirical rules for placing FPA aliquots on a start plate:
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid 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 , 9 years ago
(In [3577]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated when placing selected DNA aliquots in start plate wells according to empirical rules. If all FPA aliquots do not fit in available wells in the leftmost non-full column of such wells, but if they fit in some of the available wells of that column and a number of fully filled available columns to the right, this solution is used:
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid 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 , 9 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:
- JSP file
select_dna_for_start_plate.jsp
inresources/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. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. Global variables for kit number and selected kit name added.
b. FunctionkitPlatesInfoLoaded(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 functionkitOnChange(event)
. The library preparation kit menu is hidden from the user, as it is only used internally.
c. New functionkitOnChange(event)
sets the value of global variableselectedKitName
to the name of the selected kit, and unchecks all other radio buttons.
d. FunctionnextPlateNameLoaded(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 variableselectedKitName
.
e. FunctionbuildKitInfoPlate(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 , 9 years ago
(In [3582]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 3 by allowing selection of library preparation kit to use by clicking a radio button next to the kit name & description, instead of selection in a menu at the end. Unused kits, which were only shown in the menu, are now listed with radio buttons below the list of used & available kits.
- JSP file
select_dna_for_start_plate.jsp
inresources/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. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. Global variables for kit number and selected kit name added.
b. FunctionkitPlatesInfoLoaded(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 functionkitOnChange(event)
. The library preparation kit menu is hidden from the user, as it is only used internally.
c. New functionkitOnChange(event)
sets the value of global variableselectedKitName
to the name of the selected kit, and unchecks all other radio buttons.
d. FunctionnextPlateNameLoaded(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 variableselectedKitName
.
e. FunctionbuildKitInfoPlate(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 , 9 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:
- JSP file
select_dna_for_start_plate.jsp
inresources/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
". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated with event handler for button for creating a dilution protocol. The event handler couples the button to new functioncreateProtocol()
.
b. Step initialization functions updated to hide the button for creating a dilution protocol, until the last fourth step.
c. New functioncreateProtocol()
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 filelibprep_dilution_protocol2.jsp
by callingfrm.submit()
.
d. New convenience functionwellRowColumnToWellStr(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 functionformatDate(date)
added. It returns a date object as a date string in format "yyyy-mm-dd".
f. FunctiongetWellText(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. - New JSP file
libprep_dilution_protocol2.jsp
inresources/libprep/
added. It is coupled to new javascript filelibprep_dilution_protocol.js
inresources/libprep/
. - New javascript file
libprep_dilution_protocol.js
inresources/libprep/
added.
a. FunctioninitPage()
obtains submit info etc. in JSON format from posted page data, after which it calls functioninitializeProtocol(submitInfoJsonStr)
.
b. FunctioninitializeProtocol(submitInfoJsonStr)
writes the header table, and then calls functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to create the dilution table.
c. FunctiontableRowsForItems(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:77 by , 9 years ago
(In [3590]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated regarding dilution calculation and possibility to create a library preparation dilution protocol:
i. The default aliquot volume is always 10.0µl. However, if the dilution factor is > 1.0, a diluted solution of DNA plus water with volume 21µl is prepared, from which 10µl is taken for each aliquot (FPA and FPB). The extra 1µl is not used, but is needed, since there is practical difficulty in transferring all material from a solution vial to a plate well.
ii. It is now possible to create a dilution protocol for a start plate, after FPA and FPB aliquots have been allocated for reserved wells. It contains a header and a table. The header contains the name of the start plate and the current date. The table contains one row per selected DNA extract, with the following columns:
a. DNA extract name.
b. DNA plate name and well position.
c. FPA aliquot well position.
d. FPB aliquot well position.
e. Volume DNA (µl).
f. Volume water (µl).
g. Solution volume (µl).
h. Dilution factor.
i. ΔCt value.
j. DNA Qubit concentration (ng/µl).
k. Comment.
- JSP file
select_dna_for_start_plate.jsp
inresources/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
". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated with event handler for button for creating a dilution protocol. The event handler couples the button to new functioncreateProtocol()
.
b. Step initialization functions updated to hide the button for creating a dilution protocol, until the last fourth step.
c. New functioncreateProtocol()
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 filelibprep_dilution_protocol2.jsp
by callingfrm.submit()
.
d. New convenience functionwellRowColumnToWellStr(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 functionformatDate(date)
added. It returns a date object as a date string in format "yyyy-mm-dd".
f. FunctiongetWellText(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. - New JSP file
libprep_dilution_protocol2.jsp
inresources/libprep/
added. It is coupled to new javascript filelibprep_dilution_protocol.js
inresources/libprep/
. - New javascript file
libprep_dilution_protocol.js
inresources/libprep/
added.
a. FunctioninitPage()
obtains submit info etc. in JSON format from posted page data, after which it calls functioninitializeProtocol(submitInfoJsonStr)
.
b. FunctioninitializeProtocol(submitInfoJsonStr)
writes the header table, and then calls functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to create the dilution table.
c. FunctiontableRowsForItems(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 , 9 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:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctiongetWellText(well)
updated to always use dilution volume 20.0µl.
b. FunctionfetchDilutionFactor(deltaCt)
updated to apply upper cut-off restricting the dilution factor to values <= 16.0.
comment:79 by , 9 years ago
(In [3592]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated regarding dilution calculation:
a. The dilution factor calculation updated to include an upper cut-off at 16.0 (previously a lower cut-off at 1.0 has been implemented), restricting the range of the dilution factor to [1.0, 16.0].
b. Since the new dilution factor cut-off ensures that the needed amount of DNA = (solution volume)/(dilution factor) >= (solution volume)/16.0 will be >= 1.0µl, as long as the solution volume >= 16.0µl. A solution volume of 20.0µl will therefore be adequate for all DNA extracts.
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctiongetWellText(well)
updated to always use dilution volume 20.0µl.
b. FunctionfetchDilutionFactor(deltaCt)
updated to apply upper cut-off restricting the dilution factor to values <= 16.0.
comment:80 by , 9 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".
comment:81 by , 9 years ago
(In [3593]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 4 by restricting plate well context menu to two items, comment and case summary:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated by commenting out all plate well context menu items, except comment and case summary. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functioninitPage()
by commenting out event handlers for all plate well context menu items, except comment and case summary.
comment:82 by , 9 years ago
(In [3594]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 4 by removing toolbar for editing plate layout:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated by commenting out toolbar for editing plate layout. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functioninitPage()
by commenting out event handlers for toolbar buttons for editing plate layout.
comment:83 by , 9 years ago
(In [3596]) Refs #801. Refs #816. Wizard "Create new start DNA plate" updated in step 4:
a. Pool layout menu disabled.
b. Menu for controls to use commented out for now.
c. References to selecting aliquots for QC removed.
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated:
a. Menu for controls to use commented out.
b. References to selecting aliquots for QC commented out. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated by commenting out event handlers for QC quantities.
b. FunctionnextPlateNameLoaded(response)
updated by disabling pool schema menu.
c. FunctionquantityOnChange(event)
updated by commenting out references to QC quantities.
comment:84 by , 9 years ago
(In [3598]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a3
".
- Version number change to "
1.3.4a3
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:85 by , 9 years ago
(In [3599]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:86 by , 9 years ago
Development note:
- Current MeLuDI version tested with positive result under Eclipse Mars.1 4.5.1, Java 1.8.0_66, Tomcat 8, and BASE 3.6.2 (build #7012). In order to work under BASE 3.6.2, the database schema had to be updated from 121 to 126 before use.
comment:87 by , 9 years ago
(In [3608]) Refs #801. Refs #816. Wizard "Inspect/edit library preparation kit data" updated with fix of bug leading to lot numbers for index primers A703 being displayed also for index primers A704, instead of the correct ones:
- Javascript file
inspect_libprep_kit_data.js
inresources/libprep/
updated in functionupdateDetailsTable()
by fix of bug leading to lot numbers for index primers A703 being displayed also for index primers A704, instead of the correct ones.
comment:88 by , 9 years ago
(In [3609]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" updated with fix of bug when expiration date was changed after consumables file was loaded, in which case the new expiration date wasn't used. Also removal of unused code:
- Javascript file
add_consumables_lot_number_file.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated by adding event handler for expiration date input field coupled to new functionexpirationDateOnChange()
.
New functionexpirationDateOnChange()
added. It performs a validation test of the entered expiration date, and if OK, updates the expiration date in thejsonConsumables
JSONObject, if a consumables file already has been loaded.
c. Unused code removed.
comment:89 by , 9 years ago
Functional specification update:
- BASE has been extended with a
Kit
item, see BASE ticket #1958 (Add Kit item). MeLuDI kit management will therefore be updated to use this, instead of a file-based solution.
Design discussion:
- Since the addition to BASE was made in BASE version 3.7, the MeLuDI server must be updated to this version. This implies the following required changes:
a. Minimum BASE version is now 3.7.*.
b. Update of BASE version to 3.7, requires the database schema to be updated to 128.
c. Minimum Java version is now 1.8.
d. Minimum Tomcat version is now 8.
- Storage of kit data using kit items leads to changes for some kit variables:
a. Kit name is now the name of the kit item.
b. Registration date is now the entry date for the kit item.
c. Last updated date is stored as a date annotation for the kit item.
d. Expiration date is now theexpirationDate
date attribute for the kit item.
e. The "Available" flag is renamed "Active" and coupled to new kitinactive
attribute beingfalse
(it seems more natural to have a flag that should betrue
for the items of interest).
f. The number of times used is stored as an integer annotation for the kit item.
g. The list of unused well locations for FPA aliquots is stored as a comma-separated list in a string annotation for the kit item.
h. All reagent lot numbers are stored as string annotations for the kit item.
Design update:
- Outermost Ant build file
build.xml
in/
updated with new version requirements for Java and BASE. - JSP file
edit_libprep_kit_details.jsp
inresources/´libprep/
updated by exchanging name of flag "Available" for "Active". - Javascript file
edit_libprep_kit_details.js
inresources/´libprep/
updated by exchanging name of flag "Available" for "Active". FunctionsinitPage()
andsaveDetails()
updated to display the negation of kit attributeinactive
value as "yes
" or "no
". - JSP file
inspect_libprep_kit_data.jsp
inresources/´libprep/
updated by exchanging "Available" for "Active" in the library preparation kit filter menu. - Javascript file
inspect_libprep_kit_data.js
inresources/´libprep/
updated by exchanging name of flag "Available" for "Active". FunctionupdateDetailsTable()
updated to display the negation of kit attributeinactive
value as "yes
" or "no
" for the "Active" flag. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated in functionkitPlatesInfoLoaded(response)
by changing names of variables related to theinactive
attribute of a kit. The "Available" and "available" part of the name was exchanged for "Active" and "active", respectively. Corresponding changes were made in displayed text. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new kit annotation types for library preparation kit lot numbers, last updated date, number of times used, and unused wells for FPA aliquots. - Data access object class/file
Subtype.java
insrc/net/sf/basedb/meludi/dao/
updated by definition of a new library preparation kit subtype,Subtype.LIBRARY_PREPARATION_KIT
, corresponding to the same subtype in BASE. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated to include the new kit annotation types.
b. Public method<T extends BasicItem<?> & Nameable> T createMeludiRole(SessionControl sc, MeludiRole<T> role)
updated by removingBasicItem
generic argument to<T extends BasicItem & Nameable> T createMeludiRole(SessionControl sc, MeludiRole<T> role)
. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Constant and variable names related to attribute "Available" updated by exchanging the "Available" and "available" part of the name for "Active" and "active", respectively. Correspondingly, "unavailable" was exchanged for "inactive".
b. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for commands "GetLibPrepKitData
" and "GetLibPrepKitsAsPlates
" to include new first argumentDbControl dc
when calling updated private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
.
c. Private methodJSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList)
updated with first new argumentDbControl dc
and to include new first argumentDbControl dc
when calling updated private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
.
d. Private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
updated with first new argumentDbControl dc
, to call new private methodJSONArray fetchKitJsonHeaders()
to obtain header names, and to perform a database query to obtain data for the kits.
e. New private convenience methodJSONArray fetchKitJsonHeaders()
added. It returns a JSONArray with header names for library preparation kit components.
f. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "PrepareDownloadLibPrepKitDataFile
" to convert the negation of kit attributeinactive
value to strings "true
" or "false
" for the "Active" flag.
g. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "RegisterReagentLotNoFile
" to include new first argumentDbControl dc
when calling updated private methodJSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList)
and to store new or updated kit data as kit items in the database.
h. Unused code removed.
comment:90 by , 9 years ago
(In [3610]) Refs #801. Refs #816. MeLuDI library preparation wizards updated to store kit data as BASE Kit
items, added to BASE 3.7:
- Outermost Ant build file
build.xml
in/
updated with new version requirements for Java and BASE. - JSP file
edit_libprep_kit_details.jsp
inresources/´libprep/
updated by exchanging name of flag "Available" for "Active". - Javascript file
edit_libprep_kit_details.js
inresources/´libprep/
updated by exchanging name of flag "Available" for "Active". FunctionsinitPage()
andsaveDetails()
updated to display the negation of kit attributeinactive
value as "yes
" or "no
". - JSP file
inspect_libprep_kit_data.jsp
inresources/´libprep/
updated by exchanging "Available" for "Active" in the library preparation kit filter menu. - Javascript file
inspect_libprep_kit_data.js
inresources/´libprep/
updated by exchanging name of flag "Available" for "Active". FunctionupdateDetailsTable()
updated to display the negation of kit attributeinactive
value as "yes
" or "no
" for the "Active" flag. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated in functionkitPlatesInfoLoaded(response)
by changing names of variables related to theinactive
attribute of a kit. The "Available" and "available" part of the name was exchanged for "Active" and "active", respectively. Corresponding changes were made in displayed text. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new kit annotation types for library preparation kit lot numbers, last updated date, number of times used, and unused wells for FPA aliquots. - Data access object class/file
Subtype.java
insrc/net/sf/basedb/meludi/dao/
updated by definition of a new library preparation kit subtype,Subtype.LIBRARY_PREPARATION_KIT
, corresponding to the same subtype in BASE. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated to include the new kit annotation types.
b. Public method<T extends BasicItem<?> & Nameable> T createMeludiRole(SessionControl sc, MeludiRole<T> role)
updated by removingBasicItem
generic argument to<T extends BasicItem & Nameable> T createMeludiRole(SessionControl sc, MeludiRole<T> role)
. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Constant and variable names related to attribute "Available" updated by exchanging the "Available" and "available" part of the name for "Active" and "active", respectively. Correspondingly, "unavailable" was exchanged for "inactive".
b. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for commands "GetLibPrepKitData
" and "GetLibPrepKitsAsPlates
" to include new first argumentDbControl dc
when calling updated private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
.
c. Private methodJSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList)
updated with first new argumentDbControl dc
and to include new first argumentDbControl dc
when calling updated private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
.
d. Private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
updated with first new argumentDbControl dc
, to call new private methodJSONArray fetchKitJsonHeaders()
to obtain header names, and to perform a database query to obtain data for the kits.
e. New private convenience methodJSONArray fetchKitJsonHeaders()
added. It returns a JSONArray with header names for library preparation kit components.
f. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "PrepareDownloadLibPrepKitDataFile
" to convert the negation of kit attributeinactive
value to strings "true
" or "false
" for the "Active" flag.
g. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "RegisterReagentLotNoFile
" to include new first argumentDbControl dc
when calling updated private methodJSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList)
and to store new or updated kit data as kit items in the database.
h. Unused code removed.
comment:91 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated in step 4 (final step before registration):
a. It should be possible to select a previously stored library preparation protocol. (Implemented in change set [3619] 2015-11-23.)
b. Entry field for amount of DNA to use should be exchanged for minimum volume of DNA used, where a warning will be displayed if the volume is below this value. (Implemented in change set [3617] 2015-11-23.)
c. Default settings for information to be displayed for each well should be updated to only include "Used volume+water", i.e. bioplate location, ΔCt, and Qubit concentration should be optional. (Implemented in change set [3613] 2015-11-20.)
d. Default information to be displayed for each well should include index 1 & 2 primers. (Implemented in change set [3614] 2015-11-20.)
comment:92 by , 9 years ago
(In [3613]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 to not show well information on bioplate location, ΔCt, and Qubit concentration by default:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated by not checking check boxes for bioplate location, ΔCt, and Qubit concentration by default.
comment:93 by , 9 years ago
(In [3614]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 to show well information on index 1 and 2 primers:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated with definition of new style classindexprimer
, with centered text in red - Javascript
select_dna_for_start_plate.js
inresources/libprep/
updated in functiongetWellText(well)
to display index 2 and index 1 primers, one above the other, for wells containing extracts.
comment:94 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated in step 4 (final step before registration) regarding information to be displayed for each well:
a. If information on a specific subject is not chosen to be displayed for each well, then neither should warnings regarding that subject be displayed.
Design specification:
- Javascript
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctiontoggleInfo(event)
updated to callPlate.paint(Plate.getWells())
to re-paint well info to show/hide warnings after target class has been added/removed.
b. FunctiongetWellText(well)
updated to call new convenience functionhasClass(elementId, cls)
for element id "plate
" and classes "hide-location
", "hide-quality-score
", and "hide-qubitconc
" to determine if warnings should be displayed for bioplate location, ΔCt, and Qubit concentration.
c. New convenience functionhasClass(elementId, cls)
added. It returnstrue
if HTML element with idelementId
has classcls
, elsefalse
.
comment:95 by , 9 years ago
(In [3615]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) regarding information to be displayed for each well:
a. If information on a specific subject is not chosen to be displayed for each well, then neither will warnings regarding that subject be displayed.
- Javascript
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctiontoggleInfo(event)
updated to callPlate.paint(Plate.getWells())
to re-paint well info to show/hide warnings after target class has been added/removed.
b. FunctiongetWellText(well)
updated to call new convenience functionhasClass(elementId, cls)
for element id "plate
" and classes "hide-location
", "hide-quality-score
", and "hide-qubitconc
" to determine if warnings should be displayed for bioplate location, ΔCt, and Qubit concentration.
c. New convenience functionhasClass(elementId, cls)
added. It returnstrue
if HTML element with idelementId
has classcls
, elsefalse
.
comment:96 by , 9 years ago
(In [3617]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 by exchanging entry field for amount of DNA to use for minimum volume of DNA to use, where a warning will be displayed if the volume is below this value:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated by exchanging entry field for amount of DNA to use for minimum volume of DNA to use. - Javascript
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated by commenting out event handler functionquantityOnChange(event)
for regular quantity, and adding new event handlerminVolDnaOnChange(event)
for minimum DNA volume.
b. Event handler functionquantityOnChange(event)
updated by commenting out references to undefined entities.
c. New event handler functionminVolDnaOnChange(event)
added. It checks the validity of the entered value, and if OK, calls functionPlate.paint(Plate.getWells())
to re-display well data for the current start plate layout.
d. FunctionautoSelect(event)
updated by commenting out references to undefined entities.
e. FunctiongetWellText(well)
updated to display a warning message if the removed DNA volume related to an extract in a well is less than the entered minimum volume.
comment:97 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated in step 4 (final step before registration) by allowing a previously stored library preparation protocol to be selected.
Design update:
- JSP file
select_dna_for_start_plate.jsp
inresources/´libprep/
updated by adding a library preparation protocol menu in step 4, between the start plate name and kit name. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated:
a. FunctioninitializeStep4(event)
updated by loading the protocol menu with library preparation protocols by callingProtocolServlet
with command "GetProtocols
", attributesubtype
set to "LIBRARY_PROTOCOL
", and callback function toprotocolsLoaded(response)
.
b. New callback functionprotocolsLoaded(response)
added. It loads the protocol menu with retrieved library preparation protocols, after which an extranone
item is added.
c. Functionsubmit()
updated by adding the selected library preparation protocol id and name to the submitted info and call parameters. Servlet call corrected to callingDnaServlet
with command "CreateDnaOrLibPlate
".
d. FunctioncreateProtocol()
updated by adding the selected library preparation protocol id and name to the submitted info. This is intended for future use. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new bioplate annotation types for library preparation protocol id and name,BATCH_LIBRARY_PREPARATION_PROTOCOL_ID
andBATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
, respectively. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to include the new bioplate annotation types for library preparation protocol id and name. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to retrieve the library preparation protocol id and name from request parameters and store them in new annotations for the created start plate. Also, the protocol is attached to the creation event of the aliquot child extracts placed in the wells of the start plate.
comment:98 by , 9 years ago
(In [3619]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) by allowing a previously stored library preparation protocol to be selected:
- JSP file
select_dna_for_start_plate.jsp
inresources/´libprep/
updated by adding a library preparation protocol menu in step 4, between the start plate name and kit name. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated:
a. FunctioninitializeStep4(event)
updated by loading the protocol menu with library preparation protocols by callingProtocolServlet
with command "GetProtocols
", attributesubtype
set to "LIBRARY_PROTOCOL
", and callback function toprotocolsLoaded(response)
.
b. New callback functionprotocolsLoaded(response)
added. It loads the protocol menu with retrieved library preparation protocols, after which an extranone
item is added.
c. Functionsubmit()
updated by adding the selected library preparation protocol id and name to the submitted info and call parameters. Servlet call corrected to callingDnaServlet
with command "CreateDnaOrLibPlate
".
d. FunctioncreateProtocol()
updated by adding the selected library preparation protocol id and name to the submitted info. This is intended for future use. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new bioplate annotation types for library preparation protocol id and name,BATCH_LIBRARY_PREPARATION_PROTOCOL_ID
andBATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
, respectively. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to include the new bioplate annotation types for library preparation protocol id and name. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to retrieve the library preparation protocol id and name from request parameters and store them in new annotations for the created start plate. Also, the protocol is attached to the creation event of the aliquot child extracts placed in the wells of the start plate.
comment:99 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated in step 4 (final step before registration) by storing the id of the used library preparation kit with the start plate (previously the kit name was stored).
Design update:
- JSP file
select_dna_for_start_plate.jsp
inresources/´libprep/
updated by adding a hidden input field with name "hiddenLibPrepKitId
" to store the library preparation kit id in. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated:
a. FunctionkitPlatesInfoLoaded(response)
updated by adding the id for a kit to thejsonKit
JSONObject with key "id
".
b. FunctionnextPlateNameLoaded(response)
updated by retrieving the library preparation kit id from thejsonKit
JSONObject, and storing in new hidden input field with name "hiddenLibPrepKitId
".
c. Functionsubmit()
updated by retrieving the selected library preparation kit id from new hidden input field with name "hiddenLibPrepKitId
", and adding it to the submitted plate info with JSON key "kitId
".
d. FunctionkitUpdateSubmissionResults(response)
is removed, since it is never called. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated:
a. Bioplate string annotation type for library preparation kit name,LIB_PREP_KIT_NAME
, changed toBATCH_LIB_PREP_KIT_NAME
, to clearly indicate in the name, that the annotation is for a batch of items (in this case on a bioplate).
b. New integer bioplate annotation typeBATCH_LIB_PREP_KIT_ID
defined. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to include the new bioplate annotation type for library preparation kit id and the renamed annotation type for library preparation name. Code for including bioplate annotation types for library preparation protocol id and name moved to library preparation section, next to code for library preparation kit id and name. New bioplate annotation type for library preparation kit id and the renamed annotation type for library preparation name added toSubtype.DNA
annotation type category. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to retrieve the library preparation kit id and name from submit info and store them in annotations for the created start plate. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetLibPrepKitAsPlates
" to retrieve the library preparation kit id values for the performed database query, and store them in new JSONArrayjsonKitId
, to later be stored in JSONObjectjsonPlate
for each kit with JSON key "kitId
".
b. Private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
updated to retrieve the library preparation kit id values for the performed database query, and store them in new JSONArrayjsonKitId
, to later be stored in returned JSONObjectjsonConsumables
with JSON key "KitId
" (traditionally, JSON keys forjsonConsumables
start with an upper case letter).
comment:100 by , 9 years ago
(In [3621]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) by storing the id of the used library preparation kit with the start plate (previously the kit name was stored):
- JSP file
select_dna_for_start_plate.jsp
inresources/´libprep/
updated by adding a hidden input field with name "hiddenLibPrepKitId
" to store the library preparation kit id in. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated:
a. FunctionkitPlatesInfoLoaded(response)
updated by adding the id for a kit to thejsonKit
JSONObject with key "id
".
b. FunctionnextPlateNameLoaded(response)
updated by retrieving the library preparation kit id from thejsonKit
JSONObject, and storing in new hidden input field with name "hiddenLibPrepKitId
".
c. Functionsubmit()
updated by retrieving the selected library preparation kit id from new hidden input field with name "hiddenLibPrepKitId
", and adding it to the submitted plate info with JSON key "kitId
".
d. FunctionkitUpdateSubmissionResults(response)
is removed, since it is never called. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated:
a. Bioplate string annotation type for library preparation kit name,LIB_PREP_KIT_NAME
, changed toBATCH_LIB_PREP_KIT_NAME
, to clearly indicate in the name, that the annotation is for a batch of items (in this case on a bioplate).
b. New integer bioplate annotation typeBATCH_LIB_PREP_KIT_ID
defined. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to include the new bioplate annotation type for library preparation kit id and the renamed annotation type for library preparation name. Code for including bioplate annotation types for library preparation protocol id and name moved to library preparation section, next to code for library preparation kit id and name. New bioplate annotation type for library preparation kit id and the renamed annotation type for library preparation name added toSubtype.DNA
annotation type category. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to retrieve the library preparation kit id and name from submit info and store them in annotations for the created start plate. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetLibPrepKitAsPlates
" to retrieve the library preparation kit id values for the performed database query, and store them in new JSONArrayjsonKitId
, to later be stored in JSONObjectjsonPlate
for each kit with JSON key "kitId
".
b. Private methodJSONObject fetchJsonKitData(DbControl dc, String libPrepKitNameFilter, Boolean activeFilter, Boolean usedFilter, Integer minUnusedFpaPlateLocs)
updated to retrieve the library preparation kit id values for the performed database query, and store them in new JSONArrayjsonKitId
, to later be stored in returned JSONObjectjsonConsumables
with JSON key "KitId
" (traditionally, JSON keys forjsonConsumables
start with an upper case letter).
comment:101 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated in step 4 (final step before registration) by allowing a library preparation file to be downloaded, that is intended to be imported to the Illumina MiSeq software before analysis.
Design discussion:
Implementing this functionality has the same problem as previously encountered for downloading consumables and reagent lot number files for a kit (see e.g. discussion 2015-10-13). The problem is 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.
Design update:
- JSP file
select_dna_for_start_plate.jsp
inresources/´libprep/
updated in step 4 by adding a button to download a library preparation file. The button is placed below the plate display, over the navigation buttons. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated:
a. FunctioninitPage()
updated by adding an event handler for the library preparation file download button, coupled to new functiondownloadLibPrepFile()
.
b. New functiondownloadLibPrepFile()
added. It sends a "POST" request to command "PrepareDownloadLibPrepFile
" in servetLibPrepServlet
, with callback functiondownloadLibPrepFileResults(response)
.
c. New functiondownloadLibPrepFileResults(response)
added. It retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadLibPrepFile
" in servletLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated with new command "DownloadLibPrepFile
". It retrieves a path to a temporary file, reads the data and adds it to an output buffer, after which it removes the temporary file.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated with new command "PrepareDownloadLibPrepFile
". It stores the sent data in a temporary file on the server and sends back the file path.
comment:102 by , 9 years ago
(In [3624]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 4 (final step before registration) by allowing a library preparation file to be downloaded, that is intended to be imported to the Illumina MiSeq software before analysis:
- JSP file
select_dna_for_start_plate.jsp
inresources/´libprep/
updated in step 4 by adding a button to download a library preparation file. The button is placed below the plate display, over the navigation buttons. - Javascript file
select_dna_for_start_plate.js
inresources/´libprep/
updated:
a. FunctioninitPage()
updated by adding an event handler for the library preparation file download button, coupled to new functiondownloadLibPrepFile()
.
b. New functiondownloadLibPrepFile()
added. It sends a "POST" request to command "PrepareDownloadLibPrepFile
" in servetLibPrepServlet
, with callback functiondownloadLibPrepFileResults(response)
.
c. New functiondownloadLibPrepFileResults(response)
added. It retrieves the path to a temporary file on the server and constructs a url for a "GET" request to command "DownloadLibPrepFile
" in servletLibPrepServlet
, after which "window.open(url)
" is called to present a download file dialog. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated with new command "DownloadLibPrepFile
". It retrieves a path to a temporary file, reads the data and adds it to an output buffer, after which it removes the temporary file.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated with new command "PrepareDownloadLibPrepFile
". It stores the sent data in a temporary file on the server and sends back the file path.
comment:103 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated for registration of a start plate to also update the used library preparation kit regarding number of times used and unused wells for FPA aliquots.
Design discussion:
Creation of a start DNA reaction plate with DNA aliquots is performed by servlet DnaServlet
, while update of kit data is performed by servlet LibPrepServlet
. The natural implementation is therefore to update the javascript callback function for the first servlet call to make a call to the next servlet for the second update. However, in order to get all result messages displayed, messages from the first servlet call should be transferred to the second.
Design update:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctionsubmissionResults(response)
(callback function for call toDnaServlet
from functionsubmit()
) updated by calling servletLibPrepServlet
with command "RegisterReagentLotNoFile
" and attributes "overwrite
" and "update
" set totrue
. Response messages from previous operation are transferred as a JSONArray to submitted JSONObject data with JSON key "transferredMessages
". Callback function for the new servlet call is new functionupdateKitDataResults(response)
.
b. New functionupdateKitDataResults(response)
added. It displays response messages and shows the "Restart" button. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Private functionJSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList)
updated with fix of bugs when retrieving the "Active
" flag and number of times used from JSONArrays (code had not been updated from old implementation, when these values were stored as strings, instead of boolean and integer values).
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "RegisterReagentLotNoFile
" to retrieve JSONArray of transferred messages and transfer them to currentjsonMessages
JSONArray.
comment:104 by , 9 years ago
(In [3626]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated for registration of a start plate to also update the used library preparation kit regarding number of times used and unused wells for FPA aliquots:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctionsubmissionResults(response)
(callback function for call toDnaServlet
from functionsubmit()
) updated by calling servletLibPrepServlet
with command "RegisterReagentLotNoFile
" and attributes "overwrite
" and "update
" set totrue
. Response messages from previous operation are transferred as a JSONArray to submitted JSONObject data with JSON key "transferredMessages
". Callback function for the new servlet call is new functionupdateKitDataResults(response)
.
b. New functionupdateKitDataResults(response)
added. It displays response messages and shows the "Restart" button. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Private functionJSONObject fetchJsonKitDataForUpdate(DbControl dc, String libPrepKitName, List<String> reservedWellsList)
updated with fix of bugs when retrieving the "Active
" flag and number of times used from JSONArrays (code had not been updated from old implementation, when these values were stored as strings, instead of boolean and integer values).
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "RegisterReagentLotNoFile
" to retrieve JSONArray of transferred messages and transfer them to currentjsonMessages
JSONArray.
comment:105 by , 9 years ago
Design update:
- When
LibPrepServlet
protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
was updated with command "RegisterReagentLotNoFile
" 2015-10-13, its purpose was to register kit data from a "Consumables" lot number file. However, since then the command has been updated to be used for registering kit data entered in a web form, and to update data for existing kits. The name of the command should therefore be changed to "RegisterKits
".
- Javascript files
add_consumables_lot_number_file.js
,add_new_libprep_kit.js
,inspect_libprep_kit_data.js
, andselect_dna_for_start_plate.js
, all inresources/libprep/
, updated by exchangingLibPrepServlet
command "RegisterReagentLotNoFile
" for "RegisterKits
". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
by exchanging name of command "RegisterReagentLotNoFile
" for "RegisterKits
".
comment:106 by , 9 years ago
(In [3627]) Refs #801. Refs #816. When LibPrepServlet
protected method void doPost(HttpServletRequest req, HttpServletResponse resp)
was updated with command "RegisterReagentLotNoFile
" 2015-10-13, its purpose was to register kit data from a "Consumables" lot number file. However, since then the command has been updated to be used for registering kit data entered in a web form, and to update data for existing kits. The name of the command is therefore changed to "RegisterKits
".
- Javascript files
add_consumables_lot_number_file.js
,add_new_libprep_kit.js
,inspect_libprep_kit_data.js
, andselect_dna_for_start_plate.js
, all inresources/libprep/
, updated by exchangingLibPrepServlet
command "RegisterReagentLotNoFile
" for "RegisterKits
". - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
by exchanging name of command "RegisterReagentLotNoFile
" for "RegisterKits
".
comment:107 by , 9 years ago
(In [3628]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated for registration of a start plate to store used kit with creation events for the plate and DNA child extracts placed on it:
- Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to store used kit with creation events for start DNA reaction plate and DNA child extracts placed on the plate.
comment:108 by , 9 years ago
Functional specification update:
- It should be possible to add control reference standards as extra material of type "DNA". In addition to properties for other extra material, there is need to store a lot number to control items.
Design update:
- Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new string extract annotation typeCONTROL_LOT_NO
defined. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to include the new extract annotation type for control lot number. The new annotation type is added toSubtype.DNA
annotation type category.
comment:109 by , 9 years ago
(In [3630]) Refs #801. Refs #816. In order to make it possible to add control reference standards as extra material of type "DNA", an annotation type for control item lot number is defined for DNA extracts:
- Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new string extract annotation typeCONTROL_LOT_NO
defined. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to include the new extract annotation type for control lot number. The new annotation type is added toSubtype.DNA
annotation type category.
comment:110 by , 9 years ago
Design note regarding registration of control reference standards as extra material of type "DNA":
- Currently, these standards are obtained from Horizon Discovery, and it is therefore recommended that they are given names starting with "
Horizon
".
comment:111 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated in step 3 (the step after initial selection of DNA extracts, concerned with selecting a library preparation kit to use) by allowing manual selection of extra DNA extracts and/or control items:
a. Three new buttons should be added to the top of the form, "Add extract...", "Add control...", and "Reset".
b. Clicking the "Add extract..." button should open a BASE pop-up extract selection dialog, with filters: Name: "%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
". Selecting any extract items should make the step 3 form update with the new item selection, after the "OK" is pressed in the dialog.
c. Clicking the "Add control..." button should open a BASE pop-up extract selection dialog, with filters: Name: "Horizon%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
". Selecting any extract items should make the step 3 form update with the new item selection, after the "OK" is pressed in the dialog.
d. Clicking the "Reset" button should remove any manually made extra item selections, and make the step 3 form update with the original item selection.
Design discussion:
- The first version of manual extract selection does not check if any of the manually selected extracts already has been selected. Neither is the updated extract list sorted in any special order. This and other functionality can be added in the future, if so desired.
- Code for displaying a BASE pop-up extract selection dialog is taken from the commented out "Manual select..." button in the toolbar above the plate display in step 4 of the wizard. This code contains a lot of library "magic" working behind the scenes, such as the way a callback function for the dialog is set with call "
Events.addEventHandler('plate', 'base-selected', selectdna.manuallySelected)
", whereselectdna.manuallySelected(event)
is the callback function. The coupling to the call for displaying the BASE selection dialog, "Dialogs.selectItem('EXTRACT', 'plate', 1, url)
" seems to go via argumentplate
, in a way that is not quite clear. For the original manual select dialog in step 4,plate
is a natural argument variable, since the plate display is updated with the new items after the dialog is closed, but in the case discussed here, no plate has been displayed yet. However, in order not to risk breaking code that works, as much as possible has been kept identical to the original code, but this might lead to side effects, if the original toolbar functionality, or part of it, should be reinstated in the future. In the latter case, the code may have to be re-written.
Design update:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated in step 3 by adding buttons for manual selection of extra DNA items, control items, and reset of the manually made selection. The buttons are placed at the top of the form, above the display of active used kits as plates. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. Two new global variables defined: A JSONArray for keeping track of the originally selected extract names, and a flag indicating whether the original names have been loaded into the former.
b. FunctioninitPage()
updated by adding event handlers for the new buttons in step 3. The "Add extract..." button is coupled to new functionmanualSelectExtract()
, the "Add control..." button is coupled to new functionmanualSelectControl()
, and the "Reset" button is coupled to new functionmanualSelectReset()
. An event handler is coupled to the BASE selection dialog used for the two first buttons, coupling it to new callback functionmanuallySelectedExtract(event)
.
c. FunctioninitializeStep1(response)
is updated by resetting the JSONArray for keeping track of the originally selected extract names, and the flag indicating whether the original names have been loaded into the former.
d. FunctioninitializeStep3(response)
is updated by disabling the three new buttons together with the "Next" button until the kit tables have been loaded. Also, the kit table section is now hidden until the kit tables have been loaded, since older versions of the tables could confuse the user, when the form is re-displayed. The first time the function is used, the JSONArray for keeping track of the originally selected extract names is loaded with the latter, and the flag indicating whether the original names have been loaded is then set totrue
. The message displayed while the kit tables are loading has been changed from "Loading information about plate..." to the more correct "Loading information about kits...".
e. FunctionkitPlatesInfoLoaded(response)
updated by enabling the three new buttons together with the "Next" button after the kit tables have been loaded, and show the kit table section.
f. New functionmanualSelectExtract(event)
added. It callsDialogs.selectItem('EXTRACT', 'plate', 1, url)
to open up a BASE extract selection dialog with filters: Name: "%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
".
g. New functionmanualSelectControl(event)
added. It callsDialogs.selectItem('EXTRACT', 'plate', 1, url)
to open up a BASE extract selection dialog with filters: Name: "Horizon%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
".
h. New functionmanuallySelectedExtract(event)
added. It is callback function for the BASE extract selection dialog, and adds the names of the extracts selected in the dialog to the JSONArray of previously selected, after which functioninitializeStep3(event)
is called to re-display the form.
i. New functionmanualSelectReset()
added. It is coupled to the "Reset" button, and resets the JSONArray of selected extract names to the original ones, after which functioninitializeStep3(event)
is called to re-display the form.
comment:112 by , 9 years ago
(In [3631]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 3 (the step after initial selection of DNA extracts, concerned with selecting a library preparation kit to use) by allowing manual selection of extra DNA extracts and/or control items:
a. Three new buttons are added to the top of the form, "Add extract...", "Add control...", and "Reset".
b. Clicking the "Add extract..." button opens a BASE pop-up extract selection dialog, with filters: Name: "%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
". Selecting any extract items makes the step 3 form update with the new item selection, after the "OK" is pressed in the dialog.
c. Clicking the "Add control..." button opens a BASE pop-up extract selection dialog, with filters: Name: "Horizon%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
". Selecting any extract items makes the step 3 form update with the new item selection, after the "OK" is pressed in the dialog.
d. Clicking the "Reset" button removes any manually made extra item selections, and makes the step 3 form update with the original item selection.
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated in step 3 by adding buttons for manual selection of extra DNA items, control items, and reset of the manually made selection. The buttons are placed at the top of the form, above the display of active used kits as plates. - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. Two new global variables defined: A JSONArray for keeping track of the originally selected extract names, and a flag indicating whether the original names have been loaded into the former.
b. FunctioninitPage()
updated by adding event handlers for the new buttons in step 3. The "Add extract..." button is coupled to new functionmanualSelectExtract()
, the "Add control..." button is coupled to new functionmanualSelectControl()
, and the "Reset" button is coupled to new functionmanualSelectReset()
. An event handler is coupled to the BASE selection dialog used for the two first buttons, coupling it to new callback functionmanuallySelectedExtract(event)
.
c. FunctioninitializeStep1(response)
is updated by resetting the JSONArray for keeping track of the originally selected extract names, and the flag indicating whether the original names have been loaded into the former.
d. FunctioninitializeStep3(response)
is updated by disabling the three new buttons together with the "Next" button until the kit tables have been loaded. Also, the kit table section is now hidden until the kit tables have been loaded, since older versions of the tables could confuse the user, when the form is re-displayed. The first time the function is used, the JSONArray for keeping track of the originally selected extract names is loaded with the latter, and the flag indicating whether the original names have been loaded is then set totrue
. The message displayed while the kit tables are loading has been changed from "Loading information about plate..." to the more correct "Loading information about kits...".
e. FunctionkitPlatesInfoLoaded(response)
updated by enabling the three new buttons together with the "Next" button after the kit tables have been loaded, and show the kit table section.
f. New functionmanualSelectExtract(event)
added. It callsDialogs.selectItem('EXTRACT', 'plate', 1, url)
to open up a BASE extract selection dialog with filters: Name: "%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
".
g. New functionmanualSelectControl(event)
added. It callsDialogs.selectItem('EXTRACT', 'plate', 1, url)
to open up a BASE extract selection dialog with filters: Name: "Horizon%.d
", Type: "DNA
", and Remaining quantity (µg): ">0
".
h. New functionmanuallySelectedExtract(event)
added. It is callback function for the BASE extract selection dialog, and adds the names of the extracts selected in the dialog to the JSONArray of previously selected, after which functioninitializeStep3(event)
is called to re-display the form.
i. New functionmanualSelectReset()
added. It is coupled to the "Reset" button, and resets the JSONArray of selected extract names to the original ones, after which functioninitializeStep3(event)
is called to re-display the form.
comment:113 by , 9 years ago
Functional specification update:
- Wizard "Register new extra material" in sub-section "Case registration" in section "Sample processing wizards" should be updated to make it possible to add a control lot number, when registering a control reference standard as extra material of type "DNA". To emphasize that the new attribute is only intended to be used for special types of extra material, the interface should be as follows:
a. Under header "Control reference std." a check box and an input field should be placed.
b. If the check box is unchecked (default), the input field is disabled.
c. If the type is not "DNA", the check box should be unchecked, and the input field cleared and disabled.
d. At registration, an optional control lot number should be stored in extract annotation "ControlLotNo
" (Annotationtype.CONTROL_LOT_NO
) for the created extra material DNA extract.
Design update:
- Javascript file
extramaterial.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep2()
updated by adding a check box and an input field between arrival date and operator delivery comment. An event handler couples the check box changes to new functioncontrolOnChange(event)
. The control lot number input field is initially disabled.
b. FunctiontypeOnChange(event)
updated to enable the control check box, if the type is "DNA", otherwise uncheck and disable the check box, as well as clearing and disabling the control lot number input field.
c. New functioncontrolOnChange(event)
added. If the control check box is checked, the control lot number input field is enabled, otherwise it is cleared and disabled.
d. Functionsubmit()
updated by transferring the value of control lot number input field as submitted info with JSONObject key "controllotno
" for each item. - Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "CreateExtraMaterial
" to obtain the control lot number string for each item, and if the number is notnull
or an empty string, store the value as annotation of typeAnnotationtype.CONTROL_LOT_NO
for the extract.
comment:114 by , 9 years ago
(In [3637]) Refs #801. Refs #816. Functional specification update:
- Wizard "Register new extra material" in sub-section "Case registration" in section "Sample processing wizards" updated to make it possible to add a control lot number, when registering a control reference standard as extra material of type "DNA". To emphasize that the new attribute is only intended to be used for special types of extra material, the interface is as follows:
a. Under header "Control reference std." a check box and an input field are placed.
b. If the check box is unchecked (default), the input field is disabled.
c. If the type is not "DNA", the check box is unchecked, and the input field cleared and disabled.
d. At registration, an optional control lot number is stored in extract annotation "ControlLotNo
" (Annotationtype.CONTROL_LOT_NO
) for the created extra material DNA extract.
- Javascript file
extramaterial.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep2()
updated by adding a check box and an input field between arrival date and operator delivery comment. An event handler couples the check box changes to new functioncontrolOnChange(event)
. The control lot number input field is initially disabled.
b. FunctiontypeOnChange(event)
updated to enable the control check box, if the type is "DNA", otherwise uncheck and disable the check box, as well as clearing and disabling the control lot number input field.
c. New functioncontrolOnChange(event)
added. If the control check box is checked, the control lot number input field is enabled, otherwise it is cleared and disabled.
d. Functionsubmit()
updated by transferring the value of control lot number input field as submitted info with JSONObject key "controllotno
" for each item. - Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "CreateExtraMaterial
" to obtain the control lot number string for each item, and if the number is notnull
or an empty string, store the value as annotation of typeAnnotationtype.CONTROL_LOT_NO
for the extract.
comment:115 by , 9 years ago
(In [3638]) Refs #801. Refs #816. Bug fixed in function isSpecimen(item)
in utility javascript file extraction_utils.js
in resources/sampleproc/
, that did not return true
for extra material items with names starting with figures, e.g. "12_Xtra_49
". This led among other problems to no QIAcube position being defined for such an item in DNA/RNA extraction wizards.
- Javascript file
extraction_utils.js
inresources/sampleproc/
updated in functionisSpecimen(item)
by modifying regular expression pattern to include item names starting with figures.
comment:116 by , 9 years ago
(In [3639]) Refs #801. Refs #816. Wizard "Register new extra material" in sub-section "Case registration" in section "Sample processing wizards" updated by displaying information on name conventions for extra material, and extended checks, that these are followed:
- JSP file
extramaterial.jsp
inresources/sampleproc/
updated in step 2 by displaying new header section with information on name conventions for extra material. - Javascript file
extramaterial.js
inresources/sampleproc/
updated in functionnameOnChange(event)
by adding checks that name:
a. Does not start with underscore.
b. Does not start with hyphen.
c. Only contains letters, figures, underscores, and hyphens.
d. Contains at least one letter.
comment:117 by , 9 years ago
Functional specification update:
- Since protocol and kit can be set for bioplate creation events, there is no need to use annotations for this.
Design update:
- Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated by removing bioplate annotation typesBATCH_LIBRARY_PREPARATION_PROTOCOL_ID
,BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
,BATCH_LIB_PREP_KIT_ID
, andBATCH_LIB_PREP_KIT_NAME
. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
by removing code for installing now removed bioplate annotationsBATCH_LIBRARY_PREPARATION_PROTOCOL_ID
,BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
,BATCH_LIB_PREP_KIT_ID
, andBATCH_LIB_PREP_KIT_NAME
. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to set library preparation protocol for the bioplate creation event. Code for setting values of now removed bioplate annotationsBATCH_LIBRARY_PREPARATION_PROTOCOL_ID
,BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
,BATCH_LIB_PREP_KIT_ID
, andBATCH_LIB_PREP_KIT_NAME
has been removed.
comment:118 by , 9 years ago
(In [3641]) Refs #801. Refs #816. Since protocol and kit can be set for bioplate creation events, there is no need to use annotations for this:
- Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated by removing bioplate annotation typesBATCH_LIBRARY_PREPARATION_PROTOCOL_ID
,BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
,BATCH_LIB_PREP_KIT_ID
, andBATCH_LIB_PREP_KIT_NAME
. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
by removing code for installing now removed bioplate annotationsBATCH_LIBRARY_PREPARATION_PROTOCOL_ID
,BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
,BATCH_LIB_PREP_KIT_ID
, andBATCH_LIB_PREP_KIT_NAME
. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateDnaOrLibPlate
" to set library preparation protocol for the bioplate creation event. Code for setting values of now removed bioplate annotationsBATCH_LIBRARY_PREPARATION_PROTOCOL_ID
,BATCH_LIBRARY_PREPARATION_PROTOCOL_NAME
,BATCH_LIB_PREP_KIT_ID
, andBATCH_LIB_PREP_KIT_NAME
has been removed.
comment:119 by , 9 years ago
(In [3642]) Refs #801. Refs #816. MeLuDI index page updated:
a. MeLuDI sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated by removing entries for currently unused wizards.
b. MeLuDI "admin
" section updated by removing entry for updating processed start lists with lot numbers from extracts in sub-section "Special conversion tools". This tool was only needed when updating to MeLuDI v1.3.2.
- JSP file
index.jsp
inresources/
updated:
a. MeLuDI sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated by removing entries for currently unused wizards.
b. MeLuDI "admin
" section updated by removing entry for updating processed start lists with lot numbers from extracts in sub-section "Special conversion tools".
comment:120 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated in step 3 when displaying used and available kits as plates. A kit should not be included if the number of reserved wells according to special placement rules is less than the number of needed wells:
Design update:
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetLibPrepKitsAsPlates
" to count the number of reserved wells for a kit, and only include it in the returned JSONArray, if the number of reserved wells is greater or equal to the number of needed wells.
comment:121 by , 9 years ago
(In [3643]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated in step 3 when displaying used and available kits as plates. A kit is now not included if the number of reserved wells according to special placement rules is less than the number of needed wells:
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetLibPrepKitsAsPlates
" to count the number of reserved wells for a kit, and only include it in the returned JSONArray, if the number of reserved wells is greater or equal to the number of needed wells.
comment:122 by , 9 years ago
Functional specification update:
- Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", should be updated to only include items of interest in selection menus:
a. Step 1 should be updated to only include start lists with at least one item, that has not been placed on a start plate (library plate).
b. Step 2 should be updated to only include DNA extracts, that have not been placed on a start plate (library plate).
c. The counter next to the entry for wizard "Create new start DNA plate" on MeLuDI index page should be updated to only include start lists with at least one item, that has not been placed on a start plate (library plate).
Design discussion:
If a DNA extract has a child extract with name ending in ".fpa
", the former is regarded as having been placed on a start plate (library plate).
Design update:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated to set value of new parameter "anItemNotOnLibPlate
" totrue
, when callingExtractionServlet
for command "GetProcessedStartItemLists
", in order to only include start lists with at least one item, that has not been placed on a start plate (library plate).
b. FunctioninitializeStep2()
updated to set value of new parameter "itemNotOnLibPlate
" totrue
, when callingExtractionServlet
for command "GetListOfItemsFromStartItemLists
", in order to only include DNA extracts, that have not been placed on a start plate (library plate). - Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for commands "GetStartItemLists
", "GetUnprocessedStartItemLists
", and "GetProcessedStartItemLists
", to obtain value for new Boolean parameter "anItemNotOnLibPlate
" and use that as fourth argument, when calling updated private methodJSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate)
.
b. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "GetListOfItemsFromStartItemLists
", to obtain value for new Boolean parameter "itemNotOnLibPlate
" and if the value istrue
, only include a DNA extract in the returned JSONArray, if new private methodboolean dnaHasNoFpaChild(DbControl dc, Extract e)
returnstrue
.
c. Private methodJSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate)
updated with new fourth argument "Boolean anItemNotOnLibPlate
". if value ofanItemNotOnLibPlate
istrue
, new private methodboolean dnaHasNoFpaChild(DbControl dc, Extract e)
is called for DNA extracts in the start lists, in order to only include start lists with at least one item, that has not been placed on a start plate (library plate).
d. New private methodboolean dnaHasNoFpaChild(DbControl dc, Extract e)
added. It checks whether an extract is of type DNA and has no FPA child items, in which case it returnstrue
, elsefalse
. - JSP file
index.jsp
inresources/
updated in counter for entry for wizard "Create new start DNA plate" to display value of new counter "start-lists-processed-an-item-not-on-lib-plate
". - Java counter service class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated in private methodvoid countItemLists(DbControl dc, JSONObject json)
to count the number of processed start lists with at least one item, that has not been placed on a start plate (library plate), and return the number with JSON key "start-lists-processed-an-item-not-on-lib-plate
".
comment:123 by , 9 years ago
(In [3644]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated to only include items of interest in selection menus:
a. Step 1 updated to only include start lists with at least one item, that has not been placed on a start plate (library plate).
b. Step 2 updated to only include DNA extracts, that have not been placed on a start plate (library plate).
c. The counter next to the entry for wizard "Create new start DNA plate" on MeLuDI index page updated to only include start lists with at least one item, that has not been placed on a start plate (library plate).
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated to set value of new parameter "anItemNotOnLibPlate
" totrue
, when callingExtractionServlet
for command "GetProcessedStartItemLists
", in order to only include start lists with at least one item, that has not been placed on a start plate (library plate).
b. FunctioninitializeStep2()
updated to set value of new parameter "itemNotOnLibPlate
" totrue
, when callingExtractionServlet
for command "GetListOfItemsFromStartItemLists
", in order to only include DNA extracts, that have not been placed on a start plate (library plate). - Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for commands "GetStartItemLists
", "GetUnprocessedStartItemLists
", and "GetProcessedStartItemLists
", to obtain value for new Boolean parameter "anItemNotOnLibPlate
" and use that as fourth argument, when calling updated private methodJSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate)
.
b. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "GetListOfItemsFromStartItemLists
", to obtain value for new Boolean parameter "itemNotOnLibPlate
" and if the value istrue
, only include a DNA extract in the returned JSONArray, if new private methodboolean dnaHasNoFpaChild(DbControl dc, Extract e)
returnstrue
.
c. Private methodJSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate)
updated with new fourth argument "Boolean anItemNotOnLibPlate
". if value ofanItemNotOnLibPlate
istrue
, new private methodboolean dnaHasNoFpaChild(DbControl dc, Extract e)
is called for DNA extracts in the start lists, in order to only include start lists with at least one item, that has not been placed on a start plate (library plate).
d. New private methodboolean dnaHasNoFpaChild(DbControl dc, Extract e)
added. It checks whether an extract is of type DNA and has no FPA child items, in which case it returnstrue
, elsefalse
. - JSP file
index.jsp
inresources/
updated in counter for entry for wizard "Create new start DNA plate" to display value of new counter "start-lists-processed-an-item-not-on-lib-plate
". - Java counter service class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated in private methodvoid countItemLists(DbControl dc, JSONObject json)
to count the number of processed start lists with at least one item, that has not been placed on a start plate (library plate), and return the number with JSON key "start-lists-processed-an-item-not-on-lib-plate
".
comment:124 by , 9 years ago
(In [3646]) Refs #801. Refs #816. Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated:
a. Bug fixed that blocked registration, unless a reagent lot number file had been downloaded.
b. Registration is now blocked unless a kit name is entered.
c. Fields are now cleared if wizard is restarted.
- Javascript file
add_new_libprep_kit.js
inresources/libprep/
updated:
a. New global boolean variablekitNameIsValid
is added.
b. FunctioninitPage()
updated by adding new event handlerkitNameOnChange()
to changes of kit name field values.
c. FunctioninitializeStep1()
updated by calling functionclearReagents()
to clear reagent input fields.
d. FunctionvalidateStep1()
updated by calling functionaddConsumablesInput()
to add reagent input to consumables JSONObject. Also checks that kit name is valid.
e. FunctionclearReagents()
updated to call new functionkitNameOnChange()
after reagent fields have been cleared, in order to mark blank name as invalid.
f. New functionkitNameOnChange()
added. It checks that the entered kit name is notnull
or an empty string.
g. FunctionparseReagentFile()
updated by calling new functionkitNameOnChange()
after reagent field values have been updated, in order to check that kit name is valid.
comment:125 by , 9 years ago
Bug fix:
- Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated by fix of bug that made existing kit items being overwritten with new data:
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "RegisterKits
" to only update an existing kit, if parameter "overwrite
" has valuetrue
(and otherwise only create a new kit item, if no previous kit item with the same name already exists).
comment:126 by , 9 years ago
(In [3647]) Refs #801. Refs #816. Wizard "Add new consumables lot number file" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated by fix of bug that made existing kit items being overwritten with new data:
- Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "RegisterKits
" to only update an existing kit, if parameter "overwrite
" has valuetrue
(and otherwise only create a new kit item, if no previous kit item with the same name already exists).
comment:127 by , 9 years ago
(In [3648]) Refs #801. Refs #816. Wizard "Create new start DNA plate" in section "Library preparation wizards", sub-section "Start DNA plate wizards", updated with fix of bug in javascript convenience function for formatting dates in YYYY-MM-DD format, that led to initial zeroes not being inserted for month and day values < 10.
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated by fix of bug in convenience functionformatDate(date)
for formatting dates in YYYY-MM-DD format, that led to initial zeroes not being inserted for month and day values < 10.
comment:128 by , 9 years ago
(In [3649]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a4
".
- Version number change to "
1.3.4a4
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:129 by , 9 years ago
(In [3650]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:130 by , 9 years ago
Functional specification update:
- A new wizard, "Inspect start DNA plate" should be added in section "Library preparation wizards", sub-section "Start DNA plate wizards":
a. Step 1 should show a menu of created start plates (library plates), from which one can be chosen.
b. Step 2 should display data for the selected start plate, similar to that shown in step 4 of wizard "Create new start DNA plate", except that no data can be changed (fields are disabled). However, it should be possible to select what information to display for each cell in the plate display, including warnings.
c. Step 4 should include a button for creating a library preparation file for download.
d. Step 4 should include a button for creating a library preparation dilution protocol/report copy. The created document will have the name "Dilution Report" instead of "Dilution Protocol".
Design discussion:
The web form will be based on the JSP and javascript files for wizard "Create new start DNA plate", select_dna_for_start_plate.jsp
and select_dna_for_start_plate.js
in resources\libprep\
. By designing the servlet to returning information on the selected start plate in a JSON format similar to that used for step 4 in wizard "Create new start DNA plate", much of the javascript functionality can be reused.
Design update:
- JSP file
index.jsp
inresources/
updated with new entry "Inspect start DNA plate" added in section "Library preparation wizards", sub-section "Start DNA plate wizards". It is coupled to new JSP fileinspect_start_plate.jsp
inresources/libprep/
, and counter "dna-plates
". - New JSP file
inspect_start_plate.jsp
inresources/libprep/
added. It is coupled to new javascript fileinspect_start_plate.js
, also inresources/libprep/
. - New javascript file
inspect_start_plate.js
inresources/libprep/
added, based on javascript fileselect_dna_for_start_plate.js
. While much of the functionality is re-used, some of the most notable changes are as follows:
a. FunctioninitPage()
callsDnaServlet
with command "GetStartPlates
" to get data on existing start plates returned to callback functioninitializeStep1(response)
.
b. FunctioninitializeStep1(response)
fills a start plate selection menu with returned start plate data. Each entry shows start plate name, number of MeLuDI and extra items, respectively, and the registration date of the plate.
c. FunctioninitializeStep2(event)
retrieves JSON data for the selected start plate and fills form fields with data for the plate, and cells in the plate view with data for the DNA extracts on the plate, after whichPlate.paint(Plate.getWells())
is called to create the plate view.
d. FunctioncreateProtocol()
callsfrm.submit()
to change JSP file tolibprep_dilution_protocol2.jsp
to create a dilution report from submitted data, wheredocMode
is set to "report
". - JSP file
libprep_dilution_protocol2.jsp
inresources/libprep/
updated in protocol header to set id for dilution protocol date name to "protocolDateName
", making it possible to set the name from javascript. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functioninitializeProtocol(submitInfoJsonStr)
to setdocMode
to "protocol
" by default, and to adjust the header name and dilution protocol date name, depending on whetherdocMode
is set to "protocol
" or "report
". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functioncreateProtocol()
to set value of submitted parameterdocMode
to "protocol
", instead of "report
". - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
with new command "GetStartPlates
". It performs a query to obtain information on plates of desired type and with names starting with desired prefix. Data for the found plates and extracts on them are returned in a JSON format similar to that used for step 4 in wizard "Create new start DNA plate", in order to reuse as much javascript functionality, as possible.
comment:131 by , 9 years ago
(In [3652]) Refs #801. Refs #816. A new wizard, "Inspect start DNA plate", added in section "Library preparation wizards", sub-section "Start DNA plate wizards":
a. Step 1 shows a menu of created start plates (library plates), from which one can be chosen.
b. Step 2 displays data for the selected start plate, similar to that shown in step 4 of wizard "Create new start DNA plate", except that no data can be changed (fields are disabled). However, it is possible to select what information to display for each cell in the plate display, including warnings.
c. Step 4 includes a button for creating a library preparation file for download.
d. Step 4 includes a button for creating a library preparation dilution protocol/report copy. The created document has the name "Dilution Report" instead of "Dilution Protocol".
- JSP file
index.jsp
inresources/
updated with new entry "Inspect start DNA plate" added in section "Library preparation wizards", sub-section "Start DNA plate wizards". It is coupled to new JSP fileinspect_start_plate.jsp
inresources/libprep/
, and counter "dna-plates
". - New JSP file
inspect_start_plate.jsp
inresources/libprep/
added. It is coupled to new javascript fileinspect_start_plate.js
, also inresources/libprep/
. - New javascript file
inspect_start_plate.js
inresources/libprep/
added, based on javascript fileselect_dna_for_start_plate.js
. While much of the functionality is re-used, some of the most notable changes are as follows:
a. FunctioninitPage()
callsDnaServlet
with command "GetStartPlates
" to get data on existing start plates returned to callback functioninitializeStep1(response)
.
b. FunctioninitializeStep1(response)
fills a start plate selection menu with returned start plate data. Each entry shows start plate name, number of MeLuDI and extra items, respectively, and the registration date of the plate.
c. FunctioninitializeStep2(event)
retrieves JSON data for the selected start plate and fills form fields with data for the plate, and cells in the plate view with data for the DNA extracts on the plate, after whichPlate.paint(Plate.getWells())
is called to create the plate view.
d. FunctioncreateProtocol()
callsfrm.submit()
to change JSP file tolibprep_dilution_protocol2.jsp
to create a dilution report from submitted data, wheredocMode
is set to "report
". - JSP file
libprep_dilution_protocol2.jsp
inresources/libprep/
updated in protocol header to set id for dilution protocol date name to "protocolDateName
", making it possible to set the name from javascript. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functioninitializeProtocol(submitInfoJsonStr)
to setdocMode
to "protocol
" by default, and to adjust the header name and dilution protocol date name, depending on whetherdocMode
is set to "protocol
" or "report
". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functioncreateProtocol()
to set value of submitted parameterdocMode
to "protocol
", instead of "report
". - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
with new command "GetStartPlates
". It performs a query to obtain information on plates of desired type and with names starting with desired prefix. Data for the found plates and extracts on them are returned in a JSON format similar to that used for step 4 in wizard "Create new start DNA plate", in order to reuse as much javascript functionality, as possible.
comment:132 by , 9 years ago
Functional specification update:
- Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" should be updated in table in step 2 to add tool tip with name of kit to button for opening edit pop-up dialog for a kit, in order to easier find the correct button, when the table is long.
Design update:
- Javascript file
inspect_libprep_kit_data.js
inresources/libprep/
updated in functionupdateDetailsTable()
to add tool tip with name of kit to button for opening edit pop-up dialog for a kit.
comment:133 by , 9 years ago
(In [3653]) Refs #801. Refs #816. Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated in table in step 2 to add tool tip with name of kit to button for opening edit pop-up dialog for a kit, in order to easier find the correct button, when the table is long:
- Javascript file
inspect_libprep_kit_data.js
inresources/libprep/
updated in functionupdateDetailsTable()
to add tool tip with name of kit to button for opening edit pop-up dialog for a kit.
comment:134 by , 9 years ago
(In [3654]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a5
".
- Version number change to "
1.3.4a5
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:135 by , 9 years ago
(In [3655]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:136 by , 9 years ago
Functional specification update:
- A new wizard, "Inspect used library preparation kits" should be added in section "Library preparation wizards", sub-section "Reagent kit management wizards":
a. It should contain a single step, where used and active library preparation kits are displayed as half-plates, in the same manner as in step 3 of wizard "Create new start DNA plate".
b. At the top should be a menu for selecting 0-48 reserved FPA wells, to be indicated in the plate view.
c. A list of unused kits should be shown below the plate views of used and active kits.
Design discussion:
The web form will be based on the step 3 part of JSP and javascript files for wizard "Create new start DNA plate", select_dna_for_start_plate.jsp
and select_dna_for_start_plate.js
in resources\libprep\
.
Design update:
- JSP file
index.jsp
inresources/
updated with new entry "Inspect used library preparation kits" added in section "Library preparation wizards", sub-section "Reagent kit management wizards". It is coupled to new JSP fileinspect_libprep_used_kits.jsp
inresources/libprep/
. - New JSP file
inspect_libprep_used_kits.jsp
inresources/libprep/
added. It is coupled to new javascript fileinspect_libprep_used_kits.js
, also inresources/libprep/
. - New javascript file
inspect_libprep_used_kits.js
inresources/libprep/
added, based on step 3 of javascript fileselect_dna_for_start_plate.js
:
a. FunctioninitPage()
calls functioninitializeStep1()
, which in turn callsLibPrepServlet
with command "GetLibPrepKitsAsPlates
" and parameternumItems
set to the value of the number of reserved FPA wells, selected in the menu. The returned data is sent to callback functionkitPlatesInfoLoaded(response)
.
b. FunctionkitPlatesInfoLoaded(response)
displays half-plate views of used and active kits, followed by a list of unused kits. Name and expiration date are shown for all kits, and also number of times used for the used and active kits.
c. Selection changes in the menu for selecting the number of reserved FPA wells are coupled to new functionnumReservedCellsOnChange(event)
, that calls functioninitializeStep1()
to redraw the web form.
comment:137 by , 9 years ago
(In [3656]) Refs #801. Refs #816. A new wizard, "Inspect used library preparation kits" added in section "Library preparation wizards", sub-section "Reagent kit management wizards":
a. It contains a single step, where used and active library preparation kits are displayed as half-plates, in the same manner as in step 3 of wizard "Create new start DNA plate".
b. At the top is a menu for selecting 0-48 reserved FPA wells, to be indicated in the plate view.
c. A list of unused kits is shown below the plate views of used and active kits.
- JSP file
index.jsp
inresources/
updated with new entry "Inspect used library preparation kits" added in section "Library preparation wizards", sub-section "Reagent kit management wizards". It is coupled to new JSP fileinspect_libprep_used_kits.jsp
inresources/libprep/
. - New JSP file
inspect_libprep_used_kits.jsp
inresources/libprep/
added. It is coupled to new javascript fileinspect_libprep_used_kits.js
, also inresources/libprep/
. - New javascript file
inspect_libprep_used_kits.js
inresources/libprep/
added, based on step 3 of javascript fileselect_dna_for_start_plate.js
:
a. FunctioninitPage()
calls functioninitializeStep1()
, which in turn callsLibPrepServlet
with command "GetLibPrepKitsAsPlates
" and parameternumItems
set to the value of the number of reserved FPA wells, selected in the menu. The returned data is sent to callback functionkitPlatesInfoLoaded(response)
.
b. FunctionkitPlatesInfoLoaded(response)
displays half-plate views of used and active kits, followed by a list of unused kits. Name and expiration date are shown for all kits, and also number of times used for the used and active kits.
c. Selection changes in the menu for selecting the number of reserved FPA wells are coupled to new functionnumReservedCellsOnChange(event)
, that calls functioninitializeStep1()
to redraw the web form.
comment:138 by , 9 years ago
(In [3657]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a6
".
- Version number change to "
1.3.4a6
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:139 by , 9 years ago
(In [3658]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:140 by , 9 years ago
(In [3660]) Refs #801. Refs #816. Case summary updated in "Library" section to display links to library preparation protocol and kit for DNA extracts on DNA start library plates:
- JSP file
case_summary.jsp
inresources/reports/
updated by adding table rows for library preparation protocol and kit, above the row for remaining quantity. The new rows are given id values "lib.libPrepProtocol
" and "lib.libPrepKit
", respectively. - Javascript file
case_summary.js
inresources/reports/
updated to set links to library preparation protocol and kit from data obtained from JSONObject of DNA library extract for JSON keys "libPrepProtocol
" and "libPrepKit
", respectively. - Java servlet class/file
CaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetCaseInfo
" to obtain library preparation protocol and kit from creation event of library DNA extract, and return the data for JSON keys "libPrepProtocol
" and "libPrepKit
", respectively, after having the data processed byJsonUtil.getProtocolAsJSON(Protocol p)
andJsonUtil.getKitAsJSON(Kit k)
. - Java utility class/file
JsonUtil.java
insrc/net/sf/basedb/meludi/
updated with new public static methodJSONObject getKitAsJson(Kit k)
. It returns a JSONObject with information about the kit id, name, and a flag indicating whether the item may be edited.
comment:141 by , 9 years ago
(In [3661]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a7
".
- Version number change to "
1.3.4a7
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:142 by , 9 years ago
(In [3662]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:143 by , 9 years ago
Design discussion:
- Values for "
Bioplate location
", "ΔCt
", and "QubitConc
" shown in start plate wells for wizards "Create new start DNA plate" and "Inspect start DNA plate" are currently those of the parent DNA extract for the aliquots in the wells. This was natural especially for the "Create new start DNA plate" wizard, as the aliquot concentration was calculated from theQubitConc
value of the parent DNA, and the dilution factor determined from theΔCt
value. However, after the start plate has been created, the origin of the values should be stated clearly, in order to avoid misunderstanding. Both the concentration of the parent DNA and the eventually diluted concentration of the aliquot in the well should be presented, where the latter is calculated from the original concentration and the dilution factor. The names of JSON variables/keys should also be clarified, in preparation of registering an actually measured aliquot concentration in later steps.
Functional specification update:
- Wizards "Create new start DNA plate" and "Inspect start DNA plate" should be updated to clearly state the origin of presented values in the wells of the start plate display:
a. The text next to the check box for showing bioplate location should be extended with the clarification "(orig. DNA)".
b. When check box for "QubitConc
" is checked, both values for Qubit concentration of parent DNA and calculated aliquot concentration should be shown in each used well, where the former should be appended by text "(orig.)", and the latter by "(calc.)".
Other design changes:
Creation of the JSONArray for the plate wells should be re-written, to avoid problems in the future with variables for different wells referring to the same source variable. Creation of the FPA and FPB parts of the plate is therefore separated, and a new function createByParentName(parentName, name)
is introduced to create a clone of the JSON data for the parent DNA extract. Also, function createProtocol()
in javascript file select_dna_for_start_plate.js
updated to set value of submitted parameter docMode
to "protocol
", instead of "report
".
Design update:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated:
a. Style definitions to show/hide fields "origqubitconc" and "calcqubitconc" added.
b. Text next to the check box for showing bioplate location extended with the clarification "(orig. DNA)".
c. Plate table definition updated with classes "hide-origqubitconc" and "hide-calcqubitconc". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctionnextPlateNameLoaded(response)
updated to create JSONArrays for FPA and FPB wells separately, and call new functioncreateByParentName(parentName, name)
to create a clone of the JSON data for the parent DNA extract.
b. New functioncreateByParentName(parentName, name)
added. It creates a clone of the JSON data for the parent DNA extract having name given by argumentparentName
.
c. FunctiontoggleInfo(event)
updated for event target "qubitconc
" (coupled to check box "QubitConc
") to toggle display of values in fields "origqubitconc
" and "calcqubitconc
".
d. FunctiondownloadLibPrepFile()
updated to get id for for parent DNA in plate well from JSON objectwell.extract.info.origId
instead ofwell.extract.id
.
e. FunctioncreateProtocol()
updated to set value of submitted parameterdocMode
to "protocol
", instead of "report
".
f. FunctiongetWellText(well)
updated to use new JSON keys for parent DNA data, and to calculate aliquot concentration by dividing the concentration for parent DNA with the dilution factor. When check box for "QubitConc
" is checked, both concentration values are shown in each used well, where the former is appended by text "(orig.)", and the latter by "(calc.)". - JSP file
inspect_start_plate.jsp
inresources/libprep/
updated with corresponding changes as forselect_dna_for_start_plate.jsp
. - Javascript file
inspect_start_plate.js
inresources/libprep/
updated with corresponding changes as forselect_dna_for_start_plate.js
, with the following exceptions:
a. FunctioninitializeStep2(event)
updated to create JSONArrays for FPA and FPB wells separately, and call new functioncreateByParentName(parentName, name)
to create a clone of the JSON data for the parent DNA extract.
d. FunctioncreateProtocol()
unchanged. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to use new JSON keys for parent DNA data. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetStartPlates
" to store JSON data for parent DNA in a well using new JSON keys "origLocation
", "origId
", "origQubitConc
", "origDeltaCt
", "origBioWell
", and "origName
". Also, all wells are now scanned for information, including the FPB half of the plate (however, source extracts are only counted in the FPA half).
comment:144 by , 9 years ago
(In [3667]) Refs #801. Refs #816. Wizards "Create new start DNA plate" and "Inspect start DNA plate" updated to clearly state the origin of presented values in the wells of the start plate display:
a. The text next to the check box for showing bioplate location extended with the clarification "(orig. DNA)".
b. When check box for "QubitConc
" is checked, both values for Qubit concentration of parent DNA and calculated aliquot concentration are now shown in each used well, where the former is appended by text "(orig.)", and the latter by "(calc.)".
c. Creation of the JSONArray for the plate wells has been re-written, to avoid problems in the future with variables for different wells referring to the same source variable. Creation of the FPA and FPB parts of the plate is therefore separated, and a new function createByParentName(parentName, name)
is introduced to create a clone of the JSON data for the parent DNA extract.
d. Function createProtocol()
in javascript file select_dna_for_start_plate.js
updated to set value of submitted parameter docMode
to "protocol
", instead of "report
".
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated:
a. Style definitions to show/hide fields "origqubitconc" and "calcqubitconc" added.
b. Text next to the check box for showing bioplate location extended with the clarification "(orig. DNA)".
c. Plate table definition updated with classes "hide-origqubitconc" and "hide-calcqubitconc". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctionnextPlateNameLoaded(response)
updated to create JSONArrays for FPA and FPB wells separately, and call new functioncreateByParentName(parentName, name)
to create a clone of the JSON data for the parent DNA extract.
b. New functioncreateByParentName(parentName, name)
added. It creates a clone of the JSON data for the parent DNA extract having name given by argumentparentName
.
c. FunctiontoggleInfo(event)
updated for event target "qubitconc
" (coupled to check box "QubitConc
") to toggle display of values in fields "origqubitconc
" and "calcqubitconc
".
d. FunctiondownloadLibPrepFile()
updated to get id for for parent DNA in plate well from JSON objectwell.extract.info.origId
instead ofwell.extract.id
.
e. FunctioncreateProtocol()
updated to set value of submitted parameterdocMode
to "protocol
", instead of "report
".
f. FunctiongetWellText(well)
updated to use new JSON keys for parent DNA data, and to calculate aliquot concentration by dividing the concentration for parent DNA with the dilution factor. When check box for "QubitConc
" is checked, both concentration values are shown in each used well, where the former is appended by text "(orig.)", and the latter by "(calc.)". - JSP file
inspect_start_plate.jsp
inresources/libprep/
updated with corresponding changes as forselect_dna_for_start_plate.jsp
. - Javascript file
inspect_start_plate.js
inresources/libprep/
updated with corresponding changes as forselect_dna_for_start_plate.js
, with the following exceptions:
a. FunctioninitializeStep2(event)
updated to create JSONArrays for FPA and FPB wells separately, and call new functioncreateByParentName(parentName, name)
to create a clone of the JSON data for the parent DNA extract.
d. FunctioncreateProtocol()
unchanged. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to use new JSON keys for parent DNA data. - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "GetStartPlates
" to store JSON data for parent DNA in a well using new JSON keys "origLocation
", "origId
", "origQubitConc
", "origDeltaCt
", "origBioWell
", and "origName
". Also, all wells are now scanned for information, including the FPB half of the plate (however, source extracts are only counted in the FPA half).
comment:145 by , 9 years ago
(In [3668]) Refs #801. Refs #816. Bug fix: A bug was introduced 2015-11-05 in case registration wizards through change set [3575], where wizard "Create label file for a number of new cases" in section "Sample processing wizards", sub-section "Case registration", was updated to store the highest case number, for which labels have been created, and use this as start number, the next time labels should be created. Command "CountCases
" in java servlet LabelGenerationServlet
was updated to the described functionality, but it was missed that the same command was used by wizards "Register new cases without patient info" and "Pathology referral form registration", where no change of functionality was desired, at least not a coupling to the highest case number, for which labels have been created.
Design update: Command "CountCases
" in java servlet LabelGenerationServlet
is restored to its previous functionality, and a new command is created for label generation purposes. In order to increase clarity, names of some convenience methods are changed to clearly indicate that they are related to label generation.
- Javascript file
labelgeneration.js
inresources/sampleproc/
updated in functioninitPage()
to call new command "GetLastLabelCase
" in java servletLabelGenerationServlet
instead of command "CountCases
". - Java servlet class/file
LabelGenerationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected method voiddoGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "CountCases
" by restoring functionality to the previously used, where the number of registered cases is returned.
b. Protected method voiddoGet(HttpServletRequest req, HttpServletResponse resp)
updated with new command "GetLastLabelCase
" to call renamed private methodlong fetchLabelCaseCount()
(previously called "long fetchCaseCount()
") to obtain the highest used case number, for which labels have been created. If this fails, the highest stored case number in the database is used.
c. Protected method voiddoGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "GetLabelFile
" to call renamed private methodvoid updateLabelCaseCount(int endCaseNumber)
(previously called "updateCaseCount(int endCaseNumber)
") to update the highest used case number, for which labels have been created.
d. Private methodlong fetchCaseCount()
renamedlong fetchLabelCaseCount()
. It opens the case label info file and reads the value of the highest used case number, for which labels have been created, and then returns the value.
e. Private methodvoid updateCaseCount(int endCaseNumber)
renamedvoid updateLabelCaseCount(int endCaseNumber)
. It opens the case label info file for writing, and stores the given case number in it.
comment:146 by , 9 years ago
(In [3669]) Refs #801. Refs #816. Wizard "Create label file for a number of new cases" in sub-section "Case registration" in section "Sample processing wizards" updated by changing default value for max number of tubes/case from 2 to 1:
- JSP file
labelgeneration.jsp
inresources/sampleproc/
updated by changing default value for max number of tubes/case from 2 to 1.
comment:147 by , 9 years ago
(In [3670]) Refs #801. Refs #816. Case registration wizards "Register new cases without patient info" and "Pathology referral form registration" updated in last step to set default number of sections to 0 instead of 1, if comment "Utkarvad." (Carved out) has been added by clicking a dedicated button, but comment "MNB." (Medium needle biopsy) has not been added by clicking a dedicated button:
- Javascript file
specimentube.js
inresources/sampleproc/
updated:
a. FunctionsaddCommentGeneral(event)
andaddComment(event)
to call new functionsetNumberOfSectionsFromComment(event)
at end of function.
b. New functionsetNumberOfSectionsFromComment(event)
added. It checks the added operator delivery comment for a specimen tube, and if "Utkarvad." is present, but not "MNB.", the number of sections is set to 0, else 1. - Javascript file
persinfo.js
inresources/personal/
updated:
a. FunctionsaddCommentGeneral(event)
andaddComment(event)
to call new functionsetNumberOfSectionsFromComment(event)
at end of function.
b. New functionsetNumberOfSectionsFromComment(event)
added. It checks the added operator delivery comment for a specimen tube, and if "Utkarvad." is present, but not "MNB.", the number of sections is set to 0, else 1.
comment:148 by , 9 years ago
Bug fix.
- A bug was introduced 2015-12-15 in wizard "Create new start DNA plate" through change set [3667], when wizards "Create new start DNA plate" and "Inspect start DNA plate" were updated to clearly state the origin of presented values in the wells of the start plate display. Functions for registering a new start plate and updating the used library preparation kit were not updated with the new JSON keys.
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionssubmit()
andsubmissionResults(response)
to use JSON expressiondna.info.origId
instead ofdna.id
to get the id value of the parent DNA extract for a plate well.
comment:149 by , 9 years ago
(In [3671]) Refs #801. Refs #816. Bug fix: A bug was introduced 2015-12-15 in wizard "Create new start DNA plate" through change set [3667], when wizards "Create new start DNA plate" and "Inspect start DNA plate" were updated to clearly state the origin of presented values in the wells of the start plate display. Functions for registering a new start plate and updating the used library preparation kit were not updated with the new JSON keys.
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functionssubmit()
andsubmissionResults(response)
to use JSON expressiondna.info.origId
instead ofdna.id
to get the id value of the parent DNA extract for a plate well.
comment:150 by , 9 years ago
Functional specification update:
- Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" should be updated by recommending that library preparation kit names are in format "LP_kit_xxx", where "xxx" = zero-filled number (previously format "ML_kit_xxx" was recommended).
Design update:
- JSP file
add_new_libprep_kit.jsp
inresources/libprep/
updated by changing recommended format for library preparation kit names from "ML_kit_xxx" to "LP_kit_xxx".
comment:151 by , 9 years ago
(In [3672]) Refs #801. Refs #816. Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated by recommending that library preparation kit names are in format "LP_kit_xxx", where "xxx" = zero-filled number (previously format "ML_kit_xxx" was recommended):
- JSP file
add_new_libprep_kit.jsp
inresources/libprep/
updated by changing recommended format for library preparation kit names from "ML_kit_xxx" to "LP_kit_xxx".
comment:152 by , 9 years ago
(In [3673]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a8
".
- Version number change to "
1.3.4a8
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:153 by , 9 years ago
(In [3674]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:154 by , 9 years ago
Bug fix:
- Registration in wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" did not work when the proposed start DNA plate name was changed by the user in step 4 (a start plate named "main" was created, and aliquot names were given an extra suffix ".d" and ".d2", instead of ".fpa" and ".fpb", respectively). The reason turned out to be a bug in javascript file
select_dna_for_start_plate.js
inresources/libprep/
, methodplateInfoLoaded(response)
, which is callback function to functionplateNameOnChange(event)
after callingExtractionServlet
with command "CheckIfStartPlateNameUsed
" to check if the new plate name was used earlier.
Design update:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in methodplateInfoLoaded(response)
, which is callback function to functionplateNameOnChange(event)
after callingExtractionServlet
with command "CheckIfStartPlateNameUsed
" to check if the new plate name was used earlier. VariablePlate.name
is now set to value of variableplateInfo.name
instead ofname
.
comment:155 by , 9 years ago
(In [3675]) Refs #801. Refs #816. Bug fix: Registration in wizard "Create new start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" did not work when the proposed start DNA plate name was changed by the user in step 4 (a start plate named "main" was created, and aliquot names were given an extra suffix ".d" and ".d2", instead of ".fpa" and ".fpb", respectively). The reason turned out to be a bug in javascript file select_dna_for_start_plate.js
in resources/libprep/
, method plateInfoLoaded(response)
, which is callback function to function plateNameOnChange(event)
after calling ExtractionServlet
with command "CheckIfStartPlateNameUsed
" to check if the new plate name was used earlier.
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in methodplateInfoLoaded(response)
, which is callback function to functionplateNameOnChange(event)
after callingExtractionServlet
with command "CheckIfStartPlateNameUsed
" to check if the new plate name was used earlier. VariablePlate.name
is now set to value of variableplateInfo.name
instead ofname
.
comment:156 by , 9 years ago
Functional specification update:
- Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" should be updated in step 1 by inserting a proposed name in the kit name field. The proposed kit name should be of format "LP_kit_xxx", where "xxx" is the zero-filled number following the highest used number for existing library preparation kits.
Design update:
- Javascript file
add_new_libprep_kit.js
inresources/libprep/
updated:
a. FunctioninitializeStep1()
to call new command "GetNextAutoGeneratedKitName
" in java servletLibPrepServlet
with new callback functionnextKitNameLoaded(response)
.
b. New functionnextKitNameLoaded(response)
added. It retrieves the next kit name from the servlet response and inserts it in the kit name field. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected method voiddoGet(HttpServletRequest req, HttpServletResponse resp)
updated with new command "GetNextAutoGeneratedKitName
". It performs a database query to find the library preparation kit name with highest number, and then returns the next number in the series.
comment:157 by , 9 years ago
(In [3676]) Refs #801. Refs #816. Wizard "Add new library preparation kit" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated in step 1 by inserting a proposed name in the kit name field. The proposed kit name is of format "LP_kit_xxx", where "xxx" is the zero-filled number following the highest used number for existing library preparation kits.
- Javascript file
add_new_libprep_kit.js
inresources/libprep/
updated:
a. FunctioninitializeStep1()
to call new command "GetNextAutoGeneratedKitName
" in java servletLibPrepServlet
with new callback functionnextKitNameLoaded(response)
.
b. New functionnextKitNameLoaded(response)
added. It retrieves the next kit name from the servlet response and inserts it in the kit name field. - Java servlet class/file
LibPrepServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected method voiddoGet(HttpServletRequest req, HttpServletResponse resp)
updated with new command "GetNextAutoGeneratedKitName
". It performs a database query to find the library preparation kit name with highest number, and then returns the next number in the series.
comment:158 by , 9 years ago
comment:159 by , 9 years ago
(In [3678]) Refs #801. Refs #816. Bug fix: Wizard "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step 1 to show number of MeLuDI and extra material items for menu items in start DNA plate menu, also when the number of MeLuDI items equals 0:
- Javascript file
inspect_start_plate.js
inresources/libprep/
updated in functioninitializeStep1(response)
to show number of MeLuDI and extra material items for menu items in start DNA plate menu, also when the number of MeLuDI items equals 0.
comment:160 by , 9 years ago
Functional specification update:
- Wizards "Create new start DNA plate" and "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated when a library preparation dilution protocol/report is created to show description for parent DNA in "Remark" column.
Design update:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functioncreateByParentName(parentName, name)
to set JSON objectinfo.origDescription
to description for parent DNA. - Javascript file
inspect_start_plate.js
inresources/libprep/
updated in functioncreateByParentName(parentName, name)
to set JSON objectinfo.origDescription
to description for parent DNA. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to set comment to value of JSON objectinfo.origDescription
.
comment:161 by , 9 years ago
(In [3679]) Refs #801. Refs #816. Wizards "Create new start DNA plate" and "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated when a library preparation dilution protocol/report is created to show description for parent DNA in "Remark" column:
- Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functioncreateByParentName(parentName, name)
to set JSON objectinfo.origDescription
to description for parent DNA. - Javascript file
inspect_start_plate.js
inresources/libprep/
updated in functioncreateByParentName(parentName, name)
to set JSON objectinfo.origDescription
to description for parent DNA. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to set comment to value of JSON objectinfo.origDescription
.
comment:162 by , 9 years ago
(In [3680]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a9
".
- Version number change to "
1.3.4a9
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:163 by , 9 years ago
(In [3681]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev
".
- Version number changed to "
1.3.4-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:164 by , 9 years ago
Functional specification update:
- Wizards "Create new start DNA plate" and "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should be updated in step showing plate view to let entered minimum volume of DNA indicate the minimum volume per aliquot, not removed volume (which is twice that amount).
Design update:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated in step showing plate view to specify that the entered minimum volume of DNA is per aliquot, not removed volume (which is twice that amount). - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functiongetWellText(well)
to display a warning if the aliquot DNA volume is less than the entered minimum volume. - JSP file
inspect_start_plate.jsp
inresources/libprep/
updated in step showing plate view to specify that the entered minimum volume of DNA is per aliquot, not removed volume (which is twice that amount). - Javascript file
inspect_start_plate.js
inresources/libprep/
updated in functiongetWellText(well)
to display a warning if the aliquot DNA volume is less than the entered minimum volume.
comment:165 by , 9 years ago
(In [3682]) Refs #801. Refs #816. Wizards "Create new start DNA plate" and "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated in step showing plate view to let entered minimum volume of DNA indicate the minimum volume per aliquot, not removed volume (which is twice that amount):
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated in step showing plate view to specify that the entered minimum volume of DNA is per aliquot, not removed volume (which is twice that amount). - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated in functiongetWellText(well)
to display a warning if the aliquot DNA volume is less than the entered minimum volume. - JSP file
inspect_start_plate.jsp
inresources/libprep/
updated in step showing plate view to specify that the entered minimum volume of DNA is per aliquot, not removed volume (which is twice that amount). - Javascript file
inspect_start_plate.js
inresources/libprep/
updated in functiongetWellText(well)
to display a warning if the aliquot DNA volume is less than the entered minimum volume.
comment:166 by , 9 years ago
(In [3683]) Refs #801. Refs #816. DNA/RNA extraction wizards updated in step 2 by exchanging "Extraction
" for "Deparaffinization
" in the section header, since the actual DNA/RNA extraction is performed in the following QIAcube step:
- JSP files
extraction_preparation.jsp
,extraction_startlist_removal.jsp
,extraction_registration.jsp
,extraction_formcopy.jsp
,
all inresources/sampleproc/
updated in step 2 by exchanging "Extraction
" for "Deparaffinization
" in the section header.
comment:167 by , 9 years ago
Functional specification update:
- Library preparation dilution protocol created in start DNA plate wizards should highlight DNA, water, and solution volume values in red if aliquot DNA volume < 1.0 µl.
Design update:
- JSP file
libprep_dilution_protocol2.jsp
inresources/libprep/
updated by defining class "lowvolume
" with color style set to red. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to display DNA, water, and solution volume values in style for class "lowvolume
" if aliquot DNA volume < 1.0 µl.
comment:168 by , 9 years ago
(In [3684]) Refs #801. Refs #816. Library preparation dilution protocol created in start DNA plate wizards updated to highlight DNA, water, and solution volume values in red if aliquot DNA volume < 1.0 µl:
- JSP file
libprep_dilution_protocol2.jsp
inresources/libprep/
updated by defining class "lowvolume
" with color style set to red. - Javascript file
libprep_dilution_protocol.js
inresources/libprep/
updated in functiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
to display DNA, water, and solution volume values in style for class "lowvolume
" if aliquot DNA volume < 1.0 µl.
comment:169 by , 9 years ago
Functional specification update:
- Wizards for creating and inspecting a start plate in sub-section "Start DNA plate wizards" in section "Library preparation wizards" should allow creation of a lab protocol for library preparation. It should include a plate view including the information shown on the Illumina MiSeq software plate view, but with additional information. Items marked with an asterisk are included in the Illumina plate view:
Header:
a. Protocol name and MeLuDI version.
b. * Start plate name.
c. Start plate description.
d. Library preparation kit name.
Well data:
e. * Compressed uppercase aliquot name.
f. Dilution information with optional highlight for low DNA volume.
g. * Index primers.
Design discussion:
- The wizards in question already allow a library preparation dilution protocol to be created. This is implemented by defining an action coupled to an external JSP file to a form tag in the JSP file for the wizard. Adding another action is not simple. One solution is to let the second JSP file and its related javascript file handle creation of different types of protocols, controlled by values of different attributes. Another solution, which was selected here, is to define a form tag with a new name for the new protocol. The design of the lab protocol for library preparation is based on Reggie wizard
libprep_protocol.jsp
with lab protocol JSP filelibprep_protocol2.jsp
, that allows the protocol to contain either a list view or a plate view. However, the Reggie version assumes that the library plate already has been defined and data for it stored in the database, and the views indicate different barcode variants, instead of index primers determined by the well position. Substantial modifications of the data transfer part was therefore needed, while much of the layout creation has been maintained. - When calling
JSON.stringify(submitInfo)
for JSONObjectsubmitInfo
to obtain string to store in hidden form field, problems with circular references occurred. This was fixed by instead callingJSON.stringify(submitInfo, circular_reference_remover)
, where second argument is a new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object. This solution was suggested in web page concerned with "JSON.stringify, avoid TypeError: Converting circular structure to JSON" at URL http://stackoverflow.com/questions/11616630/json-stringify-avoid-typeerror-converting-circular-structure-to-json. - Wizards "Create new start DNA plate" and "Inspect start DNA plate" are very similar in the parts displaying start data, but the JSP/javascript code has some unnecessary differences, which should be rectified for clarity:
a. JSP fileselect_dna_for_start_plate.jsp
and javascript fileselect_dna_for_start_plate.js
inresources/libprep/
should be updated by exchangling tag id "tsLibPrepKitNo
" for start plate library preparation kit name for "tsLibPrepKit
".
b. Javascriptinspect_start_plate.js
inresources/libprep/
updated in functionplateInfoLoaded(response)
by setting plate name to name in response data.
Design update:
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated:
a. Links for creating a lab protocol in either list view or plate view inserted below the plate layout, above the button for creating a library preparation file for the Illumina MiSeq software.
b. A new form tag with name "meludi2
" added, with an action coupled to new external JSP filelibprep_plate_protocol2.jsp
.
c. Tag id "tsLibPrepKitNo
" for start plate library preparation kit exchanged for "tsLibPrepKit
". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated by adding event handlers for clicks on new lab protocol links coupled to new functionviewProtocol()
. Also removal of unused code.
b. FunctiondownloadLibPrepFile()
updated by obtaining bioplate data for submit info by calling new functionfetchBioplateData()
.
c. New functionfetchBioplateData()
added. It contains code previously in functiondownloadLibPrepFile()
, in order to make it available to other functions.
d. FunctioncreateProtocol()
updated by obtaining submit info for bioplate by calling new functionfetchSubmitInfo()
. Call of functionJSON.stringify(submitInfo)
to obtain string to store in hidden form field exchanged for call of functionJSON.stringify(submitInfo, circular_reference_remover)
, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object.
e. New functionfetchSubmitInfo()
added. It contains code previously in functioncreateProtocol()
, in order to make it available to other functions.
f. New functionviewProtocol(event)
added. It calls new functionfetchBioplateData()
to obtain bioplate data for submit info, and new functionfetchSubmitInfo()
to obtain rest of the submit info. FunctionJSON.stringify(submitInfo, circular_reference_remover)
is called to obtain string to store in hidden form field, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object. Data is stored in hidden fields for form with name "meludi2
", after whichfrm.submit()
is called to change action to JSP filelibprep_plate_protocol2.jsp
.
g. New functioncircular_reference_remover(key, value)
added. It removes any circular references in input JSON object, relying on global JSONArraycircular_reference_cache
, that should be set tonull
, after each call toJSON.stringify(JSONJObject, circular_reference_remover)
.
h. Tag id "tsLibPrepKitNo
" for start plate library preparation kit exchanged for "tsLibPrepKit
". - JSP file
inspect_start_plate.jsp
inresources/libprep/
updated:
a. Links for creating a lab protocol in either list view or plate view inserted below the plate layout, above the button for creating a library preparation file for the Illumina MiSeq software.
b. A new form tag with name "meludi2
" added, with an action coupled to new external JSP filelibprep_plate_protocol2.jsp
. - Javascript file
inspect_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated by adding event handlers for clicks on new lab protocol links coupled to new functionviewProtocol()
. Also removal of unused code.
b. FunctiondownloadLibPrepFile()
updated by obtaining bioplate data for submit info by calling new functionfetchBioplateData()
.
c. New functionfetchBioplateData()
added. It contains code previously in functiondownloadLibPrepFile()
, in order to make it available to other functions.
d. FunctioncreateProtocol()
updated by obtaining submit info for bioplate by calling new functionfetchSubmitInfo()
. Call of functionJSON.stringify(submitInfo)
to obtain string to store in hidden form field exchanged for call of functionJSON.stringify(submitInfo, circular_reference_remover)
, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object.
e. New functionfetchSubmitInfo()
added. It contains code previously in functioncreateProtocol()
, in order to make it available to other functions.
f. New functionviewProtocol(event)
added. It calls new functionfetchBioplateData()
to obtain bioplate data for submit info, and new functionfetchSubmitInfo()
to obtain rest of the submit info. FunctionJSON.stringify(submitInfo, circular_reference_remover)
is called to obtain string to store in hidden form field, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object. Data is stored in hidden fields for form with name "meludi2
", after whichfrm.submit()
is called to change action to JSP filelibprep_plate_protocol2.jsp
.
g. New functioncircular_reference_remover(key, value)
added. It removes any circular references in input JSON object, relying on global JSONArraycircular_reference_cache
, that should be set tonull
, after each call toJSON.stringify(JSONJObject, circular_reference_remover)
.
h. FunctionplateInfoLoaded(response)
updated by setting plate name to name in response data. - New JSP file
libprep_plate_protocol2.jsp
inresources/libprep/
added. Start plate name, description, library preparation kit name, pool schema, and JSONArray with data for DNA aliquots in wells are retrieved from request parameters, after which a list or plate view HTML layout is created for a plate with 8x12 wells. The JSP file is coupled to new javascript filelibprep_plate_protocol.js
inresources/libprep/
. - New javascript file
libprep_plate_protocol.js
inresources/libprep/
added.
a. FunctioninitializeProtocol(submitInfoJsonStr)
obtains data for the DNA items on the plate and then calls either functionviewAsList(list)
orviewAsPlate(list, schema)
, depending on the value of attributeview
.
b. FunctionviewAsList(list)
calls functionlibListEntry(lib)
for each aliquot in the input item list, in order to create a list of data for the wells on the start plate.
c. FunctionviewAsPlate(list, schema)
sets plate extracts for wells for each aliquot in the input item list, after whichPlate.paint(Plate.getWells())
is called to draw a plate view of the start plate.
d. Functionpainter.getClassNameForWell(well, schema)
sets the background for a well togreen
for FPA aliquots, andblue
for FPB aliquots.
e. Functionpainter.getWellText(well, schema)
calls functionpainter.fetchPlateViewAliquotName(name)
to obtain a compressed aliquot name to display for a well, prints the DNA and water dilution volumes, with optional highlight for low DNA volume, and prints Illumina index 1 and 2 primers for each well.
f. Functionpainter.fetchPlateViewAliquotName(name)
returns a compressed aliquot name by concatenating the parts before first dot and after last dot and convert to uppercase.
comment:170 by , 9 years ago
(In [3685]) Refs #801. Refs #816. Wizards for creating and inspecting a start plate in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated to allow creation of a lab protocol for library preparation. It includes a plate view including the information shown on the Illumina MiSeq software plate view, but with additional information. Items marked with an asterisk are included in the Illumina plate view:
Header:
a. Protocol name and MeLuDI version.
b. * Start plate name.
c. Start plate description.
d. Library preparation kit name.
Well data:
e. * Compressed uppercase aliquot name.
f. Dilution information with optional highlight for low DNA volume.
g. * Index primers.
- JSP file
select_dna_for_start_plate.jsp
inresources/libprep/
updated:
a. Links for creating a lab protocol in either list view or plate view inserted below the plate layout, above the button for creating a library preparation file for the Illumina MiSeq software.
b. A new form tag with name "meludi2
" added, with an action coupled to new external JSP filelibprep_plate_protocol2.jsp
.
c. Tag id "tsLibPrepKitNo
" for start plate library preparation kit exchanged for "tsLibPrepKit
". - Javascript file
select_dna_for_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated by adding event handlers for clicks on new lab protocol links coupled to new functionviewProtocol()
. Also removal of unused code.
b. FunctiondownloadLibPrepFile()
updated by obtaining bioplate data for submit info by calling new functionfetchBioplateData()
.
c. New functionfetchBioplateData()
added. It contains code previously in functiondownloadLibPrepFile()
, in order to make it available to other functions.
d. FunctioncreateProtocol()
updated by obtaining submit info for bioplate by calling new functionfetchSubmitInfo()
. Call of functionJSON.stringify(submitInfo)
to obtain string to store in hidden form field exchanged for call of functionJSON.stringify(submitInfo, circular_reference_remover)
, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object.
e. New functionfetchSubmitInfo()
added. It contains code previously in functioncreateProtocol()
, in order to make it available to other functions.
f. New functionviewProtocol(event)
added. It calls new functionfetchBioplateData()
to obtain bioplate data for submit info, and new functionfetchSubmitInfo()
to obtain rest of the submit info. FunctionJSON.stringify(submitInfo, circular_reference_remover)
is called to obtain string to store in hidden form field, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object. Data is stored in hidden fields for form with name "meludi2
", after whichfrm.submit()
is called to change action to JSP filelibprep_plate_protocol2.jsp
.
g. New functioncircular_reference_remover(key, value)
added. It removes any circular references in input JSON object, relying on global JSONArraycircular_reference_cache
, that should be set tonull
, after each call toJSON.stringify(JSONJObject, circular_reference_remover)
.
h. Tag id "tsLibPrepKitNo
" for start plate library preparation kit exchanged for "tsLibPrepKit
". - JSP file
inspect_start_plate.jsp
inresources/libprep/
updated:
a. Links for creating a lab protocol in either list view or plate view inserted below the plate layout, above the button for creating a library preparation file for the Illumina MiSeq software.
b. A new form tag with name "meludi2
" added, with an action coupled to new external JSP filelibprep_plate_protocol2.jsp
. - Javascript file
inspect_start_plate.js
inresources/libprep/
updated:
a. FunctioninitPage()
updated by adding event handlers for clicks on new lab protocol links coupled to new functionviewProtocol()
. Also removal of unused code.
b. FunctiondownloadLibPrepFile()
updated by obtaining bioplate data for submit info by calling new functionfetchBioplateData()
.
c. New functionfetchBioplateData()
added. It contains code previously in functiondownloadLibPrepFile()
, in order to make it available to other functions.
d. FunctioncreateProtocol()
updated by obtaining submit info for bioplate by calling new functionfetchSubmitInfo()
. Call of functionJSON.stringify(submitInfo)
to obtain string to store in hidden form field exchanged for call of functionJSON.stringify(submitInfo, circular_reference_remover)
, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object.
e. New functionfetchSubmitInfo()
added. It contains code previously in functioncreateProtocol()
, in order to make it available to other functions.
f. New functionviewProtocol(event)
added. It calls new functionfetchBioplateData()
to obtain bioplate data for submit info, and new functionfetchSubmitInfo()
to obtain rest of the submit info. FunctionJSON.stringify(submitInfo, circular_reference_remover)
is called to obtain string to store in hidden form field, where second argument is new functioncircular_reference_remover(key, value)
, that removes any circular references in input JSON object. Data is stored in hidden fields for form with name "meludi2
", after whichfrm.submit()
is called to change action to JSP filelibprep_plate_protocol2.jsp
.
g. New functioncircular_reference_remover(key, value)
added. It removes any circular references in input JSON object, relying on global JSONArraycircular_reference_cache
, that should be set tonull
, after each call toJSON.stringify(JSONJObject, circular_reference_remover)
.
h. FunctionplateInfoLoaded(response)
updated by setting plate name to name in response data. - New JSP file
libprep_plate_protocol2.jsp
inresources/libprep/
added. Start plate name, description, library preparation kit name, pool schema, and JSONArray with data for DNA aliquots in wells are retrieved from request parameters, after which a list or plate view HTML layout is created for a plate with 8x12 wells. The JSP file is coupled to new javascript filelibprep_plate_protocol.js
inresources/libprep/
. - New javascript file
libprep_plate_protocol.js
inresources/libprep/
added.
a. FunctioninitializeProtocol(submitInfoJsonStr)
obtains data for the DNA items on the plate and then calls either functionviewAsList(list)
orviewAsPlate(list, schema)
, depending on the value of attributeview
.
b. FunctionviewAsList(list)
calls functionlibListEntry(lib)
for each aliquot in the input item list, in order to create a list of data for the wells on the start plate.
c. FunctionviewAsPlate(list, schema)
sets plate extracts for wells for each aliquot in the input item list, after whichPlate.paint(Plate.getWells())
is called to draw a plate view of the start plate.
d. Functionpainter.getClassNameForWell(well, schema)
sets the background for a well togreen
for FPA aliquots, andblue
for FPB aliquots.
e. Functionpainter.getWellText(well, schema)
calls functionpainter.fetchPlateViewAliquotName(name)
to obtain a compressed aliquot name to display for a well, prints the DNA and water dilution volumes, with optional highlight for low DNA volume, and prints Illumina index 1 and 2 primers for each well.
f. Functionpainter.fetchPlateViewAliquotName(name)
returns a compressed aliquot name by concatenating the parts before first dot and after last dot and convert to uppercase.
comment:171 by , 9 years ago
MeLuDI version number change:
- Since the next release of MeLuDI probably will include the first version of library preparation wizards, the version number will be moved from 1.3.3 to 1.4.0. In order to be able to keep track of alpha releases since 1.3.3, the alpha version release number sequence will not be changed, i.e. alpha release version 1.3.4a9 will be followed by 1.4.0a10.
comment:173 by , 9 years ago
(In [3686]) Refs #801. Refs #816. Updates due to version number change to "1.4.0a10
".
- Version number change to "
1.4.0a10
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:174 by , 9 years ago
(In [3687]) Refs #801. Refs #816. Updates due to version number change to "1.4.0-dev
".
- Version number changed to "
1.4.0-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:175 by , 9 years ago
(In [3693]) Refs #801. Refs #816. Wizard "Inspect start DNA plate" in sub-section "Start DNA plate wizards" in section "Library preparation wizards" updated:
a. Javascript code for creating plate layout simplified, since the JSON input now contains data from a stored start plate.
b. Servlet code updated to include database id of DNA aliquots in wells, for future use.
- Javascript file
inspect_start_plate.js
inresources/libprep/
updated:
a. FunctioninitializeStep2(event)
updated by simplifying code for creating plate layout, since the JSON input now contains data from a stored start plate.
b. FunctioncreateByParentName(parentName, name)
updated with new third argument for DNA id tocreateByParentName(parentName, name, id)
. The returned JSONObject contains the input "id" value for JSON key "id
". - Java servlet class/file
DnaServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "GetStartPlates
" by including database id of DNA aliquots in wells in returned JSONObject.
comment:176 by , 9 years ago
(In [3694]) Refs #816. Refs #801. Wizard "DNA/RNA registration/quantification" in sub-section "DNA/RNA extraction wizards" in section "Sample processing wizards" updated to support import of DNA concentration values from file created by new version of Qubit instrument (previously used instrument was allegedly version 2, and the new one version 3). Both versions of the Qubit file are now supported, without the need for the user to indicate what version of the instrument was used.
- Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. FunctionqubitFileOnChange()
updated to callFileReader
functionreadAsText()
with an extra argument specifying encodingISO-8859-1
, i.e.readAsText(file, 'ISO-8859-1')
.
b. FunctionparseQubitFile(data)
updated. Double quotes are replaces with blanks in all lines. New functionfetchQubitFileHeaderVersion(header)
is called with the Qubit file header line as input to find the header version number (local use only). New functionfetchQubitFileColumnName(key, headerVersion)
is called with locally defined JSON keys and found Qubit file header version to find names of columns with data for name, concentration, units, and dilution factor, for use as argument "col
" when calling functionfindColumn(columns, col)
to find index of desired column.
c. New functionfetchQubitFileHeaderVersion(header)
added. It returns a local header version number, given the Qubit file header line.
d. New functionfetchQubitFileColumnName(key, headerVersion)
added. It returns the name of the desired column, given the Qubit file header version.
comment:177 by , 9 years ago
(In [3695]) Refs #801. Refs #816. Updates due to version number change to "1.4.0a11
".
- Version number change to "
1.4.0a11
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:178 by , 9 years ago
(In [3696]) Refs #801. Refs #816. Updates due to version number change to "1.4.0-dev
".
- Version number changed to "
1.4.0-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:179 by , 9 years ago
comment:180 by , 9 years ago
(In [3702]) Refs #801. Refs #816. Updates due to version number change to "1.4.0
".
- Version number changed to "
1.4.0
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:181 by , 9 years ago
(In [3703]) Refs #801. Refs #816. Section header "Library preparation wizards" updated by removing note describing the section contents as "Experimental":
- JSP file
index.jsp
inresources/
updated in section header "Library preparation wizards" by removing note describing the section contents as "Experimental":
comment:182 by , 9 years ago
Functional specification update:
- Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" should be updated to make the web form more user-friendly:
a. Columns for "Registration date", "Last updated", "Expiration date", "Active", "#Times used", "Unused FPA plate locations", and "Comment" should be moved to the beginning of the table row, after the kit name, since these data are more often checked/edited than the reagent lot numbers.
b. Each table row should have "Edit..." buttons both at the beginning and end of the row (only the one at the end needs to have a tool tip with the kit name).
Design update:
- Javascript file
inspect_libprep_kit_data.js
inresources/libprep/
updated in functionupdateDetailsTable()
:
a. Columns for "Registration date", "Last updated", "Expiration date", "Active", "#Times used", "Unused FPA plate locations", and "Comment" moved to the beginning of the table row, after the kit name.
b. A new "Edit..." button added at the beginning of each table row.
c. Only "Edit..." buttons at the end of a table row gets a tool tip with the kit name.
comment:183 by , 9 years ago
(In [3705]) Refs #801. Refs #816. Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated to make the web form more user-friendly:
a. Columns for "Registration date", "Last updated", "Expiration date", "Active", "#Times used", "Unused FPA plate locations", and "Comment" moved to the beginning of the table row, after the kit name, since these data are more often checked/edited than the reagent lot numbers.
b. Each table row now has "Edit..." buttons both at the beginning and end of the row (only the one at the end needs to have a tool tip with the kit name).
- Javascript file
inspect_libprep_kit_data.js
inresources/libprep/
updated in functionupdateDetailsTable()
:
a. Columns for "Registration date", "Last updated", "Expiration date", "Active", "#Times used", "Unused FPA plate locations", and "Comment" moved to the beginning of the table row, after the kit name.
b. A new "Edit..." button added at the beginning of each table row.
c. Only "Edit..." buttons at the end of a table row gets a tool tip with the kit name.
comment:184 by , 9 years ago
comment:185 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Ticket closed as MeLuDI version 1.4.0 has been created.
Ticket accepted.