<%@ Language=VBScript %> <script language="JScript" runat="server" src="./identical/identical_data.js"></script> <script language="JScript" runat="server" src="./identical/title_db.js"></script> <script language="JScript" runat="server"> function get_filenames_for_model_id(id) { var result, i, key; result = []; for (key in hash_by_file) { i = key.indexOf('/'); if (key.substr(0, i) == id) { result.push(key.substr(i)); } } return result; } function get_shortname(s) { while (s.indexOf('/') >= 0) { s = s.substr(s.indexOf('/') + 1); } return s; } function get_modelid(filename) { return filename.substr(0, filename.indexOf('/')); } function get_matches(id, filename) { var hash = hash_by_file[id + filename]; return files_by_hash[hash]; } function compute_jsonp(search_id, jsonp_callback) { var files; files = get_filenames_for_model_id(search_id); var duplicates = []; var i, j, k, matches, dup, has_entry; for (i = 0; i < files.length; i++) { matches = get_matches(search_id, files[i]); if (matches.length > 1) { duplicates.push([files[i], matches]); } } result = jsonp_callback + '({'; result += '"text": "' + duplicates.length + ' files shared with other ModelDB models"' if (duplicates.length > 0) { // sort in alphabetical order by shortname duplicates.sort(function(a, b) { return get_shortname(a[0]) > get_shortname(b[0]); }); result += ', "children": [' for (j = 0; j < duplicates.length; j++) { if (j > 0) { result += ', '; } result += '{"text": "<a href=\\"http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=' + search_id + '&file=' + duplicates[j][0] + '\\">' result += get_shortname(duplicates[j][0]); result += '</a>"' result += ', "children": [' dup = duplicates[j][1]; has_entry = false; for (k = 0; k < dup.length; k++) { // TODO: what if a file is duplicated exactly once in ModelDB, but that duplication is within the same model? if (get_modelid(dup[k]) != search_id) { if (has_entry) { result += ', '; } has_entry = true; result += '{"text": "<a href=\\"http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=' + get_modelid(dup[k]) + '&file=/' + dup[k].substr(dup[k].indexOf('/') + 1) + '\\">' // TODO: escape quotes etc in title result += title_db[get_modelid(dup[k])]; result += '</a>"' result += ', "noop": true}' } } result += ']' result += ', "noop": true}'; } result += ']'; } result += ', "noop": true});'; return result; } </script> <% =compute_jsonp(Request.Querystring("model"), Request.Querystring("callback")) %>