march mode list is loaded and works, now just need to filter it
[citadel.git] / webcit-ng / static / js / main.js
index 31e7ad0ba435eda3d6018b50dbc31c2cd35e94b3..5f02ec0c3e2a02479eb4a17d8e6cbbfbc26115dd 100644 (file)
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2016-2017 by the citadel.org team
+// Copyright (c) 2016-2018 by the citadel.org team
 //
 // This program is open source software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License version 3.
@@ -18,6 +18,9 @@ var current_view = 0;
 var logged_in = 0;
 var current_user = _("Not logged in.");
 var serv_info;
+var last_seen = 0;
+var messages_per_page = 20;
+var march_list = [] ;
 
 
 // Placeholder for when we add i18n later
@@ -30,7 +33,7 @@ function _(x) {
 // Useful for generating one-time-use div names
 //
 function randomString(length) {
-       var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
+       var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz'.split('');
 
        if (! length) {
                length = Math.floor(Math.random() * chars.length);
@@ -112,7 +115,7 @@ function ctdl_startup_2(data) {
 // Display a room list in the main div.
 //
 function display_room_list() {
-       document.getElementById("sidebar").innerHTML = "<img src=\"/ctdl/s/throbber.gif\" />" ;         // show throbber while loading
+       document.getElementById("roomlist").innerHTML = "<img src=\"/ctdl/s/throbber.gif\" />" ;                // show throbber while loading
 
        var request = new XMLHttpRequest();
        request.open("GET", "/ctdl/r/", true);
@@ -138,23 +141,23 @@ function display_room_list_renderer(data) {
                return(a.name < b.name);
        });
 
-       new_sidebar_text = "<ul>" ;
+       new_roomlist_text = "<ul>" ;
 
        for (var i in data) {
                if (i > 0) {
                        if (data[i].floor != data[i-1].floor) {
-                               new_sidebar_text = new_sidebar_text + "<li class=\"divider\"></li>" ;
+                               new_roomlist_text = new_roomlist_text + "<li class=\"divider\"></li>" ;
                        }
                }
-               new_sidebar_text = new_sidebar_text +
+               new_roomlist_text = new_roomlist_text +
                        "<li>"
                        + "<a href=\"javascript:gotoroom('" + escapeJS(escapeHTML(data[i].name)) + "');\">"
                        + escapeHTML(data[i].name)
                        + "</a></li>"
                ;
        }
-       new_sidebar_text = new_sidebar_text + "</ul>";
-       document.getElementById("sidebar").innerHTML = new_sidebar_text ;
+       new_roomlist_text = new_roomlist_text + "</ul>";
+       document.getElementById("roomlist").innerHTML = new_roomlist_text ;
 }
 
 // Update the "banner" div with all relevant info.
@@ -163,6 +166,7 @@ function update_banner() {
        detect_logged_in();
        if (current_room) {
                document.getElementById("ctdl_banner_title").innerHTML = current_room;
+               document.title = current_room;
        }
        else {
                document.getElementById("ctdl_banner_title").innerHTML = serv_info.serv_humannode;
@@ -196,6 +200,45 @@ function gotoroom_2(data) {
        total_messages = data.total_messages;
        current_view = data.current_view;
        default_view = data.default_view;
+       last_seen = data.last_seen;
        update_banner();
-       render_room_view();
+       render_room_view(0, 9999999999);
+}
+
+
+// Goto next room with unread messages
+//
+function gotonext() {
+       console.log("march list contains " + march_list.length );
+       if (march_list.length == 0) {
+               load_new_march_list();
+               march_list = [ 
+                       {"rorder":0,"name":"CitaNews","known":true,"hasnewmsgs":true,"floor":0} ,
+                       {"rorder":0,"name":"Hot Rodding","known":true,"hasnewmsgs":true,"floor":0} ,
+                       {"rorder":0,"name":"_BASEROOM_","known":true,"hasnewmsgs":true,"floor":0} ,
+               ] ;
+               // FIXME load the room list then start over, probably ok to recurse
+       }
+       else {
+               next_room = march_list[0].name;
+               march_list.splice(0, 1);
+               console.log("going to " + next_room);
+               gotoroom(next_room);
+       }
+}
+
+
+// Called by gotonext() when the march list is empty.
+//
+function load_new_march_list() {
+       var request = new XMLHttpRequest();
+       request.open("GET", "/ctdl/r/", true);
+       request.onreadystatechange = function() {
+               if ((this.readyState === 4) && ((this.status / 100) == 2)) {
+                       march_list = (JSON.parse(this.responseText));
+                       gotonext();             // yes , we recurse right back  FIXME sort and filter this data
+               }
+       };
+       request.send();
+       request = null;
 }