Mercurial > hg > webaudioevaluationtool
changeset 2287:0141cbd1169b
Analysis get raw data uses filtered not global request. get_filtered_score.php returns XML, JSON and CSV
author | Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk> |
---|---|
date | Fri, 22 Apr 2016 11:38:41 +0100 |
parents | e59327ebdb15 |
children | 878ef0a69d5d 505290c327cb 138f002fb8f5 |
files | analysis/analysis.js php/get_filtered_score.php |
diffstat | 2 files changed, 144 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/analysis/analysis.js Fri Apr 22 10:15:12 2016 +0100 +++ b/analysis/analysis.js Fri Apr 22 11:38:41 2016 +0100 @@ -625,6 +625,66 @@ this.getDataButton.button.textContent = "Get Filtered Data"; this.getDataButton.button.addEventListener("click",this.getDataButton); + this.getRawScoreData = { + root: document.createElement("div"), + csvDOM: document.createElement("button"), + jsonDOM: document.createElement("button"), + xmlDOM: document.createElement("button"), + presentDOM: document.createElement("div"), + parent: this, + XHR: new XMLHttpRequest(), + handleEvent: function(event) { + this.presentDOM.innerHTML = null; + var url = "../php/get_filtered_score.php"+this.parent.getFilterString(); + this.XHR.open("GET",url+"&format="+event.currentTarget.textContent,true); + switch(event.currentTarget.textContent) { + case "CSV": + this.XHR.onload = function() { + var file = [this.response]; + var bb = new Blob(file,{type: 'text/csv'}); + this.parent.presentDOM.appendChild( this.parent.generateLink(bb,"scores.csv") ); + } + break; + case "JSON": + this.XHR.onload = function() { + var file = [this.response]; + var bb = new Blob(file,{type: 'application/json'}); + this.parent.presentDOM.appendChild( this.parent.generateLink(bb,"scores.json") ); + } + break; + case "XML": + this.XHR.onload = function() { + var file = [this.response]; + var bb = new Blob(file,{type: 'text/xml'}); + this.parent.presentDOM.appendChild( this.parent.generateLink(bb,"scores.xml") ); + } + break; + } + this.XHR.send(); + }, + generateLink: function(blob,filename) { + var dnlk = window.URL.createObjectURL(blob); + var a = document.createElement("a"); + a.hidden = ''; + a.href = dnlk; + a.download = filename; + a.textContent = "Save File"; + return a; + } + } + + this.getRawScoreData.root.appendChild(this.getRawScoreData.csvDOM); + this.getRawScoreData.root.appendChild(this.getRawScoreData.jsonDOM); + this.getRawScoreData.root.appendChild(this.getRawScoreData.xmlDOM); + this.getRawScoreData.root.appendChild(this.getRawScoreData.presentDOM); + this.getRawScoreData.XHR.parent = this.getRawScoreData; + this.getRawScoreData.csvDOM.textContent = 'CSV'; + this.getRawScoreData.csvDOM.addEventListener('click',this.getRawScoreData); + this.getRawScoreData.jsonDOM.textContent = 'JSON'; + this.getRawScoreData.jsonDOM.addEventListener('click',this.getRawScoreData); + this.getRawScoreData.xmlDOM.textContent = 'XML'; + this.getRawScoreData.xmlDOM.addEventListener('click',this.getRawScoreData); + this.testSaves = { json: null, selectedURL: null, @@ -796,6 +856,7 @@ } document.getElementById("test-saved").appendChild(this.filterDOM); document.getElementById("test-saved").appendChild(this.getDataButton.button); + document.getElementById("test-saved").appendChild(this.getRawScoreData.root); } this.getFilterString = function() { var pairs = [];
--- a/php/get_filtered_score.php Fri Apr 22 10:15:12 2016 +0100 +++ b/php/get_filtered_score.php Fri Apr 22 11:38:41 2016 +0100 @@ -42,7 +42,13 @@ } } - +$requestFormat = 'JSON'; +if (isset($_GET["format"])) { + $requestFormat = $_GET["format"]; + if ($requestFormat != "CSV" && $requestFormat != "JSON" && $requestFormat != "XML") { + return "Invalid format parameter in get request. Must be CSV, JSON or XML"; + } +} $request = "http://".$_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; $request = explode("get_filtered_score.php",$request); $request = implode("get_filtered_count.php",$request); @@ -103,44 +109,87 @@ } } } -$doc_root = '{ "pages": ['; -for ($pageIndex = 0; $pageIndex < $root->num; $pageIndex++) -{ - $page = $root->nest[$pageIndex]; - $doc_page = '{ "id": "'.$page->id.'", "elements": ['; - for($elementIndex = 0; $elementIndex < $page->num; $elementIndex++) - { - $element = $page->nest[$elementIndex]; - $doc_element = '{ "id": "'.$element->id.'", "axis": ['; - for($axisIndex = 0; $axisIndex < $element->num; $axisIndex++) +switch($requestFormat) { + case "JSON": + $doc_root = '{ "pages": ['; + for ($pageIndex = 0; $pageIndex < $root->num; $pageIndex++) { - $axis = $element->nest[$axisIndex]; - $doc_axis = '{ "name": "'.$axis->id.'", "values": ['; - for ($valueIndex = 0; $valueIndex < $axis->num; $valueIndex++) + $page = $root->nest[$pageIndex]; + $doc_page = '{ "id": "'.$page->id.'", "elements": ['; + for($elementIndex = 0; $elementIndex < $page->num; $elementIndex++) { - $doc_axis = $doc_axis."".strval($axis->nest[$valueIndex]); - if ($valueIndex < $axis->num-1) { - $doc_axis = $doc_axis.', '; + $element = $page->nest[$elementIndex]; + $doc_element = '{ "id": "'.$element->id.'", "axis": ['; + for($axisIndex = 0; $axisIndex < $element->num; $axisIndex++) + { + $axis = $element->nest[$axisIndex]; + $doc_axis = '{ "name": "'.$axis->id.'", "values": ['; + for ($valueIndex = 0; $valueIndex < $axis->num; $valueIndex++) + { + $doc_axis = $doc_axis."".strval($axis->nest[$valueIndex]); + if ($valueIndex < $axis->num-1) { + $doc_axis = $doc_axis.', '; + } + } + $doc_axis = $doc_axis.']}'; + if ($axisIndex < $element->num-1) { + $doc_axis = $doc_axis.', '; + } + $doc_element = $doc_element.$doc_axis; + } + $doc_element = $doc_element.']}'; + if ($elementIndex < $page->num-1) { + $doc_element = $doc_element.', '; + } + $doc_page = $doc_page.$doc_element; + } + $doc_page = $doc_page.']}'; + if ($pageIndex < $root->num-1) { + $doc_page = $doc_page.', '; + } + $doc_root = $doc_root.$doc_page; + } + $doc_root = $doc_root.']}'; + echo $doc_root; + break; + case "XML": + $xml_root = new SimpleXMLElement('<waetprocess/>'); + for ($pageIndex=0; $pageIndex < $root->num; $pageIndex++) { + $page = $root->nest[$pageIndex]; + $xml_page = $xml_root->addChild("page"); + $xml_page->addAttribute("id",$page->id); + for($elementIndex = 0; $elementIndex < $page->num; $elementIndex++) + { + $element = $page->nest[$elementIndex]; + $xml_element = $xml_page->addChild("audioelement"); + $xml_element->addAttribute("id", $element->id); + for($axisIndex = 0; $axisIndex < $element->num; $axisIndex++) + { + $axis = $element->nest[$axisIndex]; + $xml_axis = $xml_element->addChild("axis"); + $xml_axis->addAttribute("name",$axis->id); + for ($valueIndex = 0; $valueIndex < $axis->num; $valueIndex++) + { + $xml_value = $xml_axis->addChild("value",strval($axis->nest[$valueIndex])); + } } } - $doc_axis = $doc_axis.']}'; - if ($axisIndex < $element->num-1) { - $doc_axis = $doc_axis.', '; + } + echo $xml_root->asXML(); + break; + case "CSV": + $doc_string = "page,element,axis,value"."\r\n"; + foreach($root->nest as $page){ + foreach($page->nest as $element) { + foreach($element->nest as $axis) { + foreach($axis->nest as $value) { + $doc_string = $doc_string.$page->id.','; + $doc_string = $doc_string.$element->id.','; + $doc_string = $doc_string.$axis->id.','; + $doc_string = $doc_string.$value."\r\n"; + } + } } - $doc_element = $doc_element.$doc_axis; } - $doc_element = $doc_element.']}'; - if ($elementIndex < $page->num-1) { - $doc_element = $doc_element.', '; - } - $doc_page = $doc_page.$doc_element; - } - $doc_page = $doc_page.']}'; - if ($pageIndex < $root->num-1) { - $doc_page = $doc_page.', '; - } - $doc_root = $doc_root.$doc_page; } -$doc_root = $doc_root.']}'; -echo $doc_root; ?> \ No newline at end of file