114114import org .labkey .api .query .FieldKey ;
115115import org .labkey .api .query .FilteredTable ;
116116import org .labkey .api .query .QueryParam ;
117+ import org .labkey .api .query .QueryService ;
117118import org .labkey .api .query .QuerySettings ;
118119import org .labkey .api .query .QueryView ;
120+ import org .labkey .api .query .UserSchema ;
119121import org .labkey .api .query .ValidationException ;
120122import org .labkey .api .reports .ReportService ;
121123import org .labkey .api .reports .model .ViewCategory ;
@@ -7814,10 +7816,31 @@ public void setSelectedIds(Long[] selectedIds)
78147816 }
78157817 }
78167818
7819+ public static WebPartView <?> getFiguresOfMeritView (User user , Container container , long generalMoleculeId , boolean minimize )
7820+ {
7821+ UserSchema schema = QueryService .get ().getUserSchema (user , container , TargetedMSSchema .SCHEMA_NAME );
7822+ TableInfo tableInfo = schema .getTable (TargetedMSSchema .TABLE_MOLECULE_INFO );
7823+ if (tableInfo == null )
7824+ {
7825+ throw new NotFoundException ("Query " + TargetedMSSchema .SCHEMA_NAME + "." + TargetedMSSchema .TABLE_MOLECULE_INFO + " not found." );
7826+ }
7827+
7828+ SimpleFilter filter = new SimpleFilter (FieldKey .fromString ("GeneralMoleculeId" ), generalMoleculeId , CompareType .EQUAL );
7829+ FiguresOfMeritView .MoleculeInfo moleculeInfo = new TableSelector (tableInfo , filter , null ).getObject (FiguresOfMeritView .MoleculeInfo .class );
7830+ if (moleculeInfo == null )
7831+ {
7832+ HtmlView htmlView = new HtmlView (HtmlString .of ("No figures of merit available due to lack of quantitative data" ));
7833+ htmlView .setTitle ("Figures of Merit" );
7834+ htmlView .setFrame (WebPartView .FrameType .PORTAL );
7835+ return htmlView ;
7836+ }
7837+ return new FiguresOfMeritView (moleculeInfo , schema , minimize );
7838+ }
7839+
78177840 @ RequiresPermission (ReadPermission .class )
78187841 public static class ShowFiguresOfMeritAction extends SimpleViewAction <GeneralMoleculeForm >
78197842 {
7820- private FiguresOfMeritView _figuresOfMeritView ;
7843+ private HttpView <?> _figuresOfMeritView ;
78217844
78227845 @ Override
78237846 public void validate (GeneralMoleculeForm form , BindException errors )
@@ -7830,20 +7853,20 @@ public void validate(GeneralMoleculeForm form, BindException errors)
78307853 @ Override
78317854 public ModelAndView getView (GeneralMoleculeForm form , BindException errors )
78327855 {
7833- _figuresOfMeritView = new FiguresOfMeritView (getUser (), getContainer (), form .getGeneralMoleculeId ().longValue (), false );
7856+ _figuresOfMeritView = getFiguresOfMeritView (getUser (), getContainer (), form .getGeneralMoleculeId ().longValue (), false );
78347857 return _figuresOfMeritView ;
78357858 }
78367859
78377860 @ Override
78387861 public void addNavTrail (NavTree root )
78397862 {
7840- if (_figuresOfMeritView != null && _figuresOfMeritView .getModelBean () != null )
7863+ if (_figuresOfMeritView != null && _figuresOfMeritView .getModelBean () instanceof FiguresOfMeritView . MoleculeInfo info )
78417864 {
7842- TargetedMSRun run = _figuresOfMeritView . getModelBean () .getRun ();
7865+ TargetedMSRun run = info .getRun ();
78437866 root .addChild ("Targeted MS Runs" , getShowListURL (getContainer ()));
78447867 root .addChild (run .getDescription (), getShowCalibrationCurvesURL (getContainer (), run .getId ()));
78457868
7846- GeneralMolecule <?, ?> molecule = _figuresOfMeritView . getModelBean () .getGeneralMolecule ();
7869+ GeneralMolecule <?, ?> molecule = info .getGeneralMolecule ();
78477870 if (molecule != null )
78487871 {
78497872 root .addChild ("Figures of Merit: " + molecule .getTextId ());
@@ -7918,7 +7941,7 @@ protected QueryView createQueryView(CalibrationCurveForm form, BindException err
79187941 public ModelAndView getView (CalibrationCurveForm calibrationCurveForm , BindException errors )
79197942 {
79207943 CalibrationCurveChart chart = _curvePlotView .getChart ();
7921- GeneralMolecule molecule = chart .getMolecule ();
7944+ GeneralMolecule <?, ?> molecule = chart .getMolecule ();
79227945 if (molecule == null )
79237946 {
79247947 throw new NotFoundException ("Could not find molecule" );
@@ -7944,8 +7967,7 @@ public ModelAndView getView(CalibrationCurveForm calibrationCurveForm, BindExcep
79447967 detailsUrl = new ActionURL (ShowMoleculeAction .class , getContainer ());
79457968 }
79467969
7947- FiguresOfMeritView fomView = new FiguresOfMeritView (getUser (), getContainer (), molecule .getId (), true );
7948- fomView .setTitleHref (new ActionURL (ShowFiguresOfMeritAction .class , getContainer ()).addParameter ("GeneralMoleculeId" , molecule .getId ()));
7970+ HttpView <?> fomView = getFiguresOfMeritView (getUser (), getContainer (), molecule .getId (), true );
79497971
79507972 JspView <SummaryChartBean > summaryChartView = new JspView <>("/org/labkey/targetedms/view/summaryChartsView.jsp" , summaryChartBean );
79517973 summaryChartView .setTitle ("Summary Charts" );
0 commit comments