Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#124 Implement Search history #129

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
"no-var": "off",
"indent": ["error", 4],
"quotes": ["error", "double"],
"linebreak-style": "off"
"linebreak-style": "off",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont think we should be removing any of these (Adding to warning is as good as removing people dont care about warnings). Max-len can be disabled at a place or two, but it is better to have it. It can be disabled you have a really really long string at some place.

Please can you share your motivation behind doing this. I am not able to find any reason as to why we are doing this ?

"max-len": ["error", { "code": 80 }],
"no-restricted-globals": "warn",
"no-unused-vars": "warn",
"no-shadow":"warn",
"vars-on-top":"warn"
}
}
2 changes: 1 addition & 1 deletion Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module.exports = function (grunt) {
options: {
fix: false
},
target: ["*.js"]
target: ["**/*.js", "!node_module/**/*.js"]
}
});

Expand Down
151 changes: 148 additions & 3 deletions options/css/options.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,149 @@

.main {
width: 200px;
height: 200px;
}
width: 360px;
height: 500px;
}
#backButton
{
background-color: white
}
#backButton:hover
{
padding: 0px;
background-color: white;
opacity: 1;
}

#searchHistory
{
text-align: center;
background: white;
border: none;
width: 340px;
margin-left: 10px;
padding-bottom: 10px;
padding-top: 2px;
}
#historyHead
{
font-family: 'Titillium Web', sans-serif;
color: grey;
text-align: left;
}
#themeHead
{
font-family: 'Titillium Web', sans-serif;
color: grey;
text-align: left;
margin-left: 10px;

}
#historyList
{
text-align: left;
list-style: none;
font-family: "sans-serif", Arial, Helvetica;
}

#clearButton
{
border-radius: 7px;
font-style: "sans-serif", Arial, Helvetica;
font-weight: 600;
color: grey;
background-color: white;
border: none;
padding-top: 3px;
}
#clearButton:hover
{
box-shadow: 0px 0px 7px 0px grey;
}
#clearHist
{
text-align: right;
}

ul li
{
margin: 5px;
border-bottom: 1px solid grey;
padding-left: 10px;
padding-top: 2px;
padding-bottom: 2px;
width: 245px;
color: #5e605b;
}
a
{
color: grey;
text-decoration: none;

}
a:hover
{
color: white;
background-color: grey;
padding: 8px;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tabs vs spaces :P
Please can you format this.

opacity: .8;
}

.switch {
margin-left: 10px;
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}

.switch input {
opacity: 0;
width: 0;
height: 0;
}

.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: grey;
-webkit-transition: .4s;
transition: .4s;
}

.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}

input:checked + .slider {
background-color: #102c7c;
}

input:focus + .slider {
box-shadow: 0 0 1px #2196F3;
}

input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}

.slider.round {
border-radius: 34px;
}

.slider.round:before {
border-radius: 50%;
}
Binary file added options/images2/backbutton.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
62 changes: 42 additions & 20 deletions options/js/options.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,51 @@
var recentSearchQueries = [];
var recentSearchQueryUrls = [];
var historyListElement;
var clearHistory;
var count;
var themeToggle = document.getElementById("theme");

var radios = document.getElementsByName('theme');
if (!localStorage.getItem("theme")) localStorage.setItem("theme", "light");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

var theme = localStorage.getItem(THEME);
var isThemeNotSetInLocalStorage = !!theme; // think what could be a better name for the variable.
if ( isThemeNotSetInLocalStorage ) {
   localStorage.setItem(THEME, LIGHT);
}

Also we can move

var THEME = "theme";
var LIGHT = "light";
var DARK = "dark";

to the top of file and use these constants everywhere. It is better to move all constants to the top of file.


if(!localStorage.getItem('theme'))
localStorage.setItem('theme', 'light');

if(localStorage.getItem('theme') == 'light')
{
console.log("light");
radios[0].checked = true;
}
else
{
console.log("dark");
radios[1].checked = true;
if (localStorage.getItem("theme") === "light") {
themeToggle.checked = false;
} else {
themeToggle.checked = true;
}

function handleThemeChange(event) {
if(event.target.value == 'light')
localStorage.setItem('theme', 'light');
else
localStorage.setItem('theme', 'dark');
if (themeToggle.checked === false) localStorage.setItem("theme", "light");
else localStorage.setItem("theme", "dark");
}

document.addEventListener("DOMContentLoaded", function () {
var radios = document.getElementsByName('theme');
radios[0].addEventListener('click', handleThemeChange);
radios[1].addEventListener('click', handleThemeChange);
themeToggle = document.getElementById("theme");
themeToggle.addEventListener("click", handleThemeChange);
});

historyListElement = document.getElementById("historyList");
clearHistory = document.querySelector("#clearButton");

recentSearchQueries = (JSON.parse(localStorage.getItem("search")));
recentSearchQueryUrls = (JSON.parse(localStorage.getItem("link")));

historyListElement.textContent = "";
count = 0;
recentSearchQueries.forEach(function (entr) {
var aTag = document.createElement("a");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess you forgot to look into this. Please can you fix this variable name.

aTag.setAttribute("target", "_blank");
aTag.setAttribute("href", recentSearchQueryUrls[count]);
aTag.innerHTML = entr;
historyListElement.appendChild(aTag);
var br = document.createElement("br");
historyListElement.appendChild(br);
var hr = document.createElement("hr");
historyListElement.appendChild(hr);
count += 1;
});


clearHistory.addEventListener("click", function () {
localStorage.clear();
location.reload();
});
29 changes: 22 additions & 7 deletions options/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,36 @@
<head>
<title>Fearch - Options</title>
<link href="css/options.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Staatliches" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Titillium+Web" rel="stylesheet">
<meta charset="utf-8">
</head>

<body>
<div class="main">
<a href="../popup/popup.html" id="backButton" >
<img src="images2/backbutton.jpg" height="24px" width="24px">
</a>
<form>
<label>
<b>Select theme</b>
<br />
<input type="radio" name="theme" value="light"> Light<br>
<input type="radio" name="theme" value="dark"> Dark<br>
<br/>
<h2 id="themeHead">THEME</h2>
<label class="switch">
<input type="checkbox" name="theme" id="theme">
<span class="slider round"></span>
</label>
</form>
<br/>
<hr/>
<div id="searchHistory">
<h2 id="historyHead">HISTORY</h2>
<div id="historyList">

</div>
<br/>
<div id="clearHist">
<button id="clearButton">CLEAR HISTORY </button>
</div>
</div>
</div>
<script src="js/options.js"></script>
</body>

</html>
Loading