summaryrefslogtreecommitdiffstats
path: root/xslt
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2013-02-09 07:51:06 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-02-09 09:49:31 -0800
commit752ee669689df1fe39f0196954f67ac55bb2819d (patch)
tree2b7ec95781ae36426a7584986b8dd88fe32adee4 /xslt
parent312f553aee96622b452bff1c3966d3927bc6eeb4 (diff)
downloadsubsurface-752ee669689df1fe39f0196954f67ac55bb2819d.tar.gz
Improvements on MacDive import
New information of the upcoming MacDive log format is taken into account, more Imperial conversions are added and a couple of bugs fixed. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'xslt')
-rw-r--r--xslt/MacDive.xslt174
1 files changed, 160 insertions, 14 deletions
diff --git a/xslt/MacDive.xslt b/xslt/MacDive.xslt
index bd1ba9c4a..c7c406521 100644
--- a/xslt/MacDive.xslt
+++ b/xslt/MacDive.xslt
@@ -42,6 +42,12 @@
</xsl:choose>
</xsl:attribute>
+ <xsl:if test="rating != ''">
+ <xsl:attribute name="rating">
+ <xsl:value-of select="rating"/>
+ </xsl:attribute>
+ </xsl:if>
+
<xsl:attribute name="date">
<xsl:value-of select="date"/>
</xsl:attribute>
@@ -55,11 +61,44 @@
<xsl:choose>
<xsl:when test="maxdepth != ''">
- <depth max="{concat(maxdepth,' m')}" mean="{concat(avgdepth, ' m')}"/>
+ <depth>
+ <xsl:attribute name="max">
+ <xsl:call-template name="depthConvert">
+ <xsl:with-param name="depth">
+ <xsl:value-of select="maxdepth"/>
+ </xsl:with-param>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="mean">
+ <xsl:call-template name="depthConvert">
+ <xsl:with-param name="depth">
+ <xsl:value-of select="avgdepth"/>
+ </xsl:with-param>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </depth>
</xsl:when>
<xsl:otherwise>
- <!-- Note: averageDepth is mis-spelled as in received sample -->
- <depth max="{concat(maxDepth,' m')}" mean="{concat(avergeDepth, ' m')}"/>
+ <depth>
+ <xsl:attribute name="max">
+ <xsl:call-template name="depthConvert">
+ <xsl:with-param name="depth">
+ <xsl:value-of select="maxDepth"/>
+ </xsl:with-param>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="mean">
+ <xsl:call-template name="depthConvert">
+ <xsl:with-param name="depth">
+ <xsl:value-of select="averageDepth"/>
+ </xsl:with-param>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </depth>
</xsl:otherwise>
</xsl:choose>
@@ -68,7 +107,19 @@
</xsl:variable>
<location>
- <xsl:value-of select="concat(country, ' ', location, ' ', site)"/>
+ <xsl:for-each select="country|location|site">
+ <xsl:choose>
+ <xsl:when test="following-sibling::location[1] != ''">
+ <xsl:value-of select="concat(., ' / ')"/>
+ </xsl:when>
+ <xsl:when test="following-sibling::site[1] != ''">
+ <xsl:value-of select="concat(., ' / ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
</location>
<xsl:if test="sitelat != ''">
@@ -130,7 +181,12 @@
</xsl:if>
<xsl:if test="tankSize != ''">
<xsl:attribute name="size">
- <xsl:value-of select="concat(tankSize, ' l')"/>
+ <xsl:call-template name="sizeConvert">
+ <xsl:with-param name="singleSize" select="tankSize"/>
+ <xsl:with-param name="double" select="double"/>
+ <xsl:with-param name="pressure" select="workingPressure"/>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
</xsl:attribute>
</xsl:if>
<xsl:if test="workingPressure != ''">
@@ -141,6 +197,11 @@
</xsl:call-template>
</xsl:attribute>
</xsl:if>
+ <xsl:if test="tankName != ''">
+ <xsl:attribute name="description">
+ <xsl:value-of select="tankName"/>
+ </xsl:attribute>
+ </xsl:if>
</cylinder>
</xsl:for-each>
@@ -188,7 +249,10 @@
<xsl:if test="weight != ''">
<weightsystem>
<xsl:attribute name="weight">
- <xsl:value-of select="weight"/>
+ <xsl:call-template name="weightConvert">
+ <xsl:with-param name="weight" select="weight"/>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
</xsl:attribute>
<xsl:attribute name="description">
<xsl:value-of select="'unknown'"/>
@@ -207,11 +271,19 @@
</xsl:call-template>
</xsl:attribute>
<xsl:attribute name="depth">
- <xsl:value-of select="concat(depth, ' m')"/>
+ <xsl:call-template name="depthConvert">
+ <xsl:with-param name="depth">
+ <xsl:value-of select="depth"/>
+ </xsl:with-param>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
</xsl:attribute>
<xsl:if test="pressure != ''">
<xsl:attribute name="pressure">
- <xsl:value-of select="concat(pressure, ' bar')"/>
+ <xsl:call-template name="pressureConvert">
+ <xsl:with-param name="number" select="pressure"/>
+ <xsl:with-param name="units" select="$units"/>
+ </xsl:call-template>
</xsl:attribute>
</xsl:if>
<xsl:if test="temperature != ''">
@@ -239,6 +311,21 @@
<xsl:when test="alarm = 'ascent_rate'">
<xsl:value-of select="'ascent'"/>
</xsl:when>
+ <xsl:when test="alarm = 'deep_stop'">
+ <xsl:value-of select="'deepstop'"/>
+ </xsl:when>
+ <xsl:when test="alarm = 'deco'">
+ <xsl:value-of select="'deco stop'"/>
+ </xsl:when>
+ <xsl:when test="alarm = 'po2_high'">
+ <xsl:value-of select="'PO2'"/>
+ </xsl:when>
+ <xsl:when test="alarm = 'tissue_warning'">
+ <xsl:value-of select="'tissue level warning'"/>
+ </xsl:when>
+ <xsl:when test="alarm = 'user_depth_alarm'">
+ <xsl:value-of select="'maxdepth'"/>
+ </xsl:when>
<xsl:otherwise>
<xsl:value-of select="alarm"/>
</xsl:otherwise>
@@ -258,7 +345,7 @@
<xsl:choose>
<xsl:when test="$units = 'Imperial'">
- <xsl:value-of select="concat(round($number div 14.5037738007), ' bar')"/>
+ <xsl:value-of select="concat(($number div 14.5037738007), ' bar')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($number, ' bar')"/>
@@ -267,19 +354,78 @@
</xsl:template>
<!-- end convert pressure -->
+ <!-- convert cuft to litres -->
+ <xsl:template name="sizeConvert">
+ <xsl:param name="singleSize"/>
+ <xsl:param name="double"/>
+ <xsl:param name="pressure"/>
+ <xsl:param name="units"/>
+
+ <xsl:variable name="size">
+ <xsl:value-of select="$singleSize + $singleSize * $double"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'Imperial'">
+ <xsl:if test="$pressure != '0'">
+ <xsl:value-of select="concat((($size * 14.7 div $pressure) div 0.035315), ' l')"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($size, ' l')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <!-- end convert pressure -->
+
<!-- convert time in seconds to minutes:seconds -->
<xsl:template name="timeConvert">
<xsl:param name="timeSec"/>
<xsl:param name="units"/>
<xsl:if test="$timeSec != ''">
- <xsl:choose>
- <xsl:when test="$units = 'Metric'">
- <xsl:value-of select="concat(floor(number($timeSec) div 60), ':', format-number(floor(number($timeSec) mod 60), '00'), ' min')"/>
- </xsl:when>
- </xsl:choose>
+ <xsl:value-of select="concat(floor(number($timeSec) div 60), ':', format-number(floor(number($timeSec) mod 60), '00'), ' min')"/>
</xsl:if>
</xsl:template>
<!-- end convert time -->
+ <!-- convert depth to meters -->
+ <xsl:template name="depthConvert">
+ <xsl:param name="depth"/>
+ <xsl:param name="units"/>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'Imperial'">
+ <xsl:value-of select="concat(($depth * 0.3048), ' m')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($depth, ' m')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <!-- end convert depth -->
+
+ <!-- convert weight to kg -->
+ <xsl:template name="weightConvert">
+ <xsl:param name="weight"/>
+ <xsl:param name="units"/>
+
+ <xsl:choose>
+ <xsl:when test="$weight &gt; 0">
+ <xsl:choose>
+ <xsl:when test="$units = 'Imperial'">
+ <xsl:value-of select="concat(($weight * 0.453592), ' kg')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($weight, ' kg')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$weight"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <!-- end convert weight -->
+
</xsl:stylesheet>