Skip to content

Commit

Permalink
Merge pull request #3035 from WikiWatershed/cpc/unit-conversion-subbasin
Browse files Browse the repository at this point in the history
Unit Conversion: Subbasin
  • Loading branch information
caseycesari authored Nov 29, 2018
2 parents caf29ee + b95a32b commit 8ef2ac9
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,55 @@
<thead>
<tr>
<th rowspan="2" class="subbasin-source-col" data-sortable="true" data-sorter="window.numericSort">NHD+ ComID</th>
<th rowspan="2" data-sortable="true" data-sorter="window.numericSort">Area (ha)</th>
<th rowspan="2" data-sortable="true" data-sorter="window.numericSort">Area ({{ areaUnit }})</th>
<th colspan="3">Total Loads (not normalized)</th>
<th colspan="3">Loading Rates (area normalized)</th>
<th colspan="3">Mean Annual Concentration(discharge normalized)</th>
</tr>
<tr>
<th data-sortable="true" data-sorter="window.numericSort">Sediment (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment (mg/L)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen (mg/L)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus (mg/L)</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment ({{ massPerAreaUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen ({{ massPerAreaUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus ({{ massPerAreaUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment ({{ concentrationUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen ({{ concentrationUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus ({{ concentrationUnit }})</th>
</tr>
</thead>
<tbody>
{% for key, row in rows %}
<tr class="subbasin-catchment-row" data-comid="{{ key }}">
{% set area = catchmentDetails.get(key).get('area') if not catchmentDetails.isEmpty() else 0 %}
<td class="text-left">{{ key }}</td>
<td class="strong text-right">{{ area|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalLoadingRates.Sediment|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalLoadingRates.TotalN|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalLoadingRates.TotalP|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalLoadingRates.Sediment/area) or 0)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalLoadingRates.TotalN/area) or 0)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalLoadingRates.TotalP/area) or 0)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.LoadingRateConcentrations.Sediment|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.LoadingRateConcentrations.TotalN|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.LoadingRateConcentrations.TotalP|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ area|toUnit(areaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalLoadingRates.Sediment|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalLoadingRates.TotalN|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalLoadingRates.TotalP|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalLoadingRates.Sediment/area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalLoadingRates.TotalN/area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalLoadingRates.TotalP/area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.LoadingRateConcentrations.Sediment|toUnit(concentrationDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.LoadingRateConcentrations.TotalN|toUnit(concentrationDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.LoadingRateConcentrations.TotalP|toUnit(concentrationDisplayUnit)|round(2)|toLocaleString(2) }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
{% set area = summaryRow.Area %}
<th class="text-left">{{ summaryRow.Source }}</th>
<th class="text-right">{{ summaryRow.Area|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalLoadingRates.Sediment|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalLoadingRates.TotalN|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalLoadingRates.TotalP|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ ((summaryRow.TotalLoadingRates.Sediment/area) or 0)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ ((summaryRow.TotalLoadingRates.TotalN/area) or 0)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ ((summaryRow.TotalLoadingRates.TotalP/area) or 0)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.LoadingRateConcentrations.Sediment|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.LoadingRateConcentrations.TotalN|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.LoadingRateConcentrations.TotalP|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.Area|toUnit(areaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalLoadingRates.Sediment|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalLoadingRates.TotalN|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalLoadingRates.TotalP|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ ((summaryRow.TotalLoadingRates.Sediment/area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ ((summaryRow.TotalLoadingRates.TotalN/area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ ((summaryRow.TotalLoadingRates.TotalP/area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.LoadingRateConcentrations.Sediment|toUnit(concentrationDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.LoadingRateConcentrations.TotalN|toUnit(concentrationDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.LoadingRateConcentrations.TotalP|toUnit(concentrationDisplayUnit)|round(2)|toLocaleString(2) }}</th>
</tr>
</tfoot>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,44 @@
<tr>
<th rowspan="2" class="subbasin-source-col" data-sortable="true" data-sorter="window.numericSort">HUC-12 Name</th>
<th rowspan="2" class="subbasin-source-col" data-sortable="true" data-sorter="window.numericSort">HUC-12 Number</th>
<th rowspan="2" data-sortable="true" data-sorter="window.numericSort">Area (ha)</th>
<th rowspan="2" data-sortable="true" data-sorter="window.numericSort">Area ({{ areaUnit }})</th>
<th colspan="3">Total Loads (not normalized)</th>
<th colspan="3">Loading Rates (area normalized)</th>
</tr>
<tr>
<th data-sortable="true" data-sorter="window.numericSort">Sediment (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment ({{ massPerAreaUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen ({{ massPerAreaUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus ({{ massPerAreaUnit }})</th>
</tr>
</thead>
<tbody>
{% for key, row in rows %}
<tr class="huc12-total" data-huc12-id="{{ key }}">
<td class="text-left">{{ subbasins.get(key).get('name') if subbasins.get(key) else '--' }}</td>
<td class="text-right">{{ key }}</td>
<td class="strong text-right">{{ row.SummaryLoads.Area|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.SummaryLoads.Sediment|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.SummaryLoads.TotalN|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.SummaryLoads.TotalP|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ (row.SummaryLoads.Sediment/row.SummaryLoads.Area)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ (row.SummaryLoads.TotalN/row.SummaryLoads.Area)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ (row.SummaryLoads.TotalP/row.SummaryLoads.Area)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.SummaryLoads.Area|toUnit(areaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.SummaryLoads.Sediment|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.SummaryLoads.TotalN|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.SummaryLoads.TotalP|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ (row.SummaryLoads.Sediment/row.SummaryLoads.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ (row.SummaryLoads.TotalN/row.SummaryLoads.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ (row.SummaryLoads.TotalP/row.SummaryLoads.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<th colspan="2" class="text-left">{{ summaryRow.Source }}</th>
<th class="text-right">{{ summaryRow.Area|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.Sediment|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalN|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalP|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.Sediment/summaryRow.Area)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalN/summaryRow.Area)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalP/summaryRow.Area)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.Area|toUnit(areaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.Sediment|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalN|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalP|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.Sediment/summaryRow.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalN/summaryRow.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalP/summaryRow.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
</tr>
</tfoot>

Expand Down
42 changes: 21 additions & 21 deletions src/mmw/js/src/modeling/gwlfe/subbasin/templates/sourcesTable.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,43 @@
<thead>
<tr>
<th rowspan="2" class="subbasin-source-col" data-sortable="true" data-sorter="window.numericSort">Sources</th>
<th rowspan="2" data-sortable="true" data-sorter="window.numericSort">Area (ha)</th>
<th rowspan="2" data-sortable="true" data-sorter="window.numericSort">Area ({{ areaUnit }})</th>
<th colspan="3">Total Loads (not normalized)</th>
<th colspan="3">Loading Rates (area normalized)</th>
</tr>
<tr>
<th data-sortable="true" data-sorter="window.numericSort">Sediment (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus (kg/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus (kg/ha/y)</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus ({{ massPerTimeUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Sediment ({{ massPerAreaUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Nitrogen ({{ massPerAreaUnit }})</th>
<th data-sortable="true" data-sorter="window.numericSort">Total Phosphorus ({{ massPerAreaUnit }})</th>
</tr>
</thead>
<tbody>
{% for row in rows %}
<tr>
<td class="text-left">{{ row.Source }}</td>
<td class="strong text-right">{{ row.Area|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.Sediment|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalN|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalP|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.Sediment/row.Area) or 0)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalN/row.Area) or 0)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalP/row.Area) or 0)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.Area|toUnit(areaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.Sediment|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalN|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ row.TotalP|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.Sediment/row.Area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalN/row.Area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
<td class="strong text-right">{{ ((row.TotalP/row.Area) or 0)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<th class="text-left">{{ summaryRow.Source }}</th>
<th class="text-right">{{ summaryRow.Area|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.Sediment|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalN|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalP|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.Sediment/summaryRow.Area)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalN/summaryRow.Area)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalP/summaryRow.Area)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.Area|toUnit(areaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.Sediment|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalN|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ summaryRow.TotalP|toUnit(massPerTimeDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.Sediment/summaryRow.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalN/summaryRow.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
<th class="text-right">{{ (summaryRow.TotalP/summaryRow.Area)|toUnit(massPerAreaDisplayUnit)|round(2)|toLocaleString(2) }}</th>
</tr>
</tfoot>

Expand Down
Loading

0 comments on commit 8ef2ac9

Please sign in to comment.