2// @name _falkon_restore
4// @include falkon:restore
10var selectedRow = null;
12function selectRow(row)
15 selectedRow.className = selectedRow.className.replace(/\bselected\b/, "");
18 row.className = row.className + " selected";
22function forEachInput(f)
24 var inputs = document.getElementsByTagName("input");
25 for (var i = 0; i < inputs.length; ++i) {
30function toggleWindow(e)
32 var win = e.getAttribute("data-window");
34 forEachInput(function(input) {
35 if (input.getAttribute("data-window") == win) {
36 input.checked = e.checked;
43 var win = e.getAttribute("data-window");
44 var winElement = null;
48 forEachInput(function(input) {
49 if (input.getAttribute("data-window") != win) {
52 if (!input.hasAttribute("data-tab")) {
62 if (checked == total) {
63 winElement.checked = true;
64 winElement.indeterminate = false;
65 } else if (checked > 0) {
66 winElement.indeterminate = true;
68 winElement.checked = false;
69 winElement.indeterminate = false;
73function startNewSession()
75 document.getElementById("start-new-session-button").disabled = true;
76 external.recovery.startNewSession();
79function restoreSession()
81 document.getElementById("restore-session-button").disabled = true;
86 forEachInput(function(input) {
87 if (input.checked || input.indeterminate || !input.hasAttribute("data-tab")) {
90 excludeWin.unshift(input.getAttribute("data-window"));
91 excludeTab.unshift(input.getAttribute("data-tab"));
94 external.recovery.restoreSession(excludeWin, excludeTab);
97function addWindow(winId)
99 var tr = document.createElement("tr");
100 tr.className = "window";
101 tr.onclick = function() { selectRow(tr); };
102 var td = document.createElement("td");
103 var input = document.createElement("input");
104 input.type = "checkbox";
105 input.checked = true;
106 input.setAttribute("data-window", winId);
107 input.onclick = function() { toggleWindow(input); };
108 var span = document.createElement("span");
109 span.innerText = scriptData.window + " " + (winId + 1);
112 td.appendChild(input);
113 td.appendChild(span);
115 document.getElementById("recovery-items").appendChild(tr);
118function addTab(winId, tab)
120 var tr = document.createElement("tr");
121 tr.className = "tab";
123 tr.onclick = function() { selectRow(tr); };
124 var td = document.createElement("td");
125 var input = document.createElement("input");
126 input.type = "checkbox";
127 input.checked = true;
128 input.setAttribute("data-window", winId);
129 input.setAttribute("data-tab", tab.tab);
130 input.onclick = function() { toggleTab(input); };
131 var img = document.createElement("img");
133 var span = document.createElement("span");
134 span.innerText = tab.title;
137 span.innerText = "🖈 " + span.innerText;
140 span.style.fontStyle = 'italic';
144 td.appendChild(input);
146 td.appendChild(span);
148 document.getElementById("recovery-items").appendChild(tr);
153 scriptData = document.getElementById("script-data").dataset;
155 document.getElementById("start-new-session-button").onclick = function() {
160 document.getElementById("restore-session-button").onclick = function() {
165 var data = external.recovery.restoreData;
166 for (var i = 0; i < data.length; ++i) {
168 addWindow(win.window);
169 for (var j = 0; j < win.tabs.length; ++j) {
170 var tab = win.tabs[j];
171 addTab(win.window, tab);
177if (window._falkon_external) {
180 document.addEventListener("_falkon_external_created", init);