mirror of
https://github.com/fluencelabs/jsonpath
synced 2025-03-27 12:21:03 +00:00
79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
import * as jsonpath from "jsonpath-wasm";
|
|
|
|
function getTextarea() {
|
|
return document.querySelector('#json-example');
|
|
}
|
|
|
|
function getJsonpathInput() {
|
|
return document.querySelector('#jsonpath-input');
|
|
}
|
|
|
|
function getReadBtn() {
|
|
return document.querySelector('#read-json');
|
|
}
|
|
|
|
function getReadResult() {
|
|
return document.querySelector('#read-result');
|
|
}
|
|
|
|
function getLinks() {
|
|
return document.querySelectorAll('.path>a');
|
|
}
|
|
|
|
function initData(url) {
|
|
return fetch(url)
|
|
.then((res) => res.text())
|
|
.then((jsonStr) => getTextarea().value = jsonStr)
|
|
.catch(console.error);
|
|
}
|
|
|
|
function initEvent() {
|
|
getJsonpathInput().onkeyup = function(e) {
|
|
var charCode = (typeof e.which === "number") ? e.which : e.keyCode;
|
|
if(charCode == 13) {
|
|
read();
|
|
}
|
|
}
|
|
|
|
getReadBtn().onclick = function() {
|
|
read();
|
|
}
|
|
|
|
getLinks().forEach(function(anchor) {
|
|
anchor.href = "#" + encodeURIComponent(anchor.textContent);
|
|
});
|
|
|
|
function read() {
|
|
let ret = jsonpath.select(getTextarea().value, getJsonpathInput().value);
|
|
if(typeof ret === 'string') {
|
|
getReadResult().innerText = ret;
|
|
} else {
|
|
getReadResult().innerText = JSON.stringify(ret, null, 2);
|
|
}
|
|
}
|
|
}
|
|
|
|
function readPathParam() {
|
|
if(location.href.indexOf('#') > -1) {
|
|
readPath()
|
|
}
|
|
}
|
|
|
|
function forceClick(ctrl) {
|
|
let doc = ctrl.ownerDocument;
|
|
let event = doc.createEvent('MouseEvents');
|
|
event.initEvent('click', true, true);
|
|
event.synthetic = true;
|
|
ctrl.dispatchEvent(event, true);
|
|
}
|
|
|
|
function readPath() {
|
|
let query = location.href.substring(location.href.indexOf('#') + 1);
|
|
let path = decodeURIComponent(query);
|
|
getJsonpathInput().value = path;
|
|
forceClick(getReadBtn());
|
|
}
|
|
|
|
window.onpopstate = readPath;
|
|
|
|
initData('data/example.json').then(initEvent).then(readPathParam); |