I want to present some data in a custom HTML prompt. The data is stored in KM in the form of a JSON object. The issue is that I'm trying to refer to a specific object inside the main JSON object using the value of an ID field. And while I've found examples of showing the value of a known, simple KM variable in an HTML prompt (using textarea and an id field), I don't think I've seen the same using JSON variables.
I'm basing my work on Dan Thomas's MACRO: Spotlight KM Variables Updated version 1.1:
I understand that the construct:
_varName = getKMVariable("sspResult", true);
_varValue = getKMVariable(_varName);
document.getElementById("divVarName").textContent = _varName;
document.getElementById("txtValue").value = _varValue;
allows him to write:
where the id of the div and the textarea actually print out the contents of the variables.
I wanted to do the same thing, with the following script:
_expertsList = getKMVariable("jExperts", true)
_expertId = getKMVariable("sspResult", true);
_expertReturned =_expertsList.find(item => item.id == _expertId)
document.getElementById("expertName").textContent = _expertReturned.nom
document.getElementById("expertOrigin").textContent = _expertReturned.origine
where jExperts is a JSON variable that I set in KM (it's properly formatted, and I use Spotlight Search Script, to return the id I want to use.)
The macro breaks because it tells me that "find" is not a function:
Error in 'setupUI':
_expertsList.find is not a function. (In '_expertsList.find(item => item.id == _expertId)', '_expertsList.find' is undefined)
My questions:
- does
_expertsList
contain an actual JSON object, or is there another way to pass a JSON object to the script from KM - is the .find() function (which I believe was introduced in ECMA 6) not supported in the flavor of JS used by KM
- is there a simpler way of addressing KM variables and JSON objects in a script
As you can see, I know just enough about these things to be a danger to myself and others ...
Thanks for any pointers
For what it's worth, here's a sample of the JSON data i'm using:
I'm getting the id out of the SSP search, and I want to show the "nom", "origine" fields linked to that id.
[
{ "id" : "1", "missions" : [
{"client" : "ACME", "intitulé" : "Mission Title 1", "numéro" : "3256-02"}, {"client" : "BigCo", "intitulé" : "Boom boom badaboum", "numéro" : "666-00"}
],
"nom" : "John Doe", "origine" : "ACME", "société" : "John Doe Consulting"},
{ "id" : "2", "missions" : [
{ "client" : "SmallCo", "intitulé" : "Get the widget", "numéro" : "2224-00" }
],
"nom" : "Jimmy Bob", "origine" : "This other big company", "société" : "Jimmy Bob and Associates" },
{ "nom" : "Suzie Q", "origine" : "ACME", "société" : "Suzie Q and daughters" }
]