Project

General

Profile

« Previous | Next » 

Revision 5633

use jQuery to build active domain selections

View differences:

lib/style/skins/semtools/search.js
36 36
					"</condition>";
37 37
        	    }
38 38
        	}
39
        	// handle specific classes
40
        	// Entity
41
        	//for (var i=0; i < submitFormObj.activeEntities.length; i++) {
42
        		var searchClass = submitFormObj.activeEntitiesClass.value;
43
        	    var searchValue = submitFormObj.activeEntities.value;
44
        	    if (searchValue!="") {
45
	        	    submitFormObj.query.value += 
46
	        	    	"<condition " +
47
		        		"concept='" + searchClass + "' " +
48
						"operator='EQUALS'>" +
49
						searchValue +
50
					"</condition>";
51
        	    }
52
        	//}
53
        	// Characteristic
54
        	//for (var i=0; i < submitFormObj.activeCharacteristics.length; i++) {
55
        		var searchClass = submitFormObj.activeCharacteristicsClass.value;
56
        	    var searchValue = submitFormObj.activeCharacteristics.value;
57
        	    if (searchValue!="") {
58
	        	    submitFormObj.query.value += 
59
	        	    	"<condition " +
60
		        		"concept='" + searchClass + "' " +
61
						"operator='EQUALS'>" +
62
						searchValue +
63
					"</condition>";
64
        	    }
65
        	//}
66
        	// Protocol
67
        	//for (var i=0; i < submitFormObj.activeProtocols.length; i++) {
68
        		var searchClass = submitFormObj.activeProtocolsClass.value;
69
        	    var searchValue = submitFormObj.activeProtocols.value;
70
        	    if (searchValue!="") {
71
	        	    submitFormObj.query.value += 
72
	        	    	"<condition " +
73
		        		"concept='" + searchClass + "' " +
74
						"operator='EQUALS'>" +
75
						searchValue +
76
					"</condition>";
77
        	    }
78
        	//}
79
        	// Measurement
80
        	//for (var i=0; i < submitFormObj.activeMeasurements.length; i++) {
81
        		var searchClass = submitFormObj.activeMeasurementsClass.value;
82
        	    var searchValue = submitFormObj.activeMeasurements.value;
83
        	    if (searchValue!="") {
84
	        	    submitFormObj.query.value += 
85
	        	    	"<condition " +
86
		        		"concept='" + searchClass + "' " +
87
						"operator='EQUALS'>" +
88
						searchValue +
89
					"</condition>";
90
        	    }
91
        	//}
92
        	
39 93
        	submitFormObj.query.value += "</" + operator + ">";
40 94
    	submitFormObj.query.value += "</sq:query>";
41 95
		
42
    //alert("query: " + submitFormObj.query.value);
96
    alert("query: " + submitFormObj.query.value);
43 97

  
44 98
    return true;
45 99
}
lib/style/skins/semtools/index.jsp
1 1
<%@ page language="java"%>
2
<%@page import="java.util.List"%>
3
<%@page import="java.util.ArrayList"%>
4
<%@page import="org.ecoinformatics.sms.SMS"%>
5
<%@page import="org.ecoinformatics.sms.ontology.OntologyClass"%>
6

  
7 2
<%
8 3
/**
9 4
 * 
......
29 24
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
30 25
 */  
31 26
%>
32
<%
33 27

  
34
	//harvest parameters
35
	String[] entityParam = request.getParameterValues("entity");
36
	String[] characteristicParam = request.getParameterValues("characteristic");
37
	String[] standardParam = request.getParameterValues("standard");
38
	String[] protocolParam = request.getParameterValues("protocol");
39
	String[] measurementParam = request.getParameterValues("measurement");
40
	
41
	List<OntologyClass> activeEntities = new ArrayList<OntologyClass>();
42
	List<OntologyClass> activeCharacteristics = new ArrayList<OntologyClass>();
43
	List<OntologyClass> activeStandards = new ArrayList<OntologyClass>();
44
	List<OntologyClass> activeProtocols = new ArrayList<OntologyClass>();
