BryanDavis has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/351164 )

Change subject: Update for Tool Labs membership application and processing
......................................................................

Update for Tool Labs membership application and processing

* Add css for sortable table columns
* Add js for notifications badge

Bug: T162508
Change-Id: I865d96558cc163315c9ddb798532cd9458125f43
---
A css/site.67fdda51f6d5.css
M css/site.css
A js/site.461860621f96.js
M js/site.js
A notifications/notify.a77b5d2fdd2d.js
A notifications/notify.js
M staticfiles.json
7 files changed, 346 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/labs/striker/staticfiles 
refs/changes/64/351164/1

diff --git a/css/site.67fdda51f6d5.css b/css/site.67fdda51f6d5.css
new file mode 100644
index 0000000..f74bf6c
--- /dev/null
+++ b/css/site.67fdda51f6d5.css
@@ -0,0 +1,146 @@
+.container {
+  width:auto;
+  max-width:1024px;
+  padding:0 1em;
+}
+.navbar-static-top {
+  margin-bottom:1em;
+}
+.navbar > .container .navbar-brand,
+.navbar > .container-fluid .navbar-brand {
+    padding:10px;
+}
+.user-image-large {
+  height:80px;
+  width:80px;
+}
+.user-image-small {
+  height:28px;
+  width:28px;
+}
+.login-panel {
+  margin-top:25%;
+}
+form.hidden-labels label {
+  height:1px;
+  left:-10000px;
+  overflow:hidden;
+  position:absolute;
+  top:auto;
+  width:1px;
+}
+form.hidden-labels label.no-hide {
+  height:initial;
+  left:initial;
+  overflow:initial;
+  position:initial;
+  top:initial;
+  width:initial;
+}
+.tools-maintainers,
+.tools-diffusion-repos {
+  -webkit-column-gap:2em;
+  -moz-column-gap:2em;
+  column-gap:2em;
+  -webkit-column-width:30ch;
+  -moz-column-width:30ch;
+  column-width:30ch;
+}
+.panel-pager .panel-title {
+  padding-top:.5em;
+}
+.panel-pager .panel-footer {
+  text-align:center;
+}
+.panel-pager .pagination {
+  margin:0;
+}
+.text-2x {
+  font-size:2em;
+}
+.text-5x {
+  font-size:5em;
+}
+.footer {
+  margin-top:2em;
+}
+.panel-body-warning {
+  background-color:#fcf8e3;
+  color:#8a6d3b;
+}
+.panel-success > .panel-heading > .text-muted {
+  color:inherit;
+}
+.margin-zero {
+  margin:0;
+}
+/* From http://stackoverflow.com/a/31967401/8171 */
+[data-toggle="collapse"].collapsed .if-not-collapsed {
+  display: none;
+}
+[data-toggle="collapse"]:not(.collapsed) .if-collapsed {
+  display: none;
+}
+.pubkey-view {
+  font-family:monospace;
+  font-size:smaller;
+  white-space:pre-wrap;
+  word-break:break-all;
+}
+#password-strength-meter {
+  font-size:smaller;
+  margin-bottom:15px;
+  margin-top:-10px;
+  overflow:hidden;
+  width:100%;
+}
+.password-strength-cell {
+  background-color:#eee;
+  color:#fff;
+  border:1px solid #ccc;
+  display:inline-block;
+  margin-left:1px;
+  text-align:center;
+}
+.hide {
+  display:none;
+}
+.zxcvbn-1 {
+  background-color:#d9534f;
+  border-color:#d43f3a;
+}
+.zxcvbn-2 {
+  background-color:#f0ad4e;
+  border-color:#eea236;
+}
+.zxcvbn-3 {
+  background-color:#5bc0de;
+  border-color:#46b8da;
+}
+.zxcvbn-4 {
+  background-color:#5cb85c;
+  border-color:#4cae4c;
+}
+.sortable {
+  color:inherit;
+  display:block;
+  position:relative;
+  padding-right:10px;
+}
+.sorted-asc:after,
+.sorted-desc:after {
+  content:' ';
+  position:absolute;
+  width:10px;
+  height:10px;
+  right:0;
+  border:8px solid transparent;
+}
+.sorted-asc:after {
+  border-bottom-color:#333;
+  bottom:25%;
+}
+.sorted-desc:after {
+  border-top-color:#333;
+  top:25%;
+}
diff --git a/css/site.css b/css/site.css
index e34ce18..f74bf6c 100644
--- a/css/site.css
+++ b/css/site.css
@@ -121,3 +121,26 @@
   background-color:#5cb85c;
   border-color:#4cae4c;
 }
