TabsManager
Changes
TabManager/icon.png 0(+0 -0)
TabManager/manifest.json 28(+28 -0)
TabManager/TabManager.html 47(+47 -0)
TabManager/TabManager.js 179(+179 -0)
Ссылки.docx 0(+0 -0)
Details
TabManager/icon.png 0(+0 -0)
diff --git a/TabManager/icon.png b/TabManager/icon.png
new file mode 100644
index 0000000..63ea0d2
Binary files /dev/null and b/TabManager/icon.png differ
TabManager/manifest.json 28(+28 -0)
diff --git a/TabManager/manifest.json b/TabManager/manifest.json
new file mode 100644
index 0000000..ed4cbca
--- /dev/null
+++ b/TabManager/manifest.json
@@ -0,0 +1,28 @@
+ {
+ "name": "TabManager",
+ "description" : "Base Level Extension",
+ "version": "1.0",
+ "manifest_version": 2,
+ "browser_action": {
+ "default_popup": "TabManager.html",
+ "default_icon": "icon.png"
+ },
+
+ "permissions": [
+ "activeTab",
+ "tabs"
+ ],
+
+ "commands": {
+ "_execute_browser_action": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+F",
+ "mac": "MacCtrl+Shift+F"
+ },
+ "description": "Opens hello.html"
+ }
+ }
+
+
+
+ }
\ No newline at end of file
TabManager/TabManager.html 47(+47 -0)
diff --git a/TabManager/TabManager.html b/TabManager/TabManager.html
new file mode 100644
index 0000000..25c1d7c
--- /dev/null
+++ b/TabManager/TabManager.html
@@ -0,0 +1,47 @@
+
+
+ <html>
+
+ <head>
+
+ <script src="TabManager.js"></script>
+
+ <style>
+
+ table {
+ table-layout: auto;
+ width: 100%;
+ }
+
+ </style>
+
+ </head>
+
+ <body>
+ <h1>TabManager</h1>
+
+
+ <div id = "Table">
+ </div>
+
+ <button id = "Button_Save">
+ Save
+ </button>
+ <button id = "Button_Close">
+ Close
+ </button>
+ </br>
+
+ <div>
+ <input id = "SaveLoad" type = "text">
+ </input>
+ </div>
+ </br>
+ <button id = "Button_Load">
+ Load
+ </button>
+
+ </body>
+ </html>
+
+
\ No newline at end of file
TabManager/TabManager.js 179(+179 -0)
diff --git a/TabManager/TabManager.js b/TabManager/TabManager.js
new file mode 100644
index 0000000..735c014
--- /dev/null
+++ b/TabManager/TabManager.js
@@ -0,0 +1,179 @@
+
+
+class TableRow {
+
+ constructor( ) {
+ this.index = -1;
+ this.url = "";
+ this.id = -1;
+ this.checked = false;
+ }
+}
+
+
+ var Div_TableBody;
+ var Inp_SaveLoad;
+
+ document.addEventListener("DOMContentLoaded", function(event) {
+ console.log('Start');
+ console.log(Data = new Date().toTimeString());
+
+
+ Div_TableBody = document.getElementById('Table');
+ Inp_SaveLoad = document.getElementById('SaveLoad');
+
+ chrome.tabs.query({}, PrintAllTabs);
+
+
+ document.getElementById('Button_Save').addEventListener('click', SaveSelect, false);
+ document.getElementById('Button_Close').addEventListener('click', CloseSelect, false);
+ document.getElementById('Button_Load').addEventListener('click', Load, false);
+
+});
+
+
+function PrintAllTabs(tabs)
+{
+ Div_TableBody.innerHTML = "";
+
+ var Table='';
+
+ Table += "<table id = \"table_data\">"
+
+
+ Table += "<tr>"
+
+ Table += "<th>N</th>"
+ Table += "<th>Select</th>"
+ Table += "<th>Url</th>"
+ Table += "<th style=\"display:none;\">id</th>"
+
+ Table += "</tr>"
+
+
+ tabs.forEach(function(item, i, arr) {
+
+ Table += "<tr>"
+
+ Table += "<td>"+i+"</td>"
+ Table += "<td><input type=\"checkbox\" name=\"select" + item.id + " \"></td>"
+ Table += "<td>"+item.url+"</td>" //.substring(0,10)
+ Table += "<td style=\"display:none;\">"+item.id+"</td>"
+
+ Table += "</tr>"
+
+ });
+
+ Table += "</table>"
+
+ Div_TableBody.innerHTML = Table;
+}
+
+
+function GetSelectedRows()
+{
+ var SelectedRow = [];
+
+ var table = document.getElementById('table_data');
+
+ for (var i = 1, row; row = table.rows[i]; i++)
+ {
+ var RowObj = new TableRow();
+
+ for (var j = 0, col; col = row.cells[j]; j++)
+ {
+ var cell = col.childNodes[0];
+
+ switch (j) {
+ case 0:
+ RowObj.index = cell.data;
+ break;
+ case 1:
+ RowObj.checked = cell.checked;
+ break;
+ case 2:
+ RowObj.url = cell.data;
+ break;
+ case 3:
+ RowObj.id = cell.data;
+ break
+ }
+ }
+
+ if (RowObj.checked)
+ SelectedRow.push(RowObj);
+ }
+
+ return SelectedRow;
+}
+
+function Load()
+{
+ var data = JSON.parse(Inp_SaveLoad.value);
+
+ var RowData = [];
+
+ data.forEach(function(item, i, arr)
+ {
+ var RowObj = new TableRow();
+ RowObj.index = item.index;
+ RowObj.url = item.url;
+ RowObj.id = item.id;
+
+ RowData.push(RowObj);
+ });
+
+ RowData.forEach(function(item, i, arr)
+ {
+ chrome.tabs.create({"url":item.url}, null)
+ });
+}
+function SaveSelect()
+{
+ Inp_SaveLoad.value = "";
+ console.log("TrySave");
+
+ var SelectedRow = GetSelectedRows();
+
+ if (SelectedRow.length == 0)
+ {
+ Inp_SaveLoad.value = "No rows selected";
+ return;
+ }
+
+ Inp_SaveLoad.value = JSON.stringify(SelectedRow);
+}
+function CloseSelect()
+{
+ Inp_SaveLoad.value = "";
+ console.log("TryClose");
+
+ var SelectedRow = GetSelectedRows();
+
+ if (SelectedRow.length == 0)
+ {
+ Inp_SaveLoad.value = "No rows selected";
+ return;
+ }
+
+ var IDs = [];
+
+ SelectedRow.forEach(function(item, i, arr)
+ {
+ IDs.push(parseInt(item.id));
+ });
+
+ Div_TableBody.innerHTML = "";
+
+ chrome.tabs.remove(IDs, null);
+
+ console.log(Data = new Date().toTimeString());
+ setTimeout(function(){
+ chrome.tabs.query({}, PrintAllTabs),
+ 3000
+ });
+ console.log(Data = new Date().toTimeString());
+
+}
+
+
Ссылки.docx 0(+0 -0)
diff --git "a/\320\241\321\201\321\213\320\273\320\272\320\270.docx" "b/\320\241\321\201\321\213\320\273\320\272\320\270.docx"
new file mode 100644
index 0000000..806b741
Binary files /dev/null and "b/\320\241\321\201\321\213\320\273\320\272\320\270.docx" differ