45
	List<OntologyClass> activeMeasurements = new ArrayList<OntologyClass>();
46
	
47
	// Entity
48
	if (entityParam != null) {
49
		for (String entityString: entityParam) {
50
			OntologyClass e = new OntologyClass(entityString);
51
			activeEntities.add(e);
52
		}
53
	}
54
	// Characteristic
55
	if (characteristicParam != null) {
56
		for (String classString: characteristicParam) {
57
			OntologyClass c = new OntologyClass(classString);
58
			activeCharacteristics.add(c);
59
		}
60
	}
61
	// Standard
62
	if (standardParam != null) {
63
		for (String classString: standardParam) {
64
			OntologyClass c = new OntologyClass(classString);
65
			activeStandards.add(c);
66
		}
67
	}
68
	// Protocol
69
	if (protocolParam != null) {
70
		for (String classString: protocolParam) {
71
			OntologyClass c = new OntologyClass(classString);
72
			activeProtocols.add(c);
73
		}
74
	}
75
	// Measurement
76
	// TODO: implement measurement expansion
77
	
78
	// construct the selection fields for existing annotations
79
	// Entity
80
	StringBuffer entityOptions = new StringBuffer();
81
	List<OntologyClass> entities = SMS.getInstance().getAnnotationManager().getActiveEntities(activeCharacteristics, activeStandards);
82
	for (OntologyClass oc: entities) {
83
		entityOptions.append("<option ");
84
		entityOptions.append("title='");
85
		entityOptions.append(oc.getURI());
86
		entityOptions.append("' ");
87
		entityOptions.append("value='");
88
		entityOptions.append(oc.getURI());
89
		entityOptions.append("'");
90
		entityOptions.append(">");
91
		entityOptions.append(oc.getName());
92
		entityOptions.append("</option>");
93
	}
94
	// Characteristic
95
	StringBuffer characteristicOptions = new StringBuffer();
96
	List<OntologyClass> characteristics = SMS.getInstance().getAnnotationManager().getActiveCharacteristics(activeEntities, activeStandards);
97
	for (OntologyClass oc: characteristics) {
98
		characteristicOptions.append("<option ");
99
		characteristicOptions.append("title='");
100
		characteristicOptions.append(oc.getURI());
101
		characteristicOptions.append("' ");
102
		characteristicOptions.append("value='");
103
		characteristicOptions.append(oc.getURI());
104
		characteristicOptions.append("'");
105
		characteristicOptions.append(">");
106
		characteristicOptions.append(oc.getName());
107
		characteristicOptions.append("</option>");
108
	}
109
	// Standard
110
	StringBuffer standardOptions = new StringBuffer();
111
	List<OntologyClass> standards = SMS.getInstance().getAnnotationManager().getActiveStandards(activeEntities, activeCharacteristics);
112
	for (OntologyClass oc: standards) {
113
		standardOptions.append("<option ");
114
		standardOptions.append("title='");
115
		standardOptions.append(oc.getURI());
116
		standardOptions.append("' ");
117
		standardOptions.append("value='");
118
		standardOptions.append(oc.getURI());
119
		standardOptions.append("'");
120
		standardOptions.append(">");
121
		standardOptions.append(oc.getName());
122
		standardOptions.append("</option>");
123
	}
124
	// Protocol TODO: filtering
125
	StringBuffer protocolOptions = new StringBuffer();
126
	List<OntologyClass> protocols = SMS.getInstance().getAnnotationManager().getActiveProtocols();
127
	for (OntologyClass oc: protocols) {
128
		protocolOptions.append("<option ");
129
		protocolOptions.append("title='");
130
		protocolOptions.append(oc.getURI());
131
		protocolOptions.append("' ");
132
		protocolOptions.append("value='");
133
		protocolOptions.append(oc.getURI());
134
		protocolOptions.append("'");
135
		protocolOptions.append(">");
136
		protocolOptions.append(oc.getName());
137
		protocolOptions.append("</option>");
138
	}
139
	// Measurement TODO: filtering
140
	StringBuffer measurementOptions = new StringBuffer();
