summaryrefslogtreecommitdiffstats
path: root/tools/droiddoc/templates-sdk
diff options
context:
space:
mode:
authorScott Main <smain@google.com>2013-12-05 16:05:09 -0800
committerScott Main <smain@google.com>2013-12-09 15:57:26 -0800
commit719acb4553e1ffcbbe452ba7b3e8c6e5a12515db (patch)
tree0f4546df247fb551daabf687e80bfc8b3ee6e9e3 /tools/droiddoc/templates-sdk
parent42d6e58195445617fb739d5363d5f23a7b5d990c (diff)
downloadbuild-719acb4553e1ffcbbe452ba7b3e8c6e5a12515db.zip
build-719acb4553e1ffcbbe452ba7b3e8c6e5a12515db.tar.gz
build-719acb4553e1ffcbbe452ba7b3e8c6e5a12515db.tar.bz2
update search suggestions to use new unified JS and show samples
Change-Id: Id39091558906db7d43b2d07d09756f71d98502a7
Diffstat (limited to 'tools/droiddoc/templates-sdk')
-rw-r--r--tools/droiddoc/templates-sdk/assets/js/docs.js279
-rw-r--r--tools/droiddoc/templates-sdk/components/masthead.cs2
2 files changed, 265 insertions, 16 deletions
diff --git a/tools/droiddoc/templates-sdk/assets/js/docs.js b/tools/droiddoc/templates-sdk/assets/js/docs.js
index 1996dac..6630bf9 100644
--- a/tools/droiddoc/templates-sdk/assets/js/docs.js
+++ b/tools/droiddoc/templates-sdk/assets/js/docs.js
@@ -23,7 +23,7 @@ var navBarIsFixed = false;
$(document).ready(function() {
// load json file for JD doc search suggestions
- $.getScript(toRoot + 'reference/jd_lists.js');
+ $.getScript(toRoot + 'jd_lists_unified.js');
// load json file for Android API search suggestions
$.getScript(toRoot + 'reference/lists.js');
// load json files for Google services API suggestions
@@ -1539,6 +1539,13 @@ function set_item_values(toroot, $li, match)
$link.attr('href',toroot + match.link);
}
+function set_item_values_jd(toroot, $li, match)
+{
+ var $link = $('a',$li);
+ $link.html(match.title);
+ $link.attr('href',toroot + match.url);
+}
+
function new_suggestion($list) {
var $li = $("<li class='jd-autocomplete'></li>");
$list.append($li);
@@ -1615,6 +1622,9 @@ function sync_selection_table(toroot)
$(".search_filtered_wrapper.docs li").remove();
// determine google results to show
+ // NOTE: The order of the conditions below for the sugg.type MUST BE SPECIFIC:
+ // The order must match the reverse order that each section appears as a card in
+ // the suggestion UI... this may be only for the "develop" grouped items though.
gDocsListLength = gDocsMatches.length < ROW_COUNT_DOCS ? gDocsMatches.length : ROW_COUNT_DOCS;
for (i=0; i<gDocsListLength; i++) {
var sugg = gDocsMatches[i];
@@ -1625,16 +1635,19 @@ function sync_selection_table(toroot)
if (sugg.type == "distribute") {
$li = new_suggestion($(".suggest-card.distribute ul"));
} else
+ if (sugg.type == "samples") {
+ $li = new_suggestion($(".suggest-card.develop .child-card.samples"));
+ } else
if (sugg.type == "training") {
$li = new_suggestion($(".suggest-card.develop .child-card.training"));
} else
- if (sugg.type == "guide"||"google") {
+ if (sugg.type == "about"||"guide"||"tools"||"google") {
$li = new_suggestion($(".suggest-card.develop .child-card.guides"));
} else {
continue;
}
- set_item_values(toroot, $li, sugg);
+ set_item_values_jd(toroot, $li, sugg);
set_item_selected($li, i == gSelectedIndex);
}
@@ -1659,6 +1672,10 @@ function sync_selection_table(toroot)
$(".child-card.training").prepend("<li class='header'>Training:</li>");
$(".child-card.training li").appendTo(".suggest-card.develop ul");
}
+ if ($(".child-card.samples li").length > 0) {
+ $(".child-card.samples").prepend("<li class='header'>Samples:</li>");
+ $(".child-card.samples li").appendTo(".suggest-card.develop ul");
+ }
if ($(".suggest-card.develop li").length > 0) {
$(".suggest-card.develop").show(300);
@@ -1681,6 +1698,7 @@ function sync_selection_table(toroot)
*/
function search_changed(e, kd, toroot)
{
+ var currentLang = getLangPref();
var search = document.getElementById("search_autocomplete");
var text = search.value.replace(/(^ +)|( +$)/g, '');
// get the ul hosting the currently selected item
@@ -1794,8 +1812,8 @@ function search_changed(e, kd, toroot)
}
}
- // if key-up event and not arrow down/up,
- // read the search query and add suggestsions to gMatches
+ // if key-up event and not arrow down/up/left/right,
+ // read the search query and add suggestions to gMatches
else if (!kd && (e.keyCode != 40)
&& (e.keyCode != 38)
&& (e.keyCode != 37)
@@ -1841,31 +1859,35 @@ function search_changed(e, kd, toroot)
- // Search for JD docs
+ // Search for matching JD docs
if (text.length >= 3) {
- for (var i=0; i<JD_DATA.length; i++) {
- // Regex to match only the beginning of a word
- var textRegex = new RegExp("\\b" + text.toLowerCase(), "g");
+ // Regex to match only the beginning of a word
+ var textRegex = new RegExp("\\b" + text.toLowerCase(), "g");
+
+
+ // Search for Training classes
+ for (var i=0; i<TRAINING_RESOURCES.length; i++) {
// current search comparison, with counters for tag and title,
// used later to improve ranking
- var s = JD_DATA[i];
+ var s = TRAINING_RESOURCES[i];
s.matched_tag = 0;
s.matched_title = 0;
var matched = false;
// Check if query matches any tags; work backwards toward 1 to assist ranking
- for (var j = s.tags.length - 1; j >= 0; j--) {
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
// it matches a tag
- if (s.tags[j].toLowerCase().match(textRegex)) {
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
matched = true;
s.matched_tag = j + 1; // add 1 to index position
}
}
- // Don't consider doc title for lessons (only for class landing pages)
- // ...it is not a training lesson (or is but has matched a tag)
- if (!(s.type == "training" && s.link.indexOf("index.html") == -1) || matched) {
+ // Don't consider doc title for lessons (only for class landing pages),
+ // unless the lesson has a tag that already matches
+ if ((s.lang == currentLang) &&
+ (!(s.type == "training" && s.url.indexOf("index.html") == -1) || matched)) {
// it matches the doc title
- if (s.label.toLowerCase().match(textRegex)) {
+ if (s.title.toLowerCase().match(textRegex)) {
matched = true;
s.matched_title = 1;
}
@@ -1875,6 +1897,231 @@ function search_changed(e, kd, toroot)
matchedCountDocs++;
}
}
+
+
+ // Search for API Guides
+ for (var i=0; i<GUIDE_RESOURCES.length; i++) {
+ // current search comparison, with counters for tag and title,
+ // used later to improve ranking
+ var s = GUIDE_RESOURCES[i];
+ s.matched_tag = 0;
+ s.matched_title = 0;
+ var matched = false;
+
+ // Check if query matches any tags; work backwards toward 1 to assist ranking
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
+ // it matches a tag
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_tag = j + 1; // add 1 to index position
+ }
+ }
+ // Check if query matches the doc title, but only for current language
+ if (s.lang == currentLang) {
+ // if query matches the doc title
+ if (s.title.toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_title = 1;
+ }
+ }
+ if (matched) {
+ gDocsMatches[matchedCountDocs] = s;
+ matchedCountDocs++;
+ }
+ }
+
+
+ // Search for Tools Guides
+ for (var i=0; i<TOOLS_RESOURCES.length; i++) {
+ // current search comparison, with counters for tag and title,
+ // used later to improve ranking
+ var s = TOOLS_RESOURCES[i];
+ s.matched_tag = 0;
+ s.matched_title = 0;
+ var matched = false;
+
+ // Check if query matches any tags; work backwards toward 1 to assist ranking
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
+ // it matches a tag
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_tag = j + 1; // add 1 to index position
+ }
+ }
+ // Check if query matches the doc title, but only for current language
+ if (s.lang == currentLang) {
+ // if query matches the doc title
+ if (s.title.toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_title = 1;
+ }
+ }
+ if (matched) {
+ gDocsMatches[matchedCountDocs] = s;
+ matchedCountDocs++;
+ }
+ }
+
+
+ // Search for About docs
+ for (var i=0; i<ABOUT_RESOURCES.length; i++) {
+ // current search comparison, with counters for tag and title,
+ // used later to improve ranking
+ var s = ABOUT_RESOURCES[i];
+ s.matched_tag = 0;
+ s.matched_title = 0;
+ var matched = false;
+
+ // Check if query matches any tags; work backwards toward 1 to assist ranking
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
+ // it matches a tag
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_tag = j + 1; // add 1 to index position
+ }
+ }
+ // Check if query matches the doc title, but only for current language
+ if (s.lang == currentLang) {
+ // if query matches the doc title
+ if (s.title.toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_title = 1;
+ }
+ }
+ if (matched) {
+ gDocsMatches[matchedCountDocs] = s;
+ matchedCountDocs++;
+ }
+ }
+
+
+ // Search for Design guides
+ for (var i=0; i<DESIGN_RESOURCES.length; i++) {
+ // current search comparison, with counters for tag and title,
+ // used later to improve ranking
+ var s = DESIGN_RESOURCES[i];
+ s.matched_tag = 0;
+ s.matched_title = 0;
+ var matched = false;
+
+ // Check if query matches any tags; work backwards toward 1 to assist ranking
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
+ // it matches a tag
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_tag = j + 1; // add 1 to index position
+ }
+ }
+ // Check if query matches the doc title, but only for current language
+ if (s.lang == currentLang) {
+ // if query matches the doc title
+ if (s.title.toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_title = 1;
+ }
+ }
+ if (matched) {
+ gDocsMatches[matchedCountDocs] = s;
+ matchedCountDocs++;
+ }
+ }
+
+
+ // Search for Distribute guides
+ for (var i=0; i<DISTRIBUTE_RESOURCES.length; i++) {
+ // current search comparison, with counters for tag and title,
+ // used later to improve ranking
+ var s = DISTRIBUTE_RESOURCES[i];
+ s.matched_tag = 0;
+ s.matched_title = 0;
+ var matched = false;
+
+ // Check if query matches any tags; work backwards toward 1 to assist ranking
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
+ // it matches a tag
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_tag = j + 1; // add 1 to index position
+ }
+ }
+ // Check if query matches the doc title, but only for current language
+ if (s.lang == currentLang) {
+ // if query matches the doc title
+ if (s.title.toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_title = 1;
+ }
+ }
+ if (matched) {
+ gDocsMatches[matchedCountDocs] = s;
+ matchedCountDocs++;
+ }
+ }
+
+
+ // Search for Google guides
+ for (var i=0; i<GOOGLE_RESOURCES.length; i++) {
+ // current search comparison, with counters for tag and title,
+ // used later to improve ranking
+ var s = GOOGLE_RESOURCES[i];
+ s.matched_tag = 0;
+ s.matched_title = 0;
+ var matched = false;
+
+ // Check if query matches any tags; work backwards toward 1 to assist ranking
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
+ // it matches a tag
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_tag = j + 1; // add 1 to index position
+ }
+ }
+ // Check if query matches the doc title, but only for current language
+ if (s.lang == currentLang) {
+ // if query matches the doc title
+ if (s.title.toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_title = 1;
+ }
+ }
+ if (matched) {
+ gDocsMatches[matchedCountDocs] = s;
+ matchedCountDocs++;
+ }
+ }
+
+
+ // Search for Samples
+ for (var i=0; i<SAMPLES_RESOURCES.length; i++) {
+ // current search comparison, with counters for tag and title,
+ // used later to improve ranking
+ var s = SAMPLES_RESOURCES[i];
+ s.matched_tag = 0;
+ s.matched_title = 0;
+ var matched = false;
+ // Check if query matches any tags; work backwards toward 1 to assist ranking
+ for (var j = s.keywords.length - 1; j >= 0; j--) {
+ // it matches a tag
+ if (s.keywords[j].toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_tag = j + 1; // add 1 to index position
+ }
+ }
+ // Check if query matches the doc title, but only for current language
+ if (s.lang == currentLang) {
+ // if query matches the doc title.t
+ if (s.title.toLowerCase().match(textRegex)) {
+ matched = true;
+ s.matched_title = 1;
+ }
+ }
+ if (matched) {
+ gDocsMatches[matchedCountDocs] = s;
+ matchedCountDocs++;
+ }
+ }
+
+ // Rank/sort all the matched pages
rank_autocomplete_doc_results(text, gDocsMatches);
}
diff --git a/tools/droiddoc/templates-sdk/components/masthead.cs b/tools/droiddoc/templates-sdk/components/masthead.cs
index f3eb401..a4198fb 100644
--- a/tools/droiddoc/templates-sdk/components/masthead.cs
+++ b/tools/droiddoc/templates-sdk/components/masthead.cs
@@ -122,6 +122,8 @@ onkeyup="return search_changed(event, false, '<?cs var:toroot ?>')" />
</div>
<div class="child-card training no-display">
</div>
+ <div class="child-card samples no-display">
+ </div>
</div>
<div class="suggest-card design no-display">
<ul class="search_filtered">