Created
January 7, 2025 14:37
-
-
Save bohwaz/06e7e98461d38bca5625f2e9f2ef6f79 to your computer and use it in GitHub Desktop.
Userscript pour 12Train.com, pour mémoriser les infos
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Se souvenir des champs remplis sur 12Train.com | |
// @namespace http://tampermonkey.net/ | |
// @version 2025-01-07 | |
// @description Mémorise les dates, heures, gares et passagers, pour aller plus vite. | |
// @author BohwaZ | |
// @match https://www.12train.com/ | |
// @icon https://www.google.com/s2/favicons?sz=64&domain=12train.com | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
var fields = [ | |
// IDs only, no name in inputs, weird | |
'#origin', | |
'#destination', | |
'#departure_date', | |
'#departure_hour', | |
'#return_date', | |
'#return_hour', | |
]; | |
window.addEventListener('load', () => { | |
for (var i = 0; i < fields.length; i++) { | |
var key = fields[i]; | |
var v = localStorage.getItem('_form_' + key); | |
var el = document.querySelector(key); | |
if (v && el) { | |
el.value = v; | |
} | |
} | |
var passengers = document.querySelector('#journey_planner_form_query_passengers'); | |
var passengers_saved = JSON.parse(localStorage.getItem('_form_passengers') ?? 'null'); | |
if (passengers && passengers_saved) { | |
if (passengers_saved.length > 1) { | |
var src = passengers.querySelector('.j-p-form-passenger-control-box'); | |
for (var j = 1; j < passengers_saved.length; j++) { | |
passengers.appendChild(src.cloneNode(true)); | |
} | |
} | |
var k = 0; | |
passengers.querySelectorAll('.j-p-form-passenger-control-box').forEach (row => { | |
var p = passengers_saved[k++]; | |
row.querySelector('.j-p-form-passenger-age').value = p.age; | |
var type = row.querySelector('.rail-search-passenger-type'); | |
for (var dkey in p.type_dataset) { | |
type.dataset[dkey] = p.type_dataset[dkey]; | |
} | |
type.innerHTML = p.type_value; | |
row.querySelector('.j-p-form-passenger-card-control').innerHTML = p.cards; | |
row.querySelectorAll('.j-p-form-passenger-card-control:has(.j-p-f-delete-card)').forEach(c => { | |
var btn = c.querySelector('.j-p-f-delete-card'); | |
btn.onclick = () => c.remove(); | |
}); | |
if (k > 1) { | |
var btn = row.querySelector('.rail-search-passenger-delete'); | |
row.onmousedown = (e) => { | |
if (e.target.contains(btn)) { | |
return; | |
} | |
alert('Ce passager ne peut être modifié (<== script greasemonkey).'); | |
e.preventDefault(); | |
return false; | |
}; | |
btn.onclick = (e) => row.remove(); | |
} | |
}); | |
} | |
}); | |
window.addEventListener('beforeunload', () => { | |
for (var i = 0; i < fields.length; i++) { | |
var key = fields[i]; | |
var el = document.querySelector(key); | |
if (el) { | |
localStorage.setItem('_form_' + key, el.value); | |
} | |
} | |
var passengers = null; | |
document.querySelectorAll('.j-p-form-passenger-control-box').forEach(e => { | |
var type = e.querySelector('.rail-search-passenger-type'); | |
passengers = passengers ?? []; | |
var p = { | |
'type_dataset': Object.assign({}, type.dataset), | |
'type_value': type.innerHTML, | |
'age': e.querySelector('.j-p-form-passenger-age').value, | |
'cards': e.querySelector('.j-p-form-passenger-card-control').innerHTML | |
}; | |
//console.log(p); | |
passengers.push(p); | |
}); | |
if (null !== passengers) { | |
localStorage.setItem('_form_passengers', JSON.stringify(passengers)); | |
} | |
}); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment