mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
c5d3d923a0
This patch uses pre-defined working pressures on cylinders to roughly calculate the size in liters. Imperial selection is ignored here as we can use the prefix to detect if the value seems like imperial unit (and the type of cylinder varies based on location, not divers preference in unit). Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
427 lines
15 KiB
HTML
427 lines
15 KiB
HTML
<?xml version="1.0"?>
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
|
<xsl:include href="commonTemplates.xsl"/>
|
|
<xsl:strip-space elements="*"/>
|
|
<xsl:param name="separatorIndex" select="separatorIndex"/>
|
|
<xsl:param name="units" select="units"/>
|
|
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
|
|
|
|
<xsl:variable name="lf"><xsl:text>
|
|
</xsl:text></xsl:variable>
|
|
<xsl:variable name="fs">
|
|
<xsl:choose>
|
|
<xsl:when test="$separatorIndex = 0"><xsl:text> </xsl:text></xsl:when>
|
|
<xsl:when test="$separatorIndex = 2"><xsl:text>;</xsl:text></xsl:when>
|
|
<xsl:otherwise><xsl:text>,</xsl:text></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:template match="/">
|
|
<divelog program="subsurface-import" version="2">
|
|
<dives>
|
|
<xsl:call-template name="printLine">
|
|
<xsl:with-param name="line" select="substring-before(substring-after(//SubsurfaceCSV, $lf), $lf)"/>
|
|
<xsl:with-param name="remaining" select="substring-after(substring-after(//SubsurfaceCSV, $lf), $lf)"/>
|
|
</xsl:call-template>
|
|
</dives>
|
|
</divelog>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="printLine">
|
|
<xsl:param name="line"/>
|
|
<xsl:param name="remaining"/>
|
|
|
|
<xsl:call-template name="printFields">
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
|
|
<xsl:if test="$remaining != ''">
|
|
<xsl:call-template name="printLine">
|
|
<xsl:with-param name="line" select="substring-before($remaining, $lf)"/>
|
|
<xsl:with-param name="remaining" select="substring-after($remaining, $lf)"/>
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="printFields">
|
|
<xsl:param name="line"/>
|
|
|
|
|
|
<dive>
|
|
<xsl:attribute name="date">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="1"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
|
|
<xsl:attribute name="time">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="2"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
|
|
<xsl:attribute name="number">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="0"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
|
|
<xsl:attribute name="duration">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="3"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
|
|
<xsl:attribute name="tags">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="22"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
|
|
<xsl:variable name="rating">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="18"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$rating != ''">
|
|
<xsl:attribute name="rating">
|
|
<xsl:value-of select="$rating"/>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
|
|
<xsl:variable name="visibility">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="19"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$visibility != ''">
|
|
<xsl:attribute name="visibility">
|
|
<xsl:value-of select="$visibility"/>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
|
|
<divecomputerid deviceid="ffffffff" model="csv" />
|
|
|
|
<depth>
|
|
<xsl:variable name="max">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="4"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="mean">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="5"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$max != ''">
|
|
<xsl:attribute name="max">
|
|
<xsl:choose>
|
|
<xsl:when test="$units = 0">
|
|
<xsl:value-of select="$max"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat(format-number((substring-before($max, ' ') * 0.3048), '#.##'), ' m')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:if test="$mean != ''">
|
|
<xsl:attribute name="mean">
|
|
<xsl:choose>
|
|
<xsl:when test="$units = 0">
|
|
<xsl:value-of select="$mean"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat(format-number((substring-before($mean, ' ') * 0.3048), '#.##'), ' m')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
</depth>
|
|
|
|
<divetemperature>
|
|
<xsl:variable name="air">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="6"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="water">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="7"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$air != ''">
|
|
<xsl:attribute name="air">
|
|
<xsl:choose>
|
|
<xsl:when test="$units = 0">
|
|
<xsl:value-of select="$air"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat(format-number((substring-before($air, ' ') - 32) * 5 div 9, '0.0'), ' C')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:if test="$water != ''">
|
|
<xsl:attribute name="water">
|
|
<xsl:choose>
|
|
<xsl:when test="$units = 0">
|
|
<xsl:value-of select="$water"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat(format-number((substring-before($water, ' ') - 32) * 5 div 9, '0.0'), ' C')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
</divetemperature>
|
|
|
|
<cylinder>
|
|
<xsl:variable name="size">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="8"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="start">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="9"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="end">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="10"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="o2">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="11"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="he">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="12"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<!-- ALxxx -> xxx cuft at 3000 psi
|
|
LPxxx -> xxx cuft at 2400 psi
|
|
HPxxx -> xxx cuft at 3440 psi -->
|
|
|
|
<xsl:if test="$size != ''">
|
|
<xsl:attribute name="size">
|
|
<xsl:choose>
|
|
<xsl:when test="substring($size, 1, 2) = 'AL'">
|
|
<xsl:value-of select="format-number((translate($size, translate($size, '0123456789', ''), '') * 14.7 div 3000) div 0.035315, '#.#')"/>
|
|
</xsl:when>
|
|
<xsl:when test="substring($size, 1, 2) = 'LP'">
|
|
<xsl:value-of select="format-number((translate($size, translate($size, '0123456789', ''), '') * 14.7 div 2400) div 0.035315, '#.#')"/>
|
|
</xsl:when>
|
|
<xsl:when test="substring($size, 1, 2) = 'HP'">
|
|
<xsl:value-of select="format-number((translate($size, translate($size, '0123456789', ''), '') * 14.7 div 3440) div 0.035315, '#.#')"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$size"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:if test="$start != ''">
|
|
<xsl:attribute name="start">
|
|
<xsl:choose>
|
|
<xsl:when test="$units = 0">
|
|
<xsl:value-of select="$start"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat(format-number((substring-before($start, ' ') div 14.5037738007), '#'), ' bar')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:if test="$end != ''">
|
|
<xsl:attribute name="end">
|
|
<xsl:choose>
|
|
<xsl:when test="$units = 0">
|
|
<xsl:value-of select="$end"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat(format-number((substring-before($end, ' ') div 14.5037738007), '#'), ' bar')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:if test="$o2 != ''">
|
|
<xsl:attribute name="o2">
|
|
<xsl:value-of select="$o2"/>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:if test="$he != ''">
|
|
<xsl:attribute name="he">
|
|
<xsl:value-of select="$he"/>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
</cylinder>
|
|
|
|
<location>
|
|
<xsl:variable name="gps">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="14"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="location">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="13"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$gps != ''">
|
|
<xsl:attribute name="gps">
|
|
<xsl:value-of select="$gps"/>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:if test="$location != ''">
|
|
<xsl:value-of select="$location"/>
|
|
</xsl:if>
|
|
</location>
|
|
|
|
<xsl:variable name="dm">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="15"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$dm != ''">
|
|
<divemaster>
|
|
<xsl:value-of select="$dm"/>
|
|
</divemaster>
|
|
</xsl:if>
|
|
|
|
<xsl:variable name="buddy">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="16"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$buddy != ''">
|
|
<buddy>
|
|
<xsl:value-of select="$buddy"/>
|
|
</buddy>
|
|
</xsl:if>
|
|
|
|
<xsl:variable name="suit">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="17"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$suit != ''">
|
|
<suit>
|
|
<xsl:value-of select="$suit"/>
|
|
</suit>
|
|
</xsl:if>
|
|
|
|
<xsl:variable name="notes">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="20"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$notes != ''">
|
|
<notes>
|
|
<xsl:value-of select="$notes"/>
|
|
</notes>
|
|
</xsl:if>
|
|
|
|
<xsl:variable name="weight">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="21"/>
|
|
<xsl:with-param name="line" select="$line"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$weight != ''">
|
|
<weightsystem description="unknown">
|
|
<xsl:attribute name="weight">
|
|
<xsl:choose>
|
|
<xsl:when test="$units = 0">
|
|
<xsl:value-of select="$weight"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat(format-number((substring-before($weight, ' ') * 0.453592), '#.##'), ' kg')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
</weightsystem>
|
|
</xsl:if>
|
|
|
|
</dive>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="getFieldByIndex">
|
|
<xsl:param name="index"/>
|
|
<xsl:param name="line"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$index > 0">
|
|
<xsl:choose>
|
|
<xsl:when test="substring($line, 1, 1) = '"'">
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="$index -1"/>
|
|
<xsl:with-param name="line" select="substring-after($line, $fs)"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="getFieldByIndex">
|
|
<xsl:with-param name="index" select="$index -1"/>
|
|
<xsl:with-param name="line" select="substring-after($line, $fs)"/>
|
|
</xsl:call-template>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:choose>
|
|
<xsl:when test="substring($line, 1, 1) = '"'">
|
|
<xsl:choose>
|
|
<xsl:when test="substring-before($line,'"$fs') != ''">
|
|
<xsl:value-of select="substring-before($line,'"$fs')"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:if test="substring-after($line, '"$fs') = ''">
|
|
<xsl:value-of select="substring-before(substring-after($line, '"'), '"')"/>
|
|
</xsl:if>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise>
|
|
<xsl:choose>
|
|
<xsl:when test="substring-before($line,$fs) != ''">
|
|
<xsl:value-of select="substring-before($line,$fs)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:if test="substring-after($line, $fs) = ''">
|
|
<xsl:value-of select="$line"/>
|
|
</xsl:if>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
</xsl:template>
|
|
</xsl:stylesheet>
|