diff options
author | Miika Turkia <miika.turkia@gmail.com> | 2014-04-08 22:31:45 +0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-04-10 09:10:59 -0700 |
commit | 27fa775c7ceacfce82cce3722907b4c002505ea1 (patch) | |
tree | 0c16008f7cfe9f9fe2d14773c04e0e527b5d9450 /xslt/divelogs-export.xslt | |
parent | 0107fa817d9320c8aeb3b0e052b369c6251e1572 (diff) | |
download | subsurface-27fa775c7ceacfce82cce3722907b4c002505ea1.tar.gz |
Create synthetic depth samples for manual dives
This patch creates artificial depth samples for manually entered dives
every 60 seconds. This is used for export to divelogs.de.
Fixes #486
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'xslt/divelogs-export.xslt')
-rw-r--r-- | xslt/divelogs-export.xslt | 116 |
1 files changed, 110 insertions, 6 deletions
diff --git a/xslt/divelogs-export.xslt b/xslt/divelogs-export.xslt index cfd0f4ca6..287b28c18 100644 --- a/xslt/divelogs-export.xslt +++ b/xslt/divelogs-export.xslt @@ -93,6 +93,17 @@ <WATERTEMPMAXDEPTH> <xsl:value-of select="substring-before(node()/temperature/@water, ' ')"/> </WATERTEMPMAXDEPTH> + <xsl:variable name="manual"> + <xsl:choose> + <xsl:when test="divecomputer/@model = 'manually added dive'"> + <xsl:value-of select="1"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <SAMPLEINTERVAL> <xsl:variable name="first"> <xsl:call-template name="time2sec"> @@ -108,16 +119,109 @@ </xsl:with-param> </xsl:call-template> </xsl:variable> - <xsl:value-of select="$second - $first"/> + <xsl:choose> + <xsl:when test="$manual = 1"> + <xsl:value-of select="$second - $first"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="60"/> + </xsl:otherwise> + </xsl:choose> </SAMPLEINTERVAL> <xsl:for-each select="divecomputer[1]/sample"> - <SAMPLE> - <DEPTH> - <xsl:value-of select="substring-before(./@depth, ' ')"/> - </DEPTH> - </SAMPLE> + <xsl:choose> + <xsl:when test="$manual = 1 and @time != '0:00 min'"> + <xsl:variable name="timesecond"> + <xsl:call-template name="time2sec"> + <xsl:with-param name="time" select="@time"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="timefirst"> + <xsl:call-template name="time2sec"> + <xsl:with-param name="time" select="preceding-sibling::sample[1]/@time"/> + </xsl:call-template> + </xsl:variable> + <xsl:call-template name="while"> + <xsl:with-param name="until"> + <xsl:value-of select="($timesecond - $timefirst) div 60 - 1"/> + </xsl:with-param> + <xsl:with-param name="count"> + <xsl:value-of select="0"/> + </xsl:with-param> + <xsl:with-param name="timefirst"> + <xsl:value-of select="$timefirst"/> + </xsl:with-param> + <xsl:with-param name="timesecond"> + <xsl:value-of select="$timesecond"/> + </xsl:with-param> + <xsl:with-param name="depthsecond"> + <xsl:call-template name="depth2mm"> + <xsl:with-param name="depth"> + <xsl:value-of select="./@depth"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="depthfirst"> + <xsl:call-template name="depth2mm"> + <xsl:with-param name="depth"> + <xsl:value-of select="preceding-sibling::sample[1]/@depth"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + <!-- <name select="{concat(@time, ' - ', preceding-sibling::sample[1]/@time)}"/>--> + </xsl:when> + <xsl:otherwise> + <SAMPLE> + <DEPTH> + <xsl:value-of select="substring-before(./@depth, ' ')"/> + </DEPTH> + </SAMPLE> + </xsl:otherwise> + </xsl:choose> </xsl:for-each> </DIVELOGSDATA> </xsl:template> + <xsl:template name="while"> + <xsl:param name="timefirst"/> + <xsl:param name="timesecond"/> + <xsl:param name="depthfirst"/> + <xsl:param name="depthsecond"/> + <xsl:param name="count"/> + <xsl:param name="until"/> + + <xsl:variable name="curdepth"> + <xsl:value-of select="format-number(((($timefirst + 60) - $timefirst) div ($timesecond - $timefirst) * ($depthsecond - $depthfirst) + $depthfirst), '#.##')"/> + </xsl:variable> + <xsl:variable name="curtime"> + <xsl:value-of select="$timefirst + 60"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="$count < $until"> + <SAMPLE> + <DEPTH> + <xsl:value-of select="$curdepth div 1000"/> + </DEPTH> + </SAMPLE> + <xsl:call-template name="while"> + <xsl:with-param name="timefirst" select="$curtime"/> + <xsl:with-param name="timesecond" select="$timesecond"/> + <xsl:with-param name="depthfirst" select="$curdepth"/> + <xsl:with-param name="depthsecond" select="$depthsecond"/> + <xsl:with-param name="count" select="$count + 1"/> + <xsl:with-param name="until" select="$until"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <SAMPLE> + <DEPTH> + <xsl:value-of select="$curdepth div 1000"/> + </DEPTH> + </SAMPLE> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + </xsl:stylesheet> |