summaryrefslogtreecommitdiff
path: root/www/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'www/scripts')
-rw-r--r--www/scripts/main.js123
1 files changed, 113 insertions, 10 deletions
diff --git a/www/scripts/main.js b/www/scripts/main.js
index 0ed2cf5..79fb0b7 100644
--- a/www/scripts/main.js
+++ b/www/scripts/main.js
@@ -170,6 +170,21 @@ function AddSmallLink(node, text, func, id)
node.appendChild(anchor);
}
+function AddSmallLinkPrevNext(node, text, func, id, prev, next)
+{
+ var anchor = document.createElement("a");
+
+ anchor.href = "#";
+ anchor.onclick = func;
+ anchor.text = text;
+ anchor.className = "smalltext";
+ anchor.dataset.pmId = id;
+ anchor.dataset.pmPrevId = prev;
+ anchor.dataset.pmNextId = next;
+
+ node.appendChild(anchor);
+}
+
function AddSmallLinkUpDown(node, text, down_func, up_func, id)
{
var anchor = document.createElement("a");
@@ -197,7 +212,7 @@ function AddElement(node, elementname)
node.appendChild(elem);
}
-function AddRow(table, id, desc, username, password, rowcount)
+function AddRow(table, id, prev_id, next_id, desc, username, password, rowcount)
{
var tr = document.createElement("tr");
@@ -232,7 +247,26 @@ function AddRow(table, id, desc, username, password, rowcount)
AddText(td, "\u00a0");
AddText(td, "\u00a0");
AddSmallLinkUpDown(td, "Show", DoShow, DoHide, id);
+
+ if (next_id != -1 || prev_id != -1)
+ {
+ if (prev_id != -1)
+ {
+ AddText(td, "\u00a0");
+ AddText(td, "\u00a0");
+ AddSmallLinkPrevNext(td, "Up", DoUp, id, prev_id, next_id);
+ }
+
+ if (next_id != -1)
+ {
+ AddText(td, "\u00a0");
+ AddText(td, "\u00a0");
+ AddSmallLinkPrevNext(td, "Down", DoDown, id, prev_id, next_id);
+ }
+ }
+
AddElement(td, "br");
+
AddSmallLink(td, "Copy Username", DoCopyUsername, id);
AddText(td, "\u00a0");
AddText(td, "\u00a0");
@@ -244,6 +278,21 @@ function AddRow(table, id, desc, username, password, rowcount)
table.appendChild(tr);
}
+function GetGroupRows()
+{
+ var result = [];
+
+ for(var f = 0; f < globalDb.length; f++)
+ {
+ if (globalDb[f].group == globalCurrentGroup)
+ {
+ result.push(globalDb[f]);
+ }
+ }
+
+ return result;
+}
+
function LoadTable()
{
var table = document.getElementById("DataTable");
@@ -252,20 +301,34 @@ function LoadTable()
var rowcount = 0;
- for(var f = 0; f < globalDb.length; f++)
+ var rows = GetGroupRows();
+
+ for(var f = 0; f < rows.length; f++)
{
- if (globalDb[f].group == globalCurrentGroup)
+ var prevId = -1;
+ var nextId = -1;
+
+ if (f > 0)
{
- AddRow(table,
- globalDb[f].id,
- globalDb[f].description,
- globalDb[f].username,
- Decrypt(globalDb[f].password),
- rowcount++);
+ prevId = rows[f-1].id;
}
+
+ if (f < rows.length - 1)
+ {
+ nextId = rows[f+1].id;
+ }
+
+ AddRow(table,
+ rows[f].id,
+ prevId,
+ nextId,
+ rows[f].description,
+ rows[f].username,
+ Decrypt(rows[f].password),
+ rowcount++);
}
- AddRow(table, -1, "", "", "", rowcount++);
+ AddRow(table, -1, -1, -1, "", "", "", rowcount++);
}
function RefreshDataAsync()
@@ -466,4 +529,44 @@ function DoHide()
elem.type = "password";
}
+function DoReorderAsync()
+{
+ var response = JSON.parse(this.responseText);
+
+ if (response.error)
+ {
+ Error(response.error);
+ }
+ else
+ {
+ RefreshData();
+ }
+}
+
+function DoUp()
+{
+ var id = this.dataset.pmId;
+ var prev = this.dataset.pmPrevId;
+
+ WebRequest("reorder.php", DoReorderAsync,
+ [
+ "from_id", id,
+ "to_id", prev
+ ]
+ );
+}
+
+function DoDown()
+{
+ var id = this.dataset.pmId;
+ var next = this.dataset.pmNextId;
+
+ WebRequest("reorder.php", DoReorderAsync,
+ [
+ "from_id", id,
+ "to_id", next
+ ]
+ );
+}
+
// vim: sw=4 ts=4