Merge pull request #70 from wll8/feat-optimizeListPerformance

perf: optimize list performance
This commit is contained in:
Alyssa X 2022-02-18 08:18:26 +00:00 committed by GitHub
commit 03f2ea262d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 57 additions and 17 deletions

11
.editorconfig Normal file
View file

@ -0,0 +1,11 @@
root = true
[*]
indent_style = tab
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = false
indent_size = 2
[*.md]
trim_trailing_whitespace = false

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.history

View file

@ -428,7 +428,7 @@ browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
closeCurrentTab();
break;
case "search-history":
browser.history.search({text:message.query, maxResults:1000, startTime:31536000000*5}).then((data) => {
browser.history.search({text:message.query, maxResults:9e9, startTime:0}).then((data) => {
data.forEach((action, index) => {
action.type = "history";
action.emoji = true;

View file

@ -84,7 +84,8 @@ $(document).ready(() => {
function populateOmniFilter(actions) {
isFiltered = true;
$("#omni-extension #omni-list").html("");
actions.forEach((action, index) => {
const renderRow = (index) => {
const action = actions[index]
var keys = "";
if (action.keycheck) {
keys = "<div class='omni-keys'>";
@ -93,17 +94,23 @@ $(document).ready(() => {
});
keys += "</div>";
}
var img = "<img src='"+action.favIconUrl+"' alt='favicon' onerror='this.src=&quot;"+browser.runtime.getURL("/assets/globe.svg")+"&quot;' class='omni-icon'>";
var img = "<img src='"+action.favIconUrl+"' alt='favicon' onerror='this.src=&quot;"+chrome.runtime.getURL("/assets/globe.svg")+"&quot;' class='omni-icon'>";
if (action.emoji) {
img = "<span class='omni-emoji-action'>"+action.emojiChar+"</span>"
}
if (index != 0) {
$("#omni-extension #omni-list").append("<div class='omni-item' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>");
return $("<div class='omni-item' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>")[0]
} else {
$("#omni-extension #omni-list").append("<div class='omni-item omni-item-active' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>");
return $("<div class='omni-item omni-item-active' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>")[0]
}
})
$(".omni-extension #omni-results").html(actions.length+" results");
}
actions.length && new VirtualizedList.default($("#omni-extension #omni-list")[0], {
height: 400,
rowHeight: 60,
rowCount: actions.length,
renderRow,
onMount: () => $(".omni-extension #omni-results").html(actions.length+" results"),
});
}
// Open the omni

View file

@ -33,7 +33,7 @@
"<all_urls>"
],
"run_at": "document_end",
"js": ["focus.js", "jquery.js", "content.js"],
"js": ["focus.js", "jquery.js", "content.js", "virtualized-list.min.js"],
"css": ["content.css"]
}
],

View file

@ -14,5 +14,6 @@
<script src="jquery.js"></script>
<script src="content.js"></script>
<script src="virtualized-list.min.js"></script>
</body>
</html>

6
firefox/virtualized-list.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -183,7 +183,7 @@ chrome.commands.onCommand.addListener((command) => {
chrome.tabs.sendMessage(response.id, {request: "open-omni"});
} else {
chrome.tabs.create({
url: "./newtab.html"
url: "./newtab.html"
}).then(() => {
newtaburl = response.url;
chrome.tabs.remove(response.id);
@ -243,7 +243,7 @@ const getTabs = () => {
// Get bookmarks to populate in the actions
const getBookmarks = () => {
const process_bookmark = (bookmarks) => {
for (const bookmark of bookmarks) {
for (const bookmark of bookmarks) {
if (bookmark.url) {
actions.push({title:bookmark.title, desc:"Bookmark", id:bookmark.id, url:bookmark.url, type:"bookmark", action:"bookmark", emoji:true, emojiChar:"⭐️", keycheck:false})
}
@ -430,7 +430,7 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
closeCurrentTab();
break;
case "search-history":
chrome.history.search({text:message.query, maxResults:1000, startTime:31536000000*5}).then((data) => {
chrome.history.search({text:message.query, maxResults:0, startTime:0}).then((data) => {
data.forEach((action, index) => {
action.type = "history";
action.emoji = true;

View file

@ -83,7 +83,8 @@ $(document).ready(() => {
function populateOmniFilter(actions) {
isFiltered = true;
$("#omni-extension #omni-list").html("");
actions.forEach((action, index) => {
const renderRow = (index) => {
const action = actions[index]
var keys = "";
if (action.keycheck) {
keys = "<div class='omni-keys'>";
@ -97,12 +98,18 @@ $(document).ready(() => {
img = "<span class='omni-emoji-action'>"+action.emojiChar+"</span>"
}
if (index != 0) {
$("#omni-extension #omni-list").append("<div class='omni-item' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>");
return $("<div class='omni-item' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>")[0]
} else {
$("#omni-extension #omni-list").append("<div class='omni-item omni-item-active' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>");
return $("<div class='omni-item omni-item-active' data-index='"+index+"' data-type='"+action.type+"' data-url='"+action.url+"'>"+img+"<div class='omni-item-details'><div class='omni-item-name'>"+action.title+"</div><div class='omni-item-desc'>"+action.url+"</div></div>"+keys+"<div class='omni-select'>Select <span class='omni-shortcut'>⏎</span></div></div>")[0]
}
})
$(".omni-extension #omni-results").html(actions.length+" results");
}
actions.length && new VirtualizedList.default($("#omni-extension #omni-list")[0], {
height: 400,
rowHeight: 60,
rowCount: actions.length,
renderRow,
onMount: () => $(".omni-extension #omni-results").html(actions.length+" results"),
});
}
// Open the omni

View file

@ -34,7 +34,7 @@
"<all_urls>"
],
"run_at": "document_end",
"js": ["focus.js", "jquery.js", "content.js"],
"js": ["focus.js", "jquery.js", "content.js", "virtualized-list.min.js"],
"css": ["content.css"]
}
],

View file

@ -14,5 +14,6 @@
<script src="jquery.js"></script>
<script src="content.js"></script>
<script src="virtualized-list.min.js"></script>
</body>
</html>

6
src/virtualized-list.min.js vendored Normal file

File diff suppressed because one or more lines are too long