mirror of
https://github.com/alyssaxuu/omni.git
synced 2026-03-11 08:54:35 +00:00
Merge pull request #70 from wll8/feat-optimizeListPerformance
perf: optimize list performance
This commit is contained in:
commit
03f2ea262d
12 changed files with 57 additions and 17 deletions
11
.editorconfig
Normal file
11
.editorconfig
Normal 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
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.history
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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=""+browser.runtime.getURL("/assets/globe.svg")+""' class='omni-icon'>";
|
||||
var img = "<img src='"+action.favIconUrl+"' alt='favicon' onerror='this.src=""+chrome.runtime.getURL("/assets/globe.svg")+""' 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
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -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
6
firefox/virtualized-list.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -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
6
src/virtualized-list.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue