mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
MacDive import improvement
MacDive reports non-existent values as zero and in Imperial units it would be 32F. This patch will try to make an educated guess whether we have the proper temperature and pressure readings and ignore the zero fields if it seems that there are no real samples from the dive computer. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
b54dacbeb2
commit
cc96860165
1 changed files with 74 additions and 17 deletions
|
@ -30,6 +30,19 @@
|
|||
|
||||
<xsl:template match="dive">
|
||||
<xsl:variable name="units" select="/dives/units"/>
|
||||
|
||||
<!-- Count the amount of temeprature samples during the dive -->
|
||||
<xsl:variable name="temperatureSamples">
|
||||
<xsl:call-template name="temperatureSamples" select="/dives/dive/samples">
|
||||
<xsl:with-param name="units" select="$units"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Count the amount of pressure samples during the dive -->
|
||||
<xsl:variable name="pressureSamples">
|
||||
<xsl:call-template name="pressureSamples" select="/dives/dive/samples"/>
|
||||
</xsl:variable>
|
||||
|
||||
<dive>
|
||||
<xsl:attribute name="number">
|
||||
<xsl:choose>
|
||||
|
@ -122,12 +135,14 @@
|
|||
</xsl:for-each>
|
||||
</location>
|
||||
|
||||
<xsl:if test="sitelat != ''">
|
||||
<!-- This will discard GPS coordinates of 0 0 but I suppose that
|
||||
is better than all non-gps dives to be in that location -->
|
||||
<xsl:if test="sitelat != 0">
|
||||
<gps>
|
||||
<xsl:value-of select="concat(sitelat, ' ', sitelon)"/>
|
||||
</gps>
|
||||
</xsl:if>
|
||||
<xsl:if test="siteLat != ''">
|
||||
<xsl:if test="siteLat != 0">
|
||||
<gps>
|
||||
<xsl:value-of select="concat(siteLat, ' ', siteLon)"/>
|
||||
</gps>
|
||||
|
@ -163,7 +178,7 @@
|
|||
<xsl:value-of select="concat(helium, '%')"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="pressureStart != ''">
|
||||
<xsl:if test="pressureStart > 0">
|
||||
<xsl:attribute name="start">
|
||||
<xsl:call-template name="pressureConvert">
|
||||
<xsl:with-param name="number" select="pressureStart"/>
|
||||
|
@ -171,7 +186,7 @@
|
|||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="pressureEnd != ''">
|
||||
<xsl:if test="pressureEnd > 0">
|
||||
<xsl:attribute name="end">
|
||||
<xsl:call-template name="pressureConvert">
|
||||
<xsl:with-param name="number" select="pressureEnd"/>
|
||||
|
@ -179,7 +194,7 @@
|
|||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="tankSize != ''">
|
||||
<xsl:if test="tankSize > 0">
|
||||
<xsl:attribute name="size">
|
||||
<xsl:call-template name="sizeConvert">
|
||||
<xsl:with-param name="singleSize" select="tankSize"/>
|
||||
|
@ -189,7 +204,7 @@
|
|||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="workingPressure != ''">
|
||||
<xsl:if test="workingPressure > 0">
|
||||
<xsl:attribute name="workpressure">
|
||||
<xsl:call-template name="pressureConvert">
|
||||
<xsl:with-param name="number" select="workingPressure"/>
|
||||
|
@ -206,37 +221,63 @@
|
|||
</xsl:for-each>
|
||||
|
||||
<temperature>
|
||||
|
||||
<!-- If we have temperature reading and it is non-zero, we use
|
||||
it. If the temperature is zero, we only use it if we have
|
||||
temperature samples from the dive. -->
|
||||
<xsl:if test="tempAir != ''">
|
||||
<xsl:attribute name="air">
|
||||
<xsl:variable name="air">
|
||||
<xsl:call-template name="tempConvert">
|
||||
<xsl:with-param name="temp" select="tempAir"/>
|
||||
<xsl:with-param name="units" select="$units"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:variable>
|
||||
<xsl:if test="substring-before($air, ' ') != 0 or $temperatureSamples > 0">
|
||||
<xsl:attribute name="air">
|
||||
<xsl:value-of select="$air"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="tempLow != ''">
|
||||
<xsl:attribute name="water">
|
||||
<xsl:variable name="water">
|
||||
<xsl:call-template name="tempConvert">
|
||||
<xsl:with-param name="temp" select="tempLow"/>
|
||||
<xsl:with-param name="units" select="$units"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:variable>
|
||||
<xsl:if test="substring-before($water, ' ') != 0 or $temperatureSamples > 0">
|
||||
<xsl:attribute name="water">
|
||||
<xsl:value-of select="$water"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="tempair != ''">
|
||||
<xsl:attribute name="air">
|
||||
<xsl:variable name="air">
|
||||
<xsl:call-template name="tempConvert">
|
||||
<xsl:with-param name="temp" select="tempair"/>
|
||||
<xsl:with-param name="units" select="$units"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:variable>
|
||||
<xsl:if test="substring-before($air, ' ') != 0 or $temperatureSamples > 0">
|
||||
<xsl:attribute name="air">
|
||||
<xsl:value-of select="$air"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
<xsl:if test="templow != ''">
|
||||
<xsl:attribute name="water">
|
||||
<xsl:variable name="water">
|
||||
<xsl:call-template name="tempConvert">
|
||||
<xsl:with-param name="temp" select="temlow"/>
|
||||
<xsl:with-param name="units" select="$units"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:variable>
|
||||
<xsl:if test="substring-before($water, ' ') != 0 or $temperatureSamples > 0">
|
||||
<xsl:attribute name="water">
|
||||
<xsl:value-of select="$water"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
</temperature>
|
||||
|
||||
|
@ -290,7 +331,7 @@
|
|||
<xsl:with-param name="units" select="$units"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
<xsl:if test="pressure != ''">
|
||||
<xsl:if test="pressure != '' and $pressureSamples > 0">
|
||||
<xsl:attribute name="pressure">
|
||||
<xsl:call-template name="pressureConvert">
|
||||
<xsl:with-param name="number" select="pressure"/>
|
||||
|
@ -298,7 +339,7 @@
|
|||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="temperature != ''">
|
||||
<xsl:if test="temperature != '' and $temperatureSamples > 0">
|
||||
<xsl:attribute name="temp">
|
||||
<xsl:call-template name="tempConvert">
|
||||
<xsl:with-param name="temp" select="temperature"/>
|
||||
|
@ -393,7 +434,7 @@
|
|||
</xsl:template>
|
||||
<!-- end convert pressure -->
|
||||
|
||||
<!-- convert temperature to C -->
|
||||
<!-- convert temperature from F to C -->
|
||||
<xsl:template name="tempConvert">
|
||||
<xsl:param name="temp"/>
|
||||
<xsl:param name="units"/>
|
||||
|
@ -459,4 +500,20 @@
|
|||
</xsl:template>
|
||||
<!-- end convert weight -->
|
||||
|
||||
<xsl:template name="temperatureSamples">
|
||||
<xsl:param name="units"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$units = 'Imperial'">
|
||||
<xsl:value-of select="count(descendant::temperature[. != 32])"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="count(descendant::temperature[. != 0])"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="pressureSamples">
|
||||
<xsl:value-of select="count(descendant::pressure[. > 0])"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
|
Loading…
Add table
Reference in a new issue