Changeset 1997
- Timestamp:
- Sep 5, 2011, 5:46:32 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/controllers/dbnp/visualization/VisualizeController.groovy
r1993 r1997 24 24 def authenticationService 25 25 def moduleCommunicationService 26 def infoMessage = "" 26 27 27 28 /** … … 34 35 def getStudies = { 35 36 def studies = Study.giveReadableStudies( authenticationService.getLoggedInUser() ); 36 render studies as JSON 37 returnResults(studies) 37 38 } 38 39 … … 42 43 43 44 try{ 45 // TODO: fix this 44 46 input_object = JSON.parse(params.get('data')) 45 47 studies = input_object.get('studies').id … … 95 97 } 96 98 97 re nder fields as JSON99 returnResults(fields) 98 100 } 99 101 100 102 def getVisualizationTypes = { 103 def inputData = parseGetDataParams(); 104 println "inputData: "+inputData 105 106 107 // TODO: handle the case of multiple fields on an axis 108 println "Checking type of row data" 109 def rowType = determineFieldType(inputData.studyIds[0], inputData.rowIds[0]) 110 println "Checking type of column data" 111 def columnType = determineFieldType(inputData.studyIds[0], inputData.columnIds[0]) 112 113 println "getVisualizationTypes: row contains data of type "+rowType+" and column contains data of type "+columnType 114 101 115 def types = [ [ "id": "barchart", "name": "Barchart"] ]; 102 re nder types as JSON116 returnResults(types) 103 117 } 104 118 … … 273 287 def returnData = formatData( groupedData, fields ); 274 288 275 re nder returnData as JSON289 returnResults(returnData) 276 290 } 277 291 … … 410 424 if( index > -1 ) { 411 425 data << measurements[ index ]; 412 } else { [ "x": inputData.columnIds[ 0 ], "y": inputData.rowIds[ 0 ] ]426 } else { 413 427 data << null 414 428 } … … 723 737 } 724 738 739 protected String determineFieldType(studyId, fieldId){ 740 // Parse the fieldId as given by the user 741 def parsedField = parseFieldId( fieldId ); 742 743 def study = Study.get(studyId) 744 println "study: "+study+", parsedField: "+parsedField 745 746 def data = [] 747 748 if( parsedField.source == "GSCF" ) { 749 if(parsedField.id.isNumber()){ 750 // Templatefield 751 // ask for tf by id, ask for .type 752 println "GSCF, dunno yet" 753 } else { 754 // Domainfield or memberclass 755 switch( parsedField.type ) { 756 case "Study": 757 case "studies": 758 def cat = determineCategoryFromClass(Study[parsedField.name].class) 759 println "parsedField.type: "+parsedField.type+", outcome: "+cat 760 return cat 761 break 762 case "Subject": 763 case "subjects": 764 def cat = determineCategoryFromClass(Subject[parsedField.name].class) 765 println "parsedField.type: "+parsedField.type+", outcome: "+cat 766 return cat 767 break 768 case "Sample": 769 case "samples": 770 def cat = determineCategoryFromClass(Sample[parsedField.name].class) 771 println "parsedField.type: "+parsedField.type+", outcome: "+cat 772 return cat 773 break 774 case "Event": 775 case "events": 776 def cat = determineCategoryFromClass(Event[parsedField.name].class) 777 println "parsedField.type: "+parsedField.type+", outcome: "+cat 778 return cat 779 break 780 case "SamplingEvent": 781 case "samplingEvents": 782 def cat = determineCategoryFromClass(SamplingEvent[parsedField.name].class) 783 println "parsedField.type: "+parsedField.type+", outcome: "+cat 784 return cat 785 break 786 case "Assay": 787 case "assays": 788 def cat = determineCategoryFromClass(Assay[parsedField.name].class) 789 println "parsedField.type: "+parsedField.type+", outcome: "+cat 790 return cat 791 break 792 } 793 } 794 795 // Check parsedField.id == number 796 } else { 797 data = getModuleData( study, study.getSamples(), parsedField.source, parsedField.name ); 798 def cat = determineCategoryFromData(data) 799 return cat 800 } 801 } 802 803 protected String determineCategoryFromClass(inputObject){ 804 println "determineCategoryFromClass: "+inputObject+", class: "+inputObject.class 805 if(inputObject==java.lang.String){ 806 return "cat" 807 // TODO: make this a final 808 } else { 809 return "num" 810 // TODO: make this a final 811 } 812 } 813 814 protected String determineCategoryFromData(inputObject){ 815 def results = [] 816 if(inputObject instanceof Collection){ 817 // More complex datatype, call outselves again 818 inputObject.each { 819 results << determineCategoryFromData(it) 820 } 821 } else { 822 if(inputObject.toString().isDouble()){ 823 results << "num" 824 // TODO: make this a final 825 } else { 826 results << "cat" 827 // TODO: make this a final 828 } 829 } 830 831 results.unique() 832 833 if(results.size()>1){ 834 //log.error("VisualizeController: determineCategoryFromData: Category list contains more than one category! List: "+results+", inputObject: "+inputObject) 835 results[0] = "cat" 836 // TODO: make this a final 837 } 838 839 return results[0] 840 } 841 842 protected void returnResults(returnData){ 843 def results = [:] 844 if(infoMessage!=""){ 845 results.put("infoMessage", returnData) 846 } 847 results.put("returnData", returnData) 848 render results as JSON 849 } 725 850 }
Note: See TracChangeset
for help on using the changeset viewer.