141
	List<OntologyClass> measurements = SMS.getInstance().getAnnotationManager().getActiveMeasurements();
142
	for (OntologyClass oc: measurements) {
143
		measurementOptions.append("<option ");
144
		measurementOptions.append("title='");
145
		measurementOptions.append(oc.getURI());
146
		measurementOptions.append("' ");
147
		measurementOptions.append("value='");
148
		measurementOptions.append(oc.getURI());
149
		measurementOptions.append("'");
150
		measurementOptions.append(">");
151
		measurementOptions.append(oc.getName());
152
		measurementOptions.append("</option>");
153
	}
154
%>
155

  
156 28
<%@ include file="../../common/common-settings.jsp"%>
157 29
<%@ include file="../../common/configure-check.jsp"%>
158 30

  
......
176 48
<script language="javascript" type="text/javascript" src="<%=STYLE_SKINS_URL%>/semtools/semtools.js"></script>
177 49
<script language="javascript" type="text/javascript" src="<%=STYLE_COMMON_URL%>/branding.js"></script>
178 50

  
51
<script language="Javascript" type="text/JavaScript">
52
function populateActiveDomain(divId, class) {
53
	var entity = $("#activeEntities").val() ? $("#activeEntities").val() : "";
54
	var characteristic = $("#activeCharacteristics").val() ? $("#activeCharacteristics").val() : "";
55
	var protocol = $("#activeProtocols").val() ? $("#activeProtocols").val() : "";
56
	var measurement = $("#activeMeasurements").val() ? $("#activeMeasurements").val() : "";
57
	
58
	var originalValue = $("#" + divId).val();
59
	$("#" + divId).load(
60
	"http://fred.msi.ucsb.edu:8080/knb/metacat", 
61
	{
62
		'action': "getactivedomain",
63
		'class': class,
64
		'entity': entity,
65
		'characteristic': characteristic,
66
		'protocol': protocol,
67
		'measurement': measurement
68
	}, 
69
	function(response, status, xhr) {
70
	  if (status == "error") {
71
	    var msg = "Sorry but there was an error: ";
72
	    $("#error").html(msg + xhr.status + " " + xhr.statusText);
73
	  }
74
	  // set the original selected value
75
	  $("#" + divId).val(originalValue);
76
	});
77
}
78
function initialize(source) {
79
	if (source) {
80
		source = source.id;
81
	}
82
	if (!source) {
83
		source = "";
84
	}
85
	if (source != 'activeEntities') {
86
		populateActiveDomain('activeEntities', 'org.ecoinformatics.sms.annotation.Entity');
87
	}
88
	if (source != 'activeCharacteristics') {
89
		var v = $('#activeCharacteristics').val();
90
		populateActiveDomain('activeCharacteristics', 'org.ecoinformatics.sms.annotation.Characteristic');
91
		$('#activeCharacteristics').val(v);
92
	}
93
	if (source != 'activeProtocols') {
94
		var v = $('#activeProtocols').val();
95
		populateActiveDomain('activeProtocols', 'org.ecoinformatics.sms.annotation.Protocol');
96
		$('#activeProtocols').val(v);
97
	}
98
	if (source != 'activeMeasurements') {
99
		var v = $('#activeMeasurements').val();
100
		populateActiveDomain('activeMeasurements', 'org.ecoinformatics.sms.annotation.Measurement');
101
		$('#activeMeasurements').val(v);
102
	}
103
}
104
</script>
105

  
179 106
</head>
180
<body>
107
<body onload="initialize()">
181 108
<script language="javascript">
182 109
	insertTemplateOpening("<%=CONTEXT_URL%>");
183 110
</script>
......
186 113

  
187 114
<h2>Annotation-based search</h2>
188 115

  
116
<div id="error">
117
	<!-- error messages here -->
118
</div>
119

  
189 120
<form method="POST" action="<%=SERVLET_URL%>" target="_top" id="searchForm" name="searchForm" onSubmit="return checkSearch(this)">
190 121
	<input name="query" type="hidden" />
