114 lines
3.5 KiB
JavaScript
114 lines
3.5 KiB
JavaScript
// Copyright (c) 2017 kroppy. All rights reserved.
|
|
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
|
|
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
|
|
|
|
|
|
// sort tabs main function
|
|
function SortTabs(){
|
|
if ($(".tab").find(":visible:first")[0]){
|
|
chrome.tabs.query({windowId: vt.windowId}, function(tabs){
|
|
tabs.sort(function(tab_a, tab_b){
|
|
return SplitUrl(tab_a).localeCompare( SplitUrl(tab_b) );
|
|
});
|
|
var first_tabId;
|
|
if ($(".selected:visible")[0]){
|
|
first_tabId = parseInt($(".selected:visible")[0].id);
|
|
} else {
|
|
first_tabId = parseInt($(".tab").find(":visible:first")[0].parentNode.id);
|
|
}
|
|
chrome.tabs.get(first_tabId, function(tab){
|
|
var new_index = tab.index;
|
|
tabs.forEach(function(Tab){
|
|
// sort selected when more than 1 tab is selected
|
|
if (($(".selected:visible").length > 1 && $("#"+Tab.id).is(":visible") && !Tab.pinned && $("#"+Tab.id).is(".selected")) || ($(".selected:visible").length < 2 && $("#"+Tab.id).is(":visible") && !Tab.pinned)){
|
|
chrome.tabs.move(Tab.id, {"index": new_index});
|
|
new_index++;
|
|
}
|
|
});
|
|
});
|
|
if (bg.opt.scroll_to_active){
|
|
setTimeout(function(){
|
|
ScrollTabList($(".active:visible")[0].id);
|
|
},1000);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
// sort tabs sub function
|
|
function SplitUrl(tab){
|
|
var tmp_url = new URL(tab.url);
|
|
if (tmp_url.protocol != "http:"){
|
|
tmp_url.protocol == "http:";
|
|
}
|
|
var url_parts = [];
|
|
if (tab.pinned){
|
|
url_parts.push("#"+tab.index);
|
|
} else {
|
|
url_parts.push("~");
|
|
}
|
|
var parts = tmp_url.host.split(".");
|
|
parts.reverse();
|
|
if (parts.length > 1){
|
|
parts = parts.slice(1);
|
|
}
|
|
parts.join(".");
|
|
url_parts.push(parts);
|
|
url_parts.push(tab.title.toLowerCase());
|
|
return url_parts.join(" ! ");
|
|
}
|
|
|
|
|
|
// bookmark main function
|
|
function BookmarkTabs(tabs_array, FolderName){
|
|
var rootId;
|
|
var vertical_tabs_folderId;
|
|
chrome.bookmarks.getRootByName("bookmarks_bar", function(tree){
|
|
rootId = tree.id;
|
|
chrome.bookmarks.search("VerticalTabs", function(list){
|
|
for (var elem in list) {
|
|
if (list[elem].parentId == rootId){
|
|
vertical_tabs_folderId = list[elem].id;
|
|
break;
|
|
}
|
|
}
|
|
if (vertical_tabs_folderId == undefined){
|
|
chrome.bookmarks.create({parentId: rootId, title: "VerticalTabs"}, function(vertical_tabs_new){
|
|
vertical_tabs_folderId = vertical_tabs_new.id;
|
|
});
|
|
}
|
|
chrome.bookmarks.search(FolderName, function(list){
|
|
for (var elem in list) {
|
|
if (list[elem].parentId == vertical_tabs_folderId){
|
|
SlowlyBookmarkTabs(tabs_array, list[elem].id);
|
|
return;
|
|
}
|
|
}
|
|
chrome.bookmarks.create({parentId: vertical_tabs_folderId, title: FolderName}, function(active_group_folderId_new){
|
|
SlowlyBookmarkTabs(tabs_array, active_group_folderId_new.id);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
// bookmark sub function
|
|
function SlowlyBookmarkTabs(tabs_array, group_folderId){
|
|
if (tabs_array.length > 0){
|
|
chrome.tabs.get(tabs_array[0], function(tab){
|
|
chrome.bookmarks.search({url: tab.url}, function(list){
|
|
tabs_array.splice(0, 1);
|
|
setTimeout(function(){
|
|
SlowlyBookmarkTabs(tabs_array, group_folderId);
|
|
},10);
|
|
for (var elem in list){
|
|
if (list[elem].parentId == group_folderId){
|
|
bookmarkId = list[elem].id;
|
|
return;
|
|
}
|
|
}
|
|
chrome.bookmarks.create({parentId: group_folderId, title: tab.title, url: tab.url});
|
|
});
|
|
});
|
|
}
|
|
} |