mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
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>
This commit is contained in:
parent
0107fa817d
commit
27fa775c7c
1 changed files with 110 additions and 6 deletions
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue