In Domino 8 it became possible to return a view in JSON format using &outputformat=JSON querystring parameter.
Here’s a simple view in Notes:
Here is what the JSON looks like:
{
“@timestamp”: “20090303T123231,91Z”,
“@toplevelentries”: “3″,
“viewentry”: [
{
"@position": "1",
"@noteid": "8000000C",
"@children": "4",
"@descendants": "4",
"@siblings": "3",
"entrydata": [
{
"@columnnumber": "0",
"@name": "Index",
"@category": "true",
"text": {
"0": "Option A"
}
}
]
},
{
“@position”: “1.1″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A1"
}
]
}
}
]
},
{
“@position”: “1.2″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A2"
}
]
}
}
]
},
{
“@position”: “1.3″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A3"
}
]
}
}
]
},
{
“@position”: “1.4″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A4"
}
]
}
}
]
},
{
“@position”: “2″,
“@noteid”: “80000010″,
“@children”: “4″,
“@descendants”: “4″,
“@siblings”: “3″,
“entrydata”: [
{
"@columnnumber": "0",
"@name": "Index",
"@category": "true",
"text": {
"0": "Option B"
}
}
]
},
{
“@position”: “2.1″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B1"
}
]
}
}
]
},
{
“@position”: “2.2″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B2"
}
]
}
}
]
},
{
“@position”: “2.3″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B3"
}
]
}
}
]
},
{
“@position”: “2.4″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B4"
}
]
}
}
]
},
{
“@position”: “3″,
“@noteid”: “80000014″,
“@children”: “1″,
“@descendants”: “1″,
“@siblings”: “3″,
“entrydata”: [
{
"@columnnumber": "0",
"@name": "Index",
"@category": "true",
"text": {
"0": "Option C"
}
}
]
},
{
“@position”: “3.1″,
“@unid”: “B6C86E0C587E08CB802575620031CA0F”,
“@noteid”: “8FE”,
“@siblings”: “1″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"text": {
"0": "Choice C1"
}
}
]
}
]
}
Using jQuery and its incumbent JSON AJAX methods we can return data from the view and process it.
Below is a simple form which has 2 select option drop downs on it:
When the User chooses an Option from the ‘Option’ drop down, a set of choices specific to the selected option need to be offered in the ‘Choice’ field.
Here is the code from the JSHeader
Here’s a simple view in Notes:
Here is what the JSON looks like:
“@timestamp”: “20090303T123231,91Z”,
“@toplevelentries”: “3″,
“viewentry”: [
{
"@position": "1",
"@noteid": "8000000C",
"@children": "4",
"@descendants": "4",
"@siblings": "3",
"entrydata": [
{
"@columnnumber": "0",
"@name": "Index",
"@category": "true",
"text": {
"0": "Option A"
}
}
]
},
{
“@position”: “1.1″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A1"
}
]
}
}
]
},
{
“@position”: “1.2″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A2"
}
]
}
}
]
},
{
“@position”: “1.3″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A3"
}
]
}
}
]
},
{
“@position”: “1.4″,
“@unid”: “84FE562575501BE88025755F0031E1B1″,
“@noteid”: “8F6″,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice A4"
}
]
}
}
]
},
{
“@position”: “2″,
“@noteid”: “80000010″,
“@children”: “4″,
“@descendants”: “4″,
“@siblings”: “3″,
“entrydata”: [
{
"@columnnumber": "0",
"@name": "Index",
"@category": "true",
"text": {
"0": "Option B"
}
}
]
},
{
“@position”: “2.1″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B1"
}
]
}
}
]
},
{
“@position”: “2.2″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B2"
}
]
}
}
]
},
{
“@position”: “2.3″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B3"
}
]
}
}
]
},
{
“@position”: “2.4″,
“@unid”: “866C6FA4AEA492158025755F00328A60″,
“@noteid”: “8FA”,
“@siblings”: “4″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"textlist": {
"text": [
{
"0": "Choice B4"
}
]
}
}
]
},
{
“@position”: “3″,
“@noteid”: “80000014″,
“@children”: “1″,
“@descendants”: “1″,
“@siblings”: “3″,
“entrydata”: [
{
"@columnnumber": "0",
"@name": "Index",
"@category": "true",
"text": {
"0": "Option C"
}
}
]
},
{
“@position”: “3.1″,
“@unid”: “B6C86E0C587E08CB802575620031CA0F”,
“@noteid”: “8FE”,
“@siblings”: “1″,
“entrydata”: [
{
"@columnnumber": "1",
"@name": "Choice",
"text": {
"0": "Choice C1"
}
}
]
}
]
}
Using jQuery and its incumbent JSON AJAX methods we can return data from the view and process it.
Below is a simple form which has 2 select option drop downs on it:
When the User chooses an Option from the ‘Option’ drop down, a set of choices specific to the selected option need to be offered in the ‘Choice’ field.
Here is the code from the JSHeader
function Option_changed()
{
//URL to the view with the restricttocategory set to the selected choice
var url = dbpath + ‘/keywords?readviewentries&outputformat=json&restricttocategory=’ + $(‘#Option option:selected’).text()
//Select object
select = $(‘#Choice’)
//Default option
options = ‘’
//jQuery AJAX call to return JSON
$.getJSON(url,function(data) {
//Check if we have any rows
if(data.viewentry){
//Loop through the rows
$.each(data.viewentry, function(i, item){
$.each(item.entrydata, function(i, item){
//If the column contains multi-value
if(item.textlist){
//Loop through the multi-value column data
$.each(item.textlist, function(i, item){
//Loop through the text values
$.each(item, function(i, item){
options += ‘’
})
})
} else {
//No multi-value so just grab the text
$.each(item.text, function(i, item){
options += ‘’
})
}
})
})
//Loop through the columns
select.html(options)
}
})
//
$(‘#Choice’).html(options)
}


0 comments:
Post a Comment