0
Under review
Construct a JSON array
I am looking to be able to either build an array within a local JSON datasource, or be able to render a full list of comma separated objects that I have created via the "add" property for a JSON datasource.
I can add the data to the datasource just fine, but I then want to assign ALL of the data of the datasource to a variable to be able to push it to a REST API. With that said, how can I add an object to a datasource, and then add additional objects to the first object as an array. OR as I said, be able to render all of the content of the datasource that I have been assigning data to.
I can add the data to the datasource just fine, but I then want to assign ALL of the data of the datasource to a variable to be able to push it to a REST API. With that said, how can I add an object to a datasource, and then add additional objects to the first object as an array. OR as I said, be able to render all of the content of the datasource that I have been assigning data to.
Customer support service by UserEcho
Let me work up an example for you to look at.
<wire> <datasources> <datasource name="field-list" source="" query="/" providertype="json"/> </datasources> <classes> <class name="article-list-item"> <panel name="article-[param:dataSourceIndex]" width="95%" height="20%" lheight="25%" _name="[param:text]" _dataSourceIndex="[param:dataSourceIndex]" align="center" background="#ff0000" bordercolor="00ee00" borderwidth="3"> <text name="headline" width="100%" height="50%" color="#ffffff" font="helvetica" size="18" align="center" valign="top" alignment="center" text="[param:text]"></text> </panel> </class> </classes> <main> <panel name="bg" width="100%" height="100%"> <panel name="list-container" width="100%" lwidth="95%" height="100%" align="center" clip="yes"> <list name="list" datasource="field-list" width="102%" lwidth="102%" height="100%" align="center" orientation="vertical" paginate="no"> <object class="article-list-item" dataSourceIndex="[param:dataSourceIndex]" text="[param:value]" /> </list> </panel> </panel> </main> <actions> <action name="oninit" oninit="yes"> <play action="add"></play> </action> <action name="complete" datasource="field-list"> <alert message="[datasource:field-list.1.value] \\ [datasource:field-list.2.value] \\ [datasource:field-list.3.value]"/> <play action="concatonate" /> </action> <!-- This action is acting as the tool to add elements to a locally stored json file--> <action name="add"> <sync> <assign property="var:counter" value="0" /> <!-- The loop allows us to add more elements to the json faster--> <loop lhs="[var:counter]" operator="lt" rhs="10"> <assign property="datasource:field-list.add" value='{"name":"param","value":"value[var:counter]"}'/> <assign property="var:counter" value="[js:[var:counter]+1]" /> </loop> <!--Trigger a querycomplete to them compile the contents to send somewhere else--> <assign property="datasource:field-list.event" value="querycomplete"/> </sync> </action> <!--This action will capture the counter value from the json and concatonate a comma separated list. You probably will need to do some regex or something to remove the first comma.--> <action name="concatonate" > <sync> <assign property="var:allthestuff" value="" /> <assign property="var:counter" value="0" /> <loop lhs="[var:counter]" operator="lte" rhs="[datasource:field-list.dataSourceResultCount]"> <assign property="var:allthestuff" value="[var:allthestuff],[datasource:field-list.[var:counter].value]"/> <assign property="var:counter" value="[js:[var:counter]+1]" /> </loop> <!--Use this final var to send as a postcontent through your REST API--> <alert message="[var:allthestuff]"/> </sync> </action> </actions> </wire>