diff --git a/code/css/popup.css b/code/css/popup.css index f67c149..76e5c47 100644 --- a/code/css/popup.css +++ b/code/css/popup.css @@ -18,6 +18,7 @@ html { padding-bottom: 15%; margin: 0 auto; } + .footer { position: relative; @@ -29,6 +30,11 @@ html { margin-top: 2%; } + .favListItem { + display: inline-block; + width: 33%; + } + li { padding-left: 40px; } diff --git a/code/js/popup.js b/code/js/popup.js index 37ceb71..aa224ef 100644 --- a/code/js/popup.js +++ b/code/js/popup.js @@ -6,7 +6,10 @@ obj = {"bit_manipulation/src/count_set_bits": ["countSetBits.js", "count_set_bit //Tags for easy search var tags = ['sort','search','math','string','crypto','data structures','graph','greedy','operating systems','artificial intelligence']; - var bricklayer ; +var favs = []; +var filenames = []; +var bricklayer ; + function AddNewTags (tagName) { /*Function can be used and improved for adding new Tags in the tags array @@ -14,34 +17,62 @@ function AddNewTags (tagName) tags.push(tagName); } +function updateFavs(x, filename) { + x.classList.toggle("checked"); + + if (chrome && chrome.storage) { + chrome.storage.sync.get({favs: []}, function(items) { + if (!chrome.runtime.error) { + favs = items.favs; + + if(!favs.includes(filename)) { + favs.push(filename); + } else { + var index = favs.indexOf(filename); + if (index > -1) { + favs.splice(index, 1); + } + } + + chrome.storage.sync.set({ favs : favs }, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + + } + }); + } +} $(function() { $('#search').change(function() { $('.bricklayer').empty(); $('#error-message').empty(); - $('#no_of_results').empty(); - dumpBookmarks($('#search').val()); - - + $('#no_of_results').empty(); + dumpBookmarks($('#search').val()); }); }); -$(function(){ +$(function() { $(document).on("click", ".button-pop", function(){ - $('.bricklayer').empty(); + $('#front').show(); + $('#no_of_results').show(); + $('.bricklayer').empty(); $('#error-message').empty(); $('#no_of_results').empty(); dumpBookmarks($(this).val()); - - }); }); +var current_fname; function dumpBookmarks(query) { $('#search').val(query); $("#front").hide(); - bricklayer = new Bricklayer(document.querySelector('.bricklayer')); + $("#favorites").hide(); + $('.bricklayer').show(); + bricklayer = new Bricklayer(document.querySelector('.bricklayer')); var found = 0; @@ -51,7 +82,6 @@ function dumpBookmarks(query) for(var pos in single_query) { - current_query = single_query[pos]; if(current_query != "") { @@ -61,70 +91,99 @@ function dumpBookmarks(query) } if(found_word == 1) - for (var key in obj) + + for (var key in obj) + { + var current_found = 0; + + for(var pos in single_query) { - var current_found = 0; + current_query = single_query[pos]; + if(current_query == "") + continue; + + if ( current_found == 0 && ((String(key).toLowerCase()).indexOf(current_query.toLowerCase()) != -1)) + { + found = 1; + current_found = 1; + + let str = key; + let inside_text = ''; + str = str.split("/").pop(); + str = str.split('_').join(' '); + str = str.replace(/\w\S*/g, function(txt) { + return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); + }); + + if(obj[key].length ==1 && ((String(obj[key]).toLowerCase()).indexOf("README.md".toLowerCase()) != -1)) + continue; + else + { + if(chrome && chrome.storage) { + chrome.storage.sync.get({favs: []}, function(items) { + if (!chrome.runtime.error) { + favs = items.favs; + } + }); + } + let sub_result_number = 1; + total++; + + for (var dd in obj[key]) + { + var fname= key+"/"+obj[key][dd]; + + temp = fname; + temp = temp.replace(/[-\/\\^$*+?.()|[\]{}]/g,''); + temp = temp.replace(/_/g, ''); + + + if(((String(obj[key][dd]).toLowerCase()).indexOf("README.md".toLowerCase()) != -1)){} + + else + { + + if(!favs.includes(fname)) { + inside_text = inside_text + ""+sub_result_number+". "+obj[key][dd]+""+"  
"; + } else { + inside_text = inside_text + ""+sub_result_number+". "+obj[key][dd]+""+"  
"; + } + sub_result_number++; + } + + var send = '#myStar'+temp; + $(document).on("click", send , function() { + var filename_pos = '#myStar'+this.id.substr(6, this.id.length); + updateFavs(this, filenames[filename_pos]); + }); + + + } - for(var pos in single_query) - { + //Individual Cards + var card = document.createElement('div'); + card.setAttribute("class", "card"); + card.setAttribute("style","margin-bottom: 8px"); + + var card_title = document.createElement('div'); + card_title.setAttribute("class","card-title"); + card_title.innerHTML = str; - current_query = single_query[pos]; - if(current_query == "") - continue; + var card_body = document.createElement('div'); + card_body.setAttribute("class","card-body"); + card_body.innerHTML = inside_text; - if ( current_found == 0 && ((String(key).toLowerCase()).indexOf(current_query.toLowerCase()) != -1)) - { + card.appendChild(card_title); + card.appendChild(card_body); - found = 1; - current_found = 1; - - let str = key; - let inside_text = ''; - str = str.split("/").pop(); - str = str.split('_').join(' '); - str = str.replace(/\w\S*/g, function(txt) { - return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); - }); - - if(obj[key].length ==1 && ((String(obj[key]).toLowerCase()).indexOf("README.md".toLowerCase()) != -1)) - continue; - else - { - let sub_result_number = 1; - total++; - for (var dd in obj[key]) - { - if(((String(obj[key][dd]).toLowerCase()).indexOf("README.md".toLowerCase()) != -1)){} - - else{ - inside_text = inside_text + ""+sub_result_number+". "+obj[key][dd]+"
"; - sub_result_number++; - } - } - //Individual Cards - var card = document.createElement('div'); - card.setAttribute("class", "card"); - card.setAttribute("style","margin-bottom: 8px"); - - var card_title = document.createElement('div'); - card_title.setAttribute("class","card-title"); - card_title.innerHTML = str; - - var card_body = document.createElement('div'); - card_body.setAttribute("class","card-body"); - card_body.innerHTML = inside_text; - - card.appendChild(card_title); - card.appendChild(card_body); - - //Adding Card to Brick Layer - bricklayer.append(card); - - } + //Adding Card to Brick Layer + bricklayer.append(card); } } - } + } + } + if(total>1) res="results"; @@ -133,6 +192,7 @@ function dumpBookmarks(query) if(total!=0) $('#no_of_results').append(""); + if (found == 0 && found_word!=0) { var happy = "

We could not find anything interesting for your query. Try something simple like \"sort\".
Help us by informing us about your query at team@opengenus.org.
We have something to make you smile:

"; @@ -148,7 +208,6 @@ function dumpBookmarks(query) } - function addtags() { var tags_display_number = 10 ; @@ -162,6 +221,7 @@ function addtags() $('#pop-tags').append(display_ele); } + //Function To Display Help function help_show() { document.getElementById('search').style.display = "none"; @@ -173,9 +233,68 @@ function help_hide() { document.getElementById('help_popup').style.display = "none"; } -document.addEventListener('DOMContentLoaded', function () +function addFavorites() { + $('#favorites').empty(); + if (chrome && chrome.storage) { + chrome.storage.sync.get({favs: []}, function(items) { + if (!chrome.runtime.error) { + favs = items.favs; + + if(favs.length==0) { + $('#favorites').append("

Favorites


"); + $('#favorites').append("

No favorites yet!

Click on the star icon beside your favorite codes to access them easily.









"); + + + } else { + + $('#favorites').append("

Favorites







"); + } + } + }); + } +} +function initialize() +{ + for (var key in obj) + { + for (var dd in obj[key]) + { + var fname= key+"/"+obj[key][dd]; + temp = fname; + temp = temp.replace(/[-\/\\^$*+?.()|[\]{}]/g,''); + temp = temp.replace(/_/g, ''); + + var str = '#myStar'+temp; + filenames[str]=fname; + } + } +} + + + +document.addEventListener('DOMContentLoaded', function () +{ document.getElementById('help').addEventListener('click', function(event){ help_show(); }); @@ -185,10 +304,19 @@ document.addEventListener('DOMContentLoaded', function () help_hide(); }); - bricklayer = new Bricklayer(document.querySelector('.bricklayer')); + + document.getElementById('favButton').addEventListener('click', function(event){ + console.log("favvvvvv") + $('#favorites').show(); + $('#front').hide(); + $('#no_of_results').hide(); + $('.bricklayer').hide(); + addFavorites(); + }); + var a = document.getElementById('fact'); a.src = "image/"+(Math.floor(Math.random() * 10) + 1)+".jpg"; + initialize(); addtags(); - }); diff --git a/code/popup.html b/code/popup.html index ce6c2ea..e3e9878 100644 --- a/code/popup.html +++ b/code/popup.html @@ -31,7 +31,11 @@
+ Help + + Favorites + GitHub
@@ -51,10 +55,11 @@

World's first Offline Search Engine


- -
-
-
+
+ +
+ +