Add remaining fields for query
This commit is contained in:
@@ -6,6 +6,8 @@ namespace LeafWeb.WebCms.Models
|
|||||||
{
|
{
|
||||||
public class LeafDataQuery
|
public class LeafDataQuery
|
||||||
{
|
{
|
||||||
|
private const string FloatingPointRegex = @"^([-+]?[0-9]*\.[0-9]+|[0-9]+)$";
|
||||||
|
|
||||||
/// <summary>Query</summary>
|
/// <summary>Query</summary>
|
||||||
[Display(Name = "Search", Description = "General query")]
|
[Display(Name = "Search", Description = "General query")]
|
||||||
public string q { get; set; }
|
public string q { get; set; }
|
||||||
@@ -37,11 +39,25 @@ namespace LeafWeb.WebCms.Models
|
|||||||
public string lonr { get; set; }
|
public string lonr { get; set; }
|
||||||
|
|
||||||
/// <summary>Sample CO2 concentration</summary>
|
/// <summary>Sample CO2 concentration</summary>
|
||||||
//[ParseInfo(17, units: "umol/mol")]
|
[Display(Name = "CO2 response curves (CO2S)")]
|
||||||
[Display(Name = "CO2 response curves")]
|
[RegularExpression(FloatingPointRegex, ErrorMessage = "Must be numeric")]
|
||||||
[RegularExpression(@"^([0-9]*\.[0-9]+|[0-9]+)$", ErrorMessage = "Value is numeric")]
|
|
||||||
public string co2s { get; set; }
|
public string co2s { get; set; }
|
||||||
|
|
||||||
|
/// <summary> PAR measured by the in-chamber quantum sensor</summary>
|
||||||
|
[Display(Name = "Light response curves (PARi)")]
|
||||||
|
[RegularExpression(FloatingPointRegex, ErrorMessage = "Must be numeric")]
|
||||||
|
public string pari { get; set; }
|
||||||
|
|
||||||
|
/// <summary> temperature of leaf thermocouple</summary>
|
||||||
|
[Display(Name = "Temperature response curves (Tleaf)")]
|
||||||
|
[RegularExpression(FloatingPointRegex, ErrorMessage = "Must be numeric")]
|
||||||
|
public string tleaf { get; set; }
|
||||||
|
|
||||||
|
/// <summary> DeltaF/Fm, the fraction of absorbed PSII photons that are used in photochemistry</summary>
|
||||||
|
[Display(Name = "Fluorometry measurements (PhiPS2)")]
|
||||||
|
[RegularExpression(FloatingPointRegex, ErrorMessage = "Must be numeric")]
|
||||||
|
public string phips2 { get; set; }
|
||||||
|
|
||||||
public bool HasExtendedParameters =>
|
public bool HasExtendedParameters =>
|
||||||
!(
|
!(
|
||||||
string.IsNullOrEmpty(siteid)
|
string.IsNullOrEmpty(siteid)
|
||||||
@@ -51,6 +67,9 @@ namespace LeafWeb.WebCms.Models
|
|||||||
&& string.IsNullOrEmpty(lon)
|
&& string.IsNullOrEmpty(lon)
|
||||||
&& string.IsNullOrEmpty(lonr)
|
&& string.IsNullOrEmpty(lonr)
|
||||||
&& string.IsNullOrEmpty(co2s)
|
&& string.IsNullOrEmpty(co2s)
|
||||||
|
&& string.IsNullOrEmpty(pari)
|
||||||
|
&& string.IsNullOrEmpty(tleaf)
|
||||||
|
&& string.IsNullOrEmpty(phips2)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,9 +6,16 @@ namespace LeafWeb.WebCms.Models
|
|||||||
public class LeafInputDataCurveViewModel
|
public class LeafInputDataCurveViewModel
|
||||||
{
|
{
|
||||||
/// <summary>Sample CO2 concentration</summary>
|
/// <summary>Sample CO2 concentration</summary>
|
||||||
//[ParseInfo(17, units: "umol/mol")]
|
|
||||||
public double? CO2S { get; set; }
|
public double? CO2S { get; set; }
|
||||||
|
|
||||||
|
/// <summary> PAR measured by the in-chamber quantum sensor</summary>
|
||||||
|
public double? PARi { get; set; }
|
||||||
|
|
||||||
|
/// <summary>temperature of leaf thermocouple</summary>
|
||||||
|
public double? Tleaf { get; set; }
|
||||||
|
|
||||||
|
/// <summary>DeltaF/Fm, the fraction of absorbed PSII photons that are used in photochemistry</summary>
|
||||||
|
public double? PhiPS2 { get; set; }
|
||||||
public LeafInputDataCurveViewModel() {}
|
public LeafInputDataCurveViewModel() {}
|
||||||
|
|
||||||
public LeafInputDataCurveViewModel(LeafInputDataCurve leafInputDataCurve)
|
public LeafInputDataCurveViewModel(LeafInputDataCurve leafInputDataCurve)
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ namespace LeafWeb.WebCms.Utility
|
|||||||
select li;
|
select li;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// co2s
|
// co2s
|
||||||
if (!string.IsNullOrEmpty(query.co2s))
|
if (!string.IsNullOrEmpty(query.co2s))
|
||||||
{
|
{
|
||||||
@@ -90,6 +91,58 @@ namespace LeafWeb.WebCms.Utility
|
|||||||
select li;
|
select li;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// pari
|
||||||
|
if (!string.IsNullOrEmpty(query.pari))
|
||||||
|
{
|
||||||
|
var p = double.Parse(query.pari);
|
||||||
|
|
||||||
|
resultItems =
|
||||||
|
from li in resultItems
|
||||||
|
where
|
||||||
|
// maximum range inside LeafInputFiles
|
||||||
|
li.LeafInputData.Max(lid =>
|
||||||
|
// range of LeafInputData
|
||||||
|
lid.Data.Max(d => d.PARi)
|
||||||
|
- lid.Data.Min(d => d.PARi))
|
||||||
|
>= p
|
||||||
|
select li;
|
||||||
|
}
|
||||||
|
|
||||||
|
// tleaf
|
||||||
|
if (!string.IsNullOrEmpty(query.tleaf))
|
||||||
|
{
|
||||||
|
var p = double.Parse(query.tleaf);
|
||||||
|
|
||||||
|
resultItems =
|
||||||
|
from li in resultItems
|
||||||
|
where
|
||||||
|
// maximum range inside LeafInputFiles
|
||||||
|
li.LeafInputData.Max(lid =>
|
||||||
|
// range of LeafInputData
|
||||||
|
lid.Data.Max(d => d.Tleaf)
|
||||||
|
- lid.Data.Min(d => d.Tleaf))
|
||||||
|
>= p
|
||||||
|
select li;
|
||||||
|
}
|
||||||
|
|
||||||
|
// phips2
|
||||||
|
if (!string.IsNullOrEmpty(query.phips2))
|
||||||
|
{
|
||||||
|
var p = double.Parse(query.phips2);
|
||||||
|
|
||||||
|
resultItems =
|
||||||
|
from li in resultItems
|
||||||
|
where
|
||||||
|
// maximum range inside LeafInputFiles
|
||||||
|
li.LeafInputData.Max(lid =>
|
||||||
|
// range of LeafInputData
|
||||||
|
lid.Data.Max(d => d.PhiPS2)
|
||||||
|
- lid.Data.Min(d => d.PhiPS2))
|
||||||
|
>= p
|
||||||
|
select li;
|
||||||
|
}
|
||||||
|
|
||||||
return resultItems;
|
return resultItems;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,31 +52,39 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-7">
|
<div class="col-7">
|
||||||
@Html.EditorFor(m => m.Q.lat, new { size = "small", append = "°" })
|
@Html.EditorFor(m => m.Q.lat, new { size = "small", append = "°" })
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-5">
|
<div class="col-5">
|
||||||
@Html.EditorFor(m => m.Q.latr, new { size = "small", prepend = "±", append = "°" })
|
@Html.EditorFor(m => m.Q.latr, new { size = "small", prepend = "±", append = "°" })
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 border-left">
|
<div class="col-md-6 border-left">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-7">
|
<div class="col-7">
|
||||||
@Html.EditorFor(m => m.Q.lon, new { size = "small", append = "°" })
|
@Html.EditorFor(m => m.Q.lon, new { size = "small", append = "°" })
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-5">
|
<div class="col-5">
|
||||||
@Html.EditorFor(m => m.Q.lonr, new { size = "small", prepend = "±", append = "°" })
|
@Html.EditorFor(m => m.Q.lonr, new { size = "small", prepend = "±", append = "°" })
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
|
<div class="text-body font-weight-bold pb-3">Curve Variation range minimum</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col-md-6">
|
||||||
<div class="text-body">Curve Variation range minimum</div>
|
@Html.EditorFor(m => m.Q.co2s, new { size = "small", append = "umol/m", prepend = ">" })
|
||||||
|
</div>
|
||||||
@Html.EditorFor(m => m.Q.co2s, new { size = "small", append = "umol/m" })
|
<div class="col-md-6">
|
||||||
|
@Html.EditorFor(m => m.Q.pari, new { size = "small", append = "umol/m2/s", prepend = ">" })
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
@Html.EditorFor(m => m.Q.tleaf, new { size = "small", append = "oC", prepend = ">" })
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
@Html.EditorFor(m => m.Q.phips2, new { size = "small", prepend = ">" })
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
@RendDistinctValues("Latitude [°]", Model.Select(m => m.Site.Latitude?.ToString()))
|
@RendDistinctValues("Latitude [°]", Model.Select(m => m.Site.Latitude?.ToString()))
|
||||||
@RendDistinctValues("Longitude [°]", Model.Select(m => m.Site.Longitude?.ToString()))
|
@RendDistinctValues("Longitude [°]", Model.Select(m => m.Site.Longitude?.ToString()))
|
||||||
@RendDistinctValues("Elevation [m]", Model.Select(m => m.Site.Elevation?.ToString()))
|
@RendDistinctValues("Elevation [m]", Model.Select(m => m.Site.Elevation?.ToString()))
|
||||||
@RendDistinctValues("CO2S",
|
@*@RendDistinctValues("CO2S",
|
||||||
Model.Select(m =>
|
Model.Select(m =>
|
||||||
m.SiteName + " (" + m.Id + "): " +
|
m.SiteName + " (" + m.Id + "): " +
|
||||||
string.Join(", ",
|
string.Join(", ",
|
||||||
@@ -33,21 +33,33 @@
|
|||||||
m.SiteName + " (" + m.Id + "): " +
|
m.SiteName + " (" + m.Id + "): " +
|
||||||
(m.Data?.Max(d => d.CO2S)
|
(m.Data?.Max(d => d.CO2S)
|
||||||
- m.Data?.Min(d => d.CO2S))), "<br />")
|
- m.Data?.Min(d => d.CO2S))), "<br />")
|
||||||
@RendValue("CO2S Max Range", Model.Max(m =>
|
|
||||||
m.Data?.Max(d => d.CO2S)
|
|
||||||
- m.Data?.Min(d => d.CO2S))?.ToString())
|
|
||||||
@RendValue("CO2S Min Range", Model.Min(m =>
|
@RendValue("CO2S Min Range", Model.Min(m =>
|
||||||
|
m.Data?.Max(d => d.CO2S)
|
||||||
|
- m.Data?.Min(d => d.CO2S))?.ToString())*@
|
||||||
|
|
||||||
|
@RendValue("CO2 response curves (CO2S) Max range", Model.Max(m =>
|
||||||
m.Data?.Max(d => d.CO2S)
|
m.Data?.Max(d => d.CO2S)
|
||||||
- m.Data?.Min(d => d.CO2S))?.ToString())
|
- m.Data?.Min(d => d.CO2S))?.ToString())
|
||||||
|
|
||||||
|
@RendValue("Light response curves (PARi) Max range", Model.Max(m =>
|
||||||
|
m.Data?.Max(d => d.PARi)
|
||||||
|
- m.Data?.Min(d => d.PARi))?.ToString())
|
||||||
|
|
||||||
|
@RendValue("Temperature response curves (Tleaf) Max Range", Model.Max(m =>
|
||||||
|
m.Data?.Max(d => d.Tleaf)
|
||||||
|
- m.Data?.Min(d => d.Tleaf))?.ToString())
|
||||||
|
|
||||||
|
@RendValue("Fluorometry measurements (PhiPS2) Max Range", Model.Max(m =>
|
||||||
|
m.Data?.Max(d => d.PhiPS2)
|
||||||
|
- m.Data?.Min(d => d.PhiPS2))?.ToString())
|
||||||
|
|
||||||
@helper RendValue(string label, string value)
|
@helper RendValue(string label, string value)
|
||||||
{
|
{
|
||||||
<div class="row pb-lg-2 pb-sm-1 @if (ViewData.Model == null){<text>d-none</text> }">
|
<div class="row pb-lg-2 pb-sm-1 @if (ViewData.Model == null || string.IsNullOrEmpty(value)){<text>d-none</text> }">
|
||||||
<div class="col-sm-3 text-truncate border-right border-bottom pl-4 pl-sm-5">
|
<div class="col-sm-5 text-truncate border-right border-bottom pl-4 pl-sm-5">
|
||||||
@Html.Raw(label)
|
@Html.Raw(label)
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-9 border-bottom pl-5 pl-sm-2">
|
<div class="col-sm-7 border-bottom pl-5 pl-sm-2">
|
||||||
@Html.Raw(@value)
|
@Html.Raw(@value)
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user