|
|
- /**
- 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) {
- });
- }
- }
- }
|