191 122
	<input name="qformat" value="semtools" type="hidden" />
......
218 149
					</tr>
219 150
					<tr>
220 151
						<td>
221
							<select name="dynamicValue" id="dynamicValue" multiple="multiple" size="5" style="width: 100%">
222
								<%=measurementOptions %>
152
							<select name="activeMeasurements" id="activeMeasurements" multiple="multiple" size="5" style="width: 100%" onchange="initialize(this)">
153
								<option>loading...</option>
223 154
							</select>
224
							<input type="hidden" name="dynamicClass" id="dynamicClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Measurement"/>
155
							<input type="hidden" name="activeMeasurementsClass" id="activeMeasurementsClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Measurement"/>
225 156
						</td>
226 157
					</tr>
227 158
					<tr>
......
247 178
					<tr>
248 179
						<td>
249 180
							(a)
250
							<select name="dynamicValue" id="dynamicValue" multiple="multiple" size="5" style="width: 216px">
251
								<%=entityOptions %>
181
							<select name="activeEntities" id="activeEntities" multiple="multiple" size="5" style="width: 216px" onchange="initialize(this)">
182
								<option>loading...</option>
252 183
							</select>
253
							<input type="hidden" name="dynamicClass" id="dynamicClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Entity"/>
184
							<input type="hidden" name="activeEntitiesClass" id="activeEntitiesClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Entity"/>
254 185
						</td>
255 186
					</tr>
256 187
					<tr>
......
274 205
					</tr>
275 206
					<tr>
276 207
						<td>
277
							<select name="dynamicValue" id="dynamicValue" multiple="multiple" size="5" style="width: 216px">
278
								<%=characteristicOptions %>
208
							<select name="activeCharacteristics" id="activeCharacteristics" multiple="multiple" size="5" style="width: 216px" onchange="initialize(this)">
209
								<option>loading...</option>
279 210
							</select>
280
							<input type="hidden" name="dynamicClass" id="dynamicClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Characteristic"/>
211
							<input type="hidden" name="activeCharacteristicsClass" id="activeCharacteristicsClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Characteristic"/>
281 212
						</td>
282 213
					</tr>
283 214
					<tr>
......
301 232
					</tr>
302 233
					<tr>
303 234
						<td>
304
							<select name="dynamicValue" id="dynamicValue" multiple="multiple" size="5" style="width: 216px">
305
								<%=standardOptions %>
235
							<select name="activeStandards" id="activeStandards" multiple="multiple" size="5" style="width: 216px" onchange="initialize(this)">
236
								<option>loading...</option>
306 237
							</select>
307
							<input type="hidden" name="dynamicClass" id="dynamicClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Standard"/>
238
							<input type="hidden" name="activeStandardsClass" id="activeStandardsClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Standard"/>
308 239
						</td>
309 240
					</tr>
310 241
					<tr>
......
328 259
					</tr>
329 260
					<tr>
330 261
						<td>
331
							<select name="dynamicValue" id="dynamicValue" multiple="multiple" size="5" style="width: 216px">
332
								<%=protocolOptions %>
262
							<select name="activeProtocols" id="activeProtocols" multiple="multiple" size="5" style="width: 216px" onchange="initialize(this)">
263
								<option>loading...</option>
333 264
							</select>
334
							<input type="hidden" name="dynamicClass" id="dynamicClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Protocol"/>
265
							<input type="hidden" name="activeProtocolsClass" id="activeProtocolsClass" value="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Protocol"/>
335 266
						</td>
336 267
					</tr>
337 268
					<tr>
......
350 281
			<td colspan="3">From same Observation? <input type="checkbox" name="strict"/></td>
351 282
		</tr>
352 283
		<tr>
353
			<td colspan="3"><input type="submit" value="Search"/></td>
284
			<td colspan="3">
285
				<input type="submit" value="Search"/>
286
				<input type="reset" value="Clear" onclick="$('#searchForm').get(0).reset(); initialize()"/>
287
			</td>
354 288
		</tr>
355 289
	</table>
356 290
		<!-- 

Also available in: Unified diff