TabsManager

Сделанный на коленке плагин для работы со вкладками.браузера 1)

1/24/2019 11:24:26 PM

Details

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
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
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
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());
+	
+}
+
+
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