Created
March 28, 2012 16:22
-
-
Save Adman/2227938 to your computer and use it in GitHub Desktop.
query function isn't performed
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var query = function(query, callback) | |
{ | |
var req = new XMLHttpRequest(); | |
if(this.meanings) | |
req.open('GET', 'https://chrome.duckduckgo.com?q=' + encodeURIComponent(query) + '&format=json', true); | |
else | |
req.open('GET', 'https://chrome.duckduckgo.com?q=' + encodeURIComponent(query) + '&format=json&d=1', true); | |
req.onreadystatechange = function(data) { | |
if (req.readyState != 4) { return; } | |
var res = JSON.parse(req.responseText); | |
callback(res); | |
} | |
req.send(null); | |
} | |
function search(query) | |
{ | |
query(query, function(response){ | |
renderZeroClick(response, query); | |
}); | |
} | |
window.onload = function(){ | |
document.getElementById("search_button").onclick = function(){ | |
var el = document.getElementById('search_wrapper'); | |
search(el.value); | |
}; | |
} | |
function hideZeroClick() | |
{ | |
var ddg_result = document.getElementById("ddg_zeroclick"); | |
if (ddg_result !== null) | |
ddg_result.style.display = 'none'; | |
} | |
function showZeroClick() | |
{ | |
var ddg_result = document.getElementById("ddg_zeroclick"); | |
if (ddg_result !== null) | |
ddg_result.style.display = 'block'; | |
} | |
function resultsLoaded() | |
{ | |
return document.getElementById("center_col") !== null; | |
} | |
function createResultDiv() | |
{ | |
var result = document.getElementById("main"); | |
var ddg_result = document.getElementById("ddg_zeroclick"); | |
if (ddg_result === null) { | |
result.innerHTML = '<div id="ddg_zeroclick"></div>' + result.innerHTML; | |
ddg_result = document.getElementById("ddg_zeroclick"); | |
} | |
return ddg_result; | |
} | |
function renderZeroClick(res, query) | |
{ | |
// disable on images | |
//if (document.getElementById('isr_pps') !== null) | |
// return; | |
if (res['AnswerType'] !== "") { | |
displayAnswer(res['Answer']); | |
} else if (res['Type'] == 'A' && res['Abstract'] !== "") { | |
displaySummary(res, query); | |
} else { | |
switch (res['Type']){ | |
case 'E': | |
displayAnswer(res['Answer']); | |
break; | |
case 'A': | |
displayAnswer(res['Answer']); | |
break; | |
case 'C': | |
displayCategory(res, query); | |
break; | |
case 'D': | |
displayDisambiguation(res, query); | |
break; | |
default: | |
hideZeroClick(); | |
break; | |
} | |
} | |
} | |
function displayAnswer(answer) | |
{ | |
if (answer === '') { | |
return; | |
} | |
if (resultsLoaded()) { | |
var ddg_result = createResultDiv(); | |
ddg_result.className = "ddg_answer"; | |
ddg_result.innerHTML = answer; | |
} else { | |
setTimeout('displayAnswer("'+answer+'");', 200); | |
} | |
} | |
function displaySummary(res, query) { | |
var result = '' | |
var img_url = res['AbstractURL']; | |
var official_site = ''; | |
var first_category = '' | |
var hidden_categories = ''; | |
if (res['Results'].length !== 0) { | |
if(res['Results'][0]['Text'] === "Official site") { | |
official_site = ' | ' + res['Results'][0]['Result']; | |
img_url = res['Results'][0]['FirstURL']; | |
} | |
} | |
for (var i = 0; i < res['RelatedTopics'].length; i++){ | |
if (res['RelatedTopics'].length === 0) | |
break; | |
var link = res['RelatedTopics'][i]['Result']. | |
match(/<a href=".*">.*<\/a>/); | |
if (i < 2) { | |
var first = (i === 0)? ' class="first_category"': ''; | |
first_category += '<div id="ddg_zeroclick_category"'+ first + '>' + | |
link + | |
'</div>'; | |
} else { | |
hidden_categories += '<div id="ddg_zeroclick_category">' + | |
link + | |
'</div>'; | |
} | |
} | |
if (hidden_categories !== '') { | |
hidden_categories = '<div id="ddg_zeroclick_more">' + | |
'<a href="javascript:;" onclick="' + | |
"this.parentElement.style.display='none';" + | |
"this.parentElement.nextElementSibling.style.display='block'" + | |
'"> More related topics </a>' + | |
'</div>' + | |
'<div style="display:none">' + | |
hidden_categories + | |
'</div>'; | |
} | |
result += '<div id="ddg_zeroclick_header">' + | |
'<a href="' + res['AbstractURL'] + '">'+ | |
(res['Heading'] === ''? " ": res['Heading']) + | |
'</a>' + | |
'<a class="ddg_more" href="https://duckduckgo.com/?q='+ | |
encodeURIComponent(query) | |
+'"> See DuckDuckGo results </a>' + | |
'</div>'; | |
if (res['Image']) { | |
result += '<div id="ddg_zeroclick_image">' + | |
'<a href="' + img_url +'">' + | |
'<img class="ddg_zeroclick_img" src="' + res['Image'] + | |
'" />' + | |
'</a>' + | |
'</div>'; | |
} | |
var source_base_url = res['AbstractURL'].match(/http.?:\/\/(.*?\.)?(.*\..*?)\/.*/)[2]; | |
result += '<div id="ddg_zeroclick_abstract">' + res['Abstract'] + | |
'<div id="ddg_zeroclick_official_links">' + | |
'<img src="http://duckduckgo.com/i/'+ source_base_url +'.ico" />' + | |
'<a href="' + res['AbstractURL'] + '"> More at ' + | |
res['AbstractSource'] + | |
'</a>' + official_site + | |
'</div>' + | |
first_category + | |
hidden_categories + | |
'</div><div class="clear"></div>'; | |
if(resultsLoaded()) { | |
var ddg_result = createResultDiv(); | |
ddg_result.className = ''; | |
ddg_result.innerHTML = result; | |
} else { | |
setTimeout(function(){ | |
displaySummary(res, query); | |
}, 200); | |
} | |
} | |
function displayDisambiguation(res, query){ | |
var result = ''; | |
result += '<div id="ddg_zeroclick_header"> Meanings of ' + | |
res['Heading'] + | |
'<a class="ddg_more" href="https://duckduckgo.com/?q='+ | |
encodeURIComponent(query) | |
+'"> See DuckDuckGo results </a>' + | |
'</div>'; | |
var disambigs = '' | |
var hidden_disambigs = ''; | |
var others = ''; | |
var nhidden = 0; | |
for (var i = 0; i < res['RelatedTopics'].length; i++){ | |
if (res['RelatedTopics'].length === 0) | |
break; | |
// other topics | |
if(res['RelatedTopics'][i]['Topics']) { | |
var topics = res['RelatedTopics'][i]['Topics']; | |
var output = ''; | |
for(var j = 0; j < topics.length; j++){ | |
output += '<div class="wrapper">' + | |
'<div class="icon_disambig">' + | |
'<img src="' + topics[j]['Icon']['URL'] +'" />' + | |
'</div>' + | |
'<div class="ddg_zeroclick_disambig">' + | |
topics[j]['Result'] + | |
'</div>' + | |
'</div>'; | |
} | |
others += '<div class="disambig_more">' + | |
'<a href="javascript:;" onclick="' + | |
"this.parentElement.nextElementSibling.style.display='block';" + | |
"this.parentElement.innerHTML = '" + res['RelatedTopics'][i]['Name'] + "<hr>';" + | |
'"> ' + res['RelatedTopics'][i]['Name'] + ' ('+ topics.length + ')</a>' + | |
'</div>' + | |
'<div style="display:none">' + | |
output + | |
'</div>'; | |
continue; | |
} | |
if (i <= 2) { | |
disambigs += '<div class="wrapper">' + | |
'<div class="icon_disambig">' + | |
'<img src="' + res['RelatedTopics'][i]['Icon']['URL'] +'" />' + | |
'</div>' + | |
'<div class="ddg_zeroclick_disambig">' + | |
res['RelatedTopics'][i]['Result'] + | |
'</div>' + | |
'</div>'; | |
} else { | |
hidden_disambigs += '<div class="wrapper">' + | |
'<div class="icon_disambig">' + | |
'<img src="' + res['RelatedTopics'][i]['Icon']['URL'] +'" />' + | |
'</div>' + | |
'<div class="ddg_zeroclick_disambig">' + | |
res['RelatedTopics'][i]['Result'] + | |
'</div>' + | |
'</div>'; | |
nhidden++; | |
} | |
} | |
if (hidden_disambigs!== '') { | |
hidden_disambigs = '<div class="disambig_more">' + | |
'<a href="javascript:;" onclick="' + | |
"this.parentElement.style.display='none';" + | |
"this.parentElement.nextElementSibling.style.display='block'" + | |
'"> More ('+ nhidden + ')</a>' + | |
'</div>' + | |
'<div style="display:none">' + | |
hidden_disambigs+ | |
'</div>'; | |
} | |
result += '<div id="ddg_zeroclick_abstract">' + | |
disambigs + | |
hidden_disambigs + | |
others + | |
'</div><div class="clear"></div>'; | |
if(resultsLoaded()) { | |
var ddg_result = createResultDiv(); | |
ddg_result.className = ''; | |
ddg_result.innerHTML = result; | |
} else { | |
setTimeout(function(){ | |
displayDisambiguation(res, query); | |
}, 200); | |
} | |
} | |
function displayCategory(res, query){ | |
var result = ''; | |
result += '<div id="ddg_zeroclick_header">' + | |
res['Heading'] + | |
'<a class="ddg_more" href="https://duckduckgo.com/?q='+ | |
encodeURIComponent(query) | |
+'"> See DuckDuckGo results </a>' + | |
'</div>'; | |
var categories = ''; | |
var hidden_categories = ''; | |
var nhidden = 0; | |
for (var i = 0; i < res['RelatedTopics'].length; i++){ | |
if (res['RelatedTopics'].length === 0) | |
break; | |
if (i <= 2) { | |
categories += '<div class="wrapper">' + | |
'<div id="ddg_zeroclick_img" class="icon_category">' + | |
'<img src="' + res['RelatedTopics'][i]['Icon']['URL'] +'" />' + | |
'</div>' + | |
'<div id="ddg_zeroclick_category_item">' + | |
res['RelatedTopics'][i]['Result'] + | |
'</div>' + | |
'</div>'; | |
} else { | |
hidden_categories += '<div class="wrapper">' + | |
'<div id="ddg_zeroclick_img" class="icon_category">' + | |
'<img src="' + res['RelatedTopics'][i]['Icon']['URL'] +'" />' + | |
'</div>' + | |
'<div id="ddg_zeroclick_category_item">' + | |
res['RelatedTopics'][i]['Result'] + | |
'</div>' + | |
'</div>'; | |
nhidden++; | |
} | |
} | |
if (hidden_categories !== '') { | |
hidden_categories = '<div class="category_more">' + | |
'<a href="javascript:;" onclick="' + | |
"this.parentElement.style.display='none';" + | |
"this.parentElement.nextElementSibling.style.display='block'" + | |
'"> More ('+ nhidden + ')</a>' + | |
'</div>' + | |
'<div style="display:none">' + | |
hidden_categories+ | |
'</div>'; | |
} | |
result += '<div id="ddg_zeroclick_abstract">' + | |
categories + | |
hidden_categories + | |
'</div>'; | |
if(resultsLoaded()) { | |
var ddg_result = createResultDiv(); | |
ddg_result.className = ''; | |
ddg_result.innerHTML = result; | |
} else { | |
setTimeout(function(){ | |
displayCategory(res, query); | |
}, 200); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment