dataschema-json-source.mustache revision 8f9d94fb7812612dff92ce14a37dbcad4ff02c1c
729N/A<style scoped>
729N/A/* custom styles for this example */
729N/A#demo .output {margin-bottom:1em; padding:10px; border:1px solid #D9D9D9;}
3852N/A</style>
729N/A
3852N/A<form id="demo">
729N/A <h4>Basic example</h4>
729N/A <h6>Data</h6>
5923N/A <pre>
729N/A{
729N/A "total":10,
729N/A "results":[
729N/A {"n":1, "fname":"George", "lname":"Washington"},
729N/A {"n":2, "fname":"John", "lname":"Adams"},
729N/A {"n":3, "fname":"Thomas", "lname":"Jefferson"},
729N/A {"n":4, "fname":"James", "lname":"Madison"},
729N/A {"n":5, "fname":"James", "lname":"Monroe"},
729N/A {"n":6, "fname":"John", "mname":"Quincy", "lname":"Adams"},
729N/A {"n":7, "fname":"Andrew", "lname":"Jackson"},
729N/A {"n":8, "fname":"Martin", "lname":"Van Buren"},
729N/A {"n":9, "fname":"William", "mname":"Henry", "lname":"Harrison"},
729N/A {"n":10, "fname":"John", "lname":"Tyler"}
729N/A ]
729N/A}
729N/A </pre>
729N/A
729N/A <h6>Schema</h6>
729N/A <pre>
729N/A{
729N/A metaFields: {total:"total"},
729N/A resultListLocator: "results",
729N/A resultFields: [{key:"n"}, {key:"fname"}, {key:"lname"}]
729N/A}
729N/A </pre>
729N/A
729N/A <h6>Normalized data</h6>
729N/A <input type="button" id="demo_apply_basic" value="Apply schema =>">
729N/A <div id="demo_output_basic" class="output"></div>
729N/A
729N/A <h4>Complex example</h4>
729N/A <h6>Data</h6>
729N/A <pre>
729N/A{
729N/A "profile":{
729N/A "current":160,
729N/A "target":150
729N/A },
"reference": [
{
"category":"exercise",
"type":"expenditure",
"activities":[
{"name":"biking", "calories":550},
{"name":"golf", "calories":1000},
{"name":"running", "calories":650},
{"name":"swimming", "calories":650},
{"name":"walking", "calories":225}
]
},
{
"category":"nutrition",
"type":"intake",
"fruit":[
{"name":"apple", "calories":70},
{"name":"banana", "calories":70},
{"name":"orange", "calories":90},
],
"vegetables":[
{"name":"baked potato", "calories":150},
{"name":"broccoli", "calories":50},
{"name":"green beans", "calories":30}
]
}
],
"program": [
{
"category":"exercise",
"schedule":[
{"day":"sunday", "activity":"swimming"},
{"day":"monday", "activity":"running"},
{"day":"tuesday", "activity":"biking"},
{"day":"wednesday", "activity":"running"},
{"day":"thursday", "activity":"swimming"},
{"day":"friday", "activity":"running"},
{"day":"saturday", "activity":"golf"}
]
},
{
"category":"diet",
"schedule":[
]
}
]
}
</pre>
<h6>Schema</h6>
<pre>
{
metaFields: {current:"profile.current", target:"profile.target",
reference:"reference[0].activities"},
resultListLocator: "program[0].schedule",
resultFields: [{key:"day"}, {key:"activity"}]
}
</pre>
<h6>Normalized data</h6>
<input type="button" id="demo_apply_complex" value="Apply schema =>">
<div id="demo_output_complex" class="output"></div>
</form>
<script type="text/javascript">
YUI().use("dump", "node", "dataschema-json", function (Y) {
Y.on("click", function(e){
var data_in = {
"total":10,
"results":[
{"n":1, "fname":"George", "lname":"Washington"},
{"n":2, "fname":"John", "lname":"Adams"},
{"n":3, "fname":"Thomas", "lname":"Jefferson"},
{"n":4, "fname":"James", "lname":"Madison"},
{"n":5, "fname":"James", "lname":"Monroe"},
{"n":6, "fname":"John", "mname":"Quincy", "lname":"Adams"},
{"n":7, "fname":"Andrew", "lname":"Jackson"},
{"n":8, "fname":"Martin", "lname":"Van Buren"},
{"n":9, "fname":"William", "mname":"Henry", "lname":"Harrison"},
{"n":10, "fname":"John", "lname":"Tyler"}
]
},
schema = {
metaFields: {total:"total"},
resultListLocator: "results",
resultFields: [{key:"n"}, {key:"fname"}, {key:"lname"}] // Or simply: ["n", "fname", "lname"]
};
Y.one("#demo_output_basic").setContent(Y.dump(Y.DataSchema.JSON.apply(schema, data_in)));
}, "#demo_apply_basic");
Y.on("click", function(e){
var data_in = {
"profile":{
"current":160,
"target":150
},
"reference": [
{
"category":"exercise",
"type":"expenditure",
"activities":[
{"name":"biking", "calories":550},
{"name":"golf", "calories":1000},
{"name":"running", "calories":650},
{"name":"swimming", "calories":650},
{"name":"walking", "calories":225}
]
},
{
"category":"nutrition",
"type":"intake",
"fruit":[
{"name":"apple", "calories":70},
{"name":"banana", "calories":70},
{"name":"orange", "calories":90},
],
"vegetables":[
{"name":"baked potato", "calories":150},
{"name":"broccoli", "calories":50},
{"name":"green beans", "calories":30}
]
}
],
"program": [
{
"category":"exercise",
"weekly schedule":[
{"day":"sunday", "activity":"swimming"},
{"day":"monday", "activity":"running"},
{"day":"tuesday", "activity":"biking"},
{"day":"wednesday", "activity":"running"},
{"day":"thursday", "activity":"swimming"},
{"day":"friday", "activity":"running"},
{"day":"saturday", "activity":"golf"}
]
},
{
"category":"diet",
"schedule":[
]
}
]
},
schema = {
metaFields: {current:"profile.current", target:"profile.target", reference:"reference[0].activities"},
resultListLocator: "program[0]['weekly schedule']",
resultFields: [{key:"day"}, {key:"activity"}] // Or simply: ["day", "activity"]
};
Y.one("#demo_output_complex").setContent(Y.dump(Y.DataSchema.JSON.apply(schema, data_in)));
}, "#demo_apply_complex");
});
</script>