[client] travelynx checkin

This commit is contained in:
Leah 2020-02-08 00:36:44 +01:00
parent 706854de38
commit e319569b2c
6 changed files with 102 additions and 5 deletions

View file

@ -678,3 +678,10 @@ input:focus{
/*.showremarks:hover+.remarks {
display: inline-block;
}*/
.travelynx {
vertical-align: bottom;
cursor: pointer;
content: url("../img/travelynx.svg");
}

79
client/img/travelynx.svg Normal file
View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 24 24"
version="1.1"
id="svg6"
sodipodi:docname="travelynx.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="2131"
id="namedview8"
showgrid="false"
inkscape:zoom="19.666667"
inkscape:cx="0.25717638"
inkscape:cy="10.252251"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="g4573" />
<g
id="g4573">
<rect
y="3.40678"
x="3.1271186"
height="9.5338984"
width="10.550848"
id="rect4564"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.44797695" />
<g
id="g4562">
<path
d="m 8.4266298,1.3049637 c -3.0613961,0 -6.1227924,0.3826745 -6.1227924,3.0613962 v 7.2708161 c 0,1.477124 1.2015981,2.678722 2.6787217,2.678722 l -1.1480235,1.148023 v 0.382675 H 5.5412639 L 7.071962,14.315898 h 2.8853658 l 1.5306982,1.530698 h 1.530698 V 15.463921 L 11.8707,14.315898 c 1.477124,0 2.678722,-1.201598 2.678722,-2.678722 V 4.3663599 c 0,-2.6787217 -2.73995,-3.0613962 -6.1227922,-3.0613962 z M 4.9825591,12.7852 c -0.6352397,0 -1.1480235,-0.512784 -1.1480235,-1.148024 0,-0.63524 0.5127838,-1.148024 1.1480235,-1.148024 0.6352397,0 1.1480236,0.512784 1.1480236,1.148024 0,0.63524 -0.5127839,1.148024 -1.1480236,1.148024 z M 7.6612808,7.427756 H 3.8345356 V 4.3663599 h 3.8267452 z m 1.5306982,0 V 4.3663599 h 3.826745 V 7.427756 Z M 11.8707,12.7852 c -0.635239,0 -1.148023,-0.512784 -1.148023,-1.148024 0,-0.63524 0.512784,-1.148024 1.148023,-1.148024 0.63524,0 1.148024,0.512784 1.148024,1.148024 0,0.63524 -0.512784,1.148024 -1.148024,1.148024 z"
id="path14"
inkscape:connector-curvature="0"
style="stroke-width:0.76534903" />
<path
style="fill:none"
inkscape:connector-curvature="0"
d="M 0,0 H 24 V 24 H 0 Z"
id="path16" />
<path
inkscape:connector-curvature="0"
d="M 13.208696,20.997167 9.6183022,17.406774 8.3956743,18.620792 13.208696,23.433813 23.540763,13.101746 22.326745,11.887728 Z"
id="path16-3"
style="stroke-width:0.8610056" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -208,7 +208,8 @@ export const restoreDataStorage = () => {
showRIL100Names: false,
writeDebugLog: false,
enableCanvas: false,
language: language
language: language,
travelynx: fase
}
}

View file

@ -1,5 +1,6 @@
'use strict';
import { dataStorage } from './app.js';
import { showDiv, hideDiv, ElementById, parseDateTime, formatDuration } from './helpers.js';
import { getCache, addCache, ConsoleLog, parseName, ds100Names, t } from './app_functions.js';
import { showModal } from './overlays.js';
@ -21,7 +22,7 @@ const remarksModalTemplate = (type, remarks) => html`
`;
const showRemarksModal = (type, remarks) => {
showModal("Remarks", remarksModalTemplate(type, remarks));
showModal(t('remarks'), remarksModalTemplate(type, remarks));
};
const remarksTemplate = ([type, remarks]) => !!remarks.length ? html`
<a class="showremarks ${type}" @click=${() => showRemarksModal(type, remarks)}></a>
@ -49,6 +50,7 @@ const legTemplate = (element) => {
<td colspan="4">
${element.line.name} ${element.line.additionalName ? '('+element.line.additionalName+')' : ''} ${element.direction} ${element.cancelled ? html`<b style="color:red;">${t('cancelled-ride')}</b>` : ''}
${Object.entries(remarks).map(remarksTemplate)}
${dataStorage.settings.travelynx && element.line.mode == 'Train' ? html`<a class="travelynx" href="https://travelynx.de/s/${element.departure.point.stop.id}?train=${element.line.additionalName}"></a>` : ''}
</td>
</tr>
<tr>

View file

@ -45,8 +45,11 @@ export const languages = {
'language': 'Sprache',
'de': 'Deutsch',
'en': 'Englisch',
'cancelled-ride': 'Fahrt entfällt!'
'cancelled-ride': 'Fahrt entfällt!',
'remarks': 'Hinweise',
'travelynx-checkin': 'Travelynx checkin anzeigen?'
},
'en': {
'arrival': 'Arrival',
'departure': 'Departure',
@ -93,6 +96,8 @@ export const languages = {
'language': 'Language',
'de': 'German',
'en': 'English',
'cancelled-ride': 'Cancelled!'
'cancelled-ride': 'Cancelled!',
'remarks': 'Remarks',
'travelynx-checkin': 'show travelynx checkin?'
}
}

View file

@ -26,6 +26,7 @@ const settingsTemplate = () => html`
<label><input type="checkbox" ?checked=${dataStorage.settings.writeDebugLog} id="debug-messages"> ${t('showdebug')}</label><br>
<label><input type="checkbox" ?checked=${dataStorage.settings.enableCanvas} id="enable-canvas"> ${t('graphical')} <b>BETA</b></label><br>
<label><input type="checkbox" ?checked=${dataStorage.settings.fancyCanvas} id="fancy-canvas"> ${t('fancy')}<label><br>
<label><input type="checkbox" ?checked=${dataStorage.settings.travelynx} id="travelynx"> ${t('travelynx-checkin')}<label><br>
<br>
<b>${t('language')}:</b><br>
<label><input type="radio" name="language" ?checked=${dataStorage.settings.language === "de"} value="de"> ${t('de')}</label><br>
@ -52,7 +53,8 @@ const saveSettings = async () => {
const show_ril100 = ElementById('ril100').checked;
const write_debug = ElementById('debug-messages').checked;
const enable_canvas = ElementById('enable-canvas').checked;
const fancy_canvas = ElementById('fancy-canvas').checked;
const fancy_canvas = ElementById('fancy-canvas').checked;
const travelynx = ElementById('travelynx').checked;
if (provider !== dataStorage.settings.provider) {
dataStorage.journeysHistory = [];
@ -65,6 +67,7 @@ const saveSettings = async () => {
dataStorage.settings.enableCanvas = enable_canvas;
dataStorage.settings.fancyCanvas = fancy_canvas;
dataStorage.settings.language = language;
dataStorage.settings.travelynx = travelynx;
saveDataStorage();
if (show_ril100) await loadDS100();