You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

64 lines
1.7 KiB

/**
Implémente la télécommande JOSM
Le HTML géré pourrait ressembler à :
```html
<button
type="button"
data-controller="josm"
data-action="click->josm#remoteControl"
data-josm-commands-value="…"
>JOSM</button>
```
Où la valeur `commands` prend la forme d’un objet JSON dont chacune des entrées
représente une commande à enchaîner successivement et où la clef est le chemin
de la commande et la valeur un objet dont chacune des entrées représente les
paramètres de la commande.
Par exemple :
```json
{
"version": {},
"imagery": {
"id": "osmfr",
}
}
```
Avec cette valeur de `commands`, les appels successifs aux endpoints `/version`
puis `imagery?id=osmfr` seront effectués.
Cf <https://josm.openstreetmap.de/wiki/Help/RemoteControlCommands>
TODO Gérer le cas où il n’y a pas de JOSM en face pourrait être plus user-friendly.
**/
import { Controller } from '@hotwired/stimulus';
export default class extends Controller {
static values = {
commands: String,
}
remoteControl() {
const baseurl = 'http://localhost:8111';
const _this = this, commands = JSON.parse(this.commandsValue);
for (var command in commands) {
var url = baseurl + '/' + command, params = new URLSearchParams();
for (var name in commands[command]) {
params.append(name, commands[command][name]);
}
if (Array.from(params.length > 0)) {
url += '?' + params.toString();
}
fetch(url)
.then(function (response) {
return response.text();
})
.then(function (text) {
});
}
}
}