+.sortable {
+  color:inherit;
+  display:block;
+  position:relative;
+  padding-right:10px;
+}
+.sorted-asc:after,
+.sorted-desc:after {
+  content:' ';
+  position:absolute;
+  width:10px;
+  height:10px;
+  right:0;
+  border:8px solid transparent;
+}
+.sorted-asc:after {
+  border-bottom-color:#333;
+  bottom:25%;
+}
+.sorted-desc:after {
+  border-top-color:#333;
+  top:25%;
+}
diff --git a/js/site.461860621f96.js b/js/site.461860621f96.js
new file mode 100644
index 0000000..5d029c7
--- /dev/null
+++ b/js/site.461860621f96.js
@@ -0,0 +1,13 @@
+/*!
+ * Copyright (c) 2016 Wikimedia Foundation and contributors.
+ * Licensed under the GPL v3+ license
+ */
+$(function () {
+    "use strict";
+    $('[data-toggle="tooltip"]').tooltip();
+
+    notify_badge_id='live_notify_badge';
+    notify_refresh_period=60000;
+    notify_api_url='/notifications/api/unread_count/';
+    register_notifier(fill_notification_badge);
+})
diff --git a/js/site.js b/js/site.js
index 9c0e03a..5d029c7 100644
--- a/js/site.js
+++ b/js/site.js
@@ -5,4 +5,9 @@
 $(function () {
     "use strict";
     $('[data-toggle="tooltip"]').tooltip();
+
+    notify_badge_id='live_notify_badge';
+    notify_refresh_period=60000;
+    notify_api_url='/notifications/api/unread_count/';
+    register_notifier(fill_notification_badge);
 })
diff --git a/notifications/notify.a77b5d2fdd2d.js 
b/notifications/notify.a77b5d2fdd2d.js
new file mode 100644
index 0000000..7e464a5
--- /dev/null
+++ b/notifications/notify.a77b5d2fdd2d.js
@@ -0,0 +1,78 @@
+var notify_badge_id;
+var notify_menu_id;
+var notify_api_url;
+var notify_fetch_count;
+var notify_unread_url;
+var notify_mark_all_unread_url;
+var notify_refresh_period = 15000;
+var consecutive_misfires = 0;
+var registered_functions = [];
+
+function fill_notification_badge(data) {
+    var badge = document.getElementById(notify_badge_id);
+    if (badge) {
+        badge.innerHTML = data.unread_count;
+    }
+}
+
+function fill_notification_list(data) {
+    var menu = document.getElementById(notify_menu_id);
+    if (menu) {
+        menu.innerHTML = "";
+        for (var i=0; i < data.unread_list.length; i++) {
+            var item = data.unread_list[i];
+            console.log(item)
+            var message = ""
+            if(typeof item.actor !== 'undefined'){
+                message = item.actor;
+            }
+            if(typeof item.verb !== 'undefined'){
+                message = message + " " + item.verb;
+            }
+            if(typeof item.target !== 'undefined'){
+                message = message + " " + item.target;
+            }
+            if(typeof item.timestamp !== 'undefined'){
+                message = message + " " + item.timestamp;
+            }
+
+            menu.innerHTML = menu.innerHTML + "<li>"+ message + "</li>";
+        }
+    }
+}
+
+function register_notifier(func) {
+    registered_functions.push(func);
+}
+
+function fetch_api_data() {
+    if (registered_functions.length > 0) {
+        //only fetch data if a function is setup
+        var r = new XMLHttpRequest();
+        r.open("GET", notify_api_url+'?max='+notify_fetch_count, true);
+        r.onreadystatechange = function () {
+            if (r.readyState != 4 || r.status != 200) {
+                consecutive_misfires++;
+            }
+            else {
+                consecutive_misfires = 0;
+                for (var i=0; i < registered_functions.length; i++) {
+                    var func = registered_functions[i];
+                    func(JSON.parse(r.responseText));
+                }
+            }
+        }
+        r.send();
+    }
+    if (consecutive_misfires < 10) {
+        setTimeout(fetch_api_data,notify_refresh_period);
+    } else {
+        var badge = document.getElementById(notify_badge_id);
+        if (badge) {
+            badge.innerHTML = "!";
+            badge.title = "Connection lost!"
+        }
+    }
+}
+
+setTimeout(fetch_api_data,1000);
\ No newline at end of file
diff --git a/notifications/notify.js b/notifications/notify.js
new file mode 100644
index 0000000..7e464a5
--- /dev/null
+++ b/notifications/notify.js
@@ -0,0 +1,78 @@
+var notify_badge_id;
+var notify_menu_id;
+var notify_api_url;
+var notify_fetch_count;
+var notify_unread_url;
+var notify_mark_all_unread_url;
+var notify_refresh_period = 15000;
+var consecutive_misfires = 0;
+var registered_functions = [];
+
+function fill_notification_badge(data) {
+    var badge = document.getElementById(notify_badge_id);
+    if (badge) {
+        badge.innerHTML = data.unread_count;
+    }
+}
+
+function fill_notification_list(data) {
+    var menu = document.getElementById(notify_menu_id);
+    if (menu) {
+        menu.innerHTML = "";
+        for (var i=0; i < data.unread_list.length; i++) {
+            var item = data.unread_list[i];
+            console.log(item)
+            var message = ""
+            if(typeof item.actor !== 'undefined'){
+                message = item.actor;
+            }
+            if(typeof item.verb !== 'undefined'){
+                message = message + " " + item.verb;
+            }
+            if(typeof item.target !== 'undefined'){
+                message = message + " " + item.target;
+            }
+            if(typeof item.timestamp !== 'undefined'){
+                message = message + " " + item.timestamp;
+            }
+
+            menu.innerHTML = menu.innerHTML + "<li>"+ message + "</li>";
+        }
+    }
+}
+
+function register_notifier(func) {
+    registered_functions.push(func);
+}
+
+function fetch_api_data() {
+    if (registered_functions.length > 0) {
+        //only fetch data if a function is setup
+        var r = new XMLHttpRequest();
+        r.open("GET", notify_api_url+'?max='+notify_fetch_count, true);
+        r.onreadystatechange = function () {
+            if (r.readyState != 4 || r.status != 200) {
+                consecutive_misfires++;
+            }
+            else {
+                consecutive_misfires = 0;
+                for (var i=0; i < registered_functions.length; i++) {
+                    var func = registered_functions[i];
+                    func(JSON.parse(r.responseText));
+                }
+            }
+        }
+        r.send();
+    }
+    if (consecutive_misfires < 10) {
+        setTimeout(fetch_api_data,notify_refresh_period);
+    } else {
+        var badge = document.getElementById(notify_badge_id);
+        if (badge) {
+            badge.innerHTML = "!";
+            badge.title = "Connection lost!"
+        }
+    }
+}
+
+setTimeout(fetch_api_data,1000);
\ No newline at end of file
diff --git a/staticfiles.json b/staticfiles.json
index d302ba4..187cd62 100644
--- a/staticfiles.json
+++ b/staticfiles.json
@@ -68,7 +68,7 @@
         "css/bootstrap.min.css.map": "css/bootstrap.min.css.a2e87599b1de.map",
         "css/font-awesome.css": "css/font-awesome.c223583b49df.css",
         "css/font-awesome.min.css": "css/font-awesome.min.008e0bb5ebfa.css",
-        "css/site.css": "css/site.d7a04844a910.css",
+        "css/site.css": "css/site.67fdda51f6d5.css",
         "fonts/FontAwesome.otf": "fonts/FontAwesome.0d2717cd5d85.otf",
         "fonts/fontawesome-webfont.eot": 
"fonts/fontawesome-webfont.674f50d287a8.eot",
         "fonts/fontawesome-webfont.eot?v=4.7.0": 
"fonts/fontawesome-webfont.674f50d287a8.eot?v=4.7.0",
@@ -98,8 +98,9 @@
         "js/parsley.min.js": "js/parsley.min.9423fbd825cc.js",
         "js/parsley.min.js.map": "js/parsley.min.js.5b8729e5acc1.map",
         "js/password-strength.js": "js/password-strength.70c410d81a0c.js",
-        "js/site.js": "js/site.99b043ec732b.js",
+        "js/site.js": "js/site.461860621f96.js",
         "js/zxcvbn.min.js": "js/zxcvbn.min.91785aac00c6.js",
+        "notifications/notify.js": "notifications/notify.a77b5d2fdd2d.js",
         "robots.txt": "robots.f71d20196d4c.txt"
     },
     "version": "1.0"

-- 
To view, visit https://gerrit.wikimedia.org/r/351164
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I865d96558cc163315c9ddb798532cd9458125f43
Gerrit-PatchSet: 1
Gerrit-Project: labs/striker/staticfiles
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <bda...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to