diff --git a/js/longtable/longtable.js b/js/longtable/longtable.js index b557d5c5..36cd8e20 100644 --- a/js/longtable/longtable.js +++ b/js/longtable/longtable.js @@ -28,14 +28,24 @@ $.fn.longtable = function(fields, options, data) { } else { el = $(""); - if (fields[field].fmt) { // Special formatting? + if (fields[field].fmt) { + // Apply ad-hoc formatting. el.html(fields[field].fmt(data[id])); } else { el.html(data[id][field]); } } + + if (fields[field].handle_longwords) { + el.css("word-break", "break-all"); + } + + if (fields[field].max_width) { + el.css("max-width", fields[field].max_width); + } el.css("width", fields[field].width); + return el; }, _gen_tr: function(id) { @@ -61,7 +71,6 @@ $.fn.longtable = function(fields, options, data) { $(elem).trigger("new-row", [data[id], el]); shown_rows[id] = true; }, - _sort_by: function(field) { if (field !== undefined) { if (sorted_by == field) { @@ -74,22 +83,18 @@ $.fn.longtable = function(fields, options, data) { } lt.sort_by(sorted_by, sorted_reverse); }, - _apply_filter: function() { - data = data.filter(filter); + data = data.filter(filter); }, _reset_data: function() { data = orig_data; }, - - set_filter: function(f) { filter = f; lt._reset_data(); lt._apply_filter(); lt._sort_by(); }, - sort_by: function(field, reverse) { if (field !== undefined) { sorted_by = field; @@ -103,7 +108,6 @@ $.fn.longtable = function(fields, options, data) { lt.update_data(); }, - update_viewport: function() { var first = $(window).scrollTop() - $(elem).offset().top - options.row_h; var last = first + $(window).height(); @@ -111,11 +115,12 @@ $.fn.longtable = function(fields, options, data) { first = Math.floor(first / options.row_h); last = Math.ceil (last / options.row_h); - first = first < 0 ? 0 : first; + first = first < 1 ? 1 : first; last = last >= data.length ? data.length - 1 : last; $.each(shown_rows, function(id) { - if (id < first || id > last) { + // Remove only the rows after. + if (id > last) { lt._remove(id); } }); @@ -124,20 +129,14 @@ $.fn.longtable = function(fields, options, data) { if (!shown_rows[id]) lt._insert(id); } }, - update_data: function() { - lt._clean(); lt.update_viewport(); }, - get_data: function() { return data; }, - - destroy: function() { - }, - + destroy: function() {}, // http://web.archive.org/web/20130826203933/http://my.opera.com/GreyWyvern/blog/show.dml/1671288 sort_alphanum: function(a, b) { function chunkify(t) { @@ -170,12 +169,10 @@ $.fn.longtable = function(fields, options, data) { // End of foreign code }; - - lt._gen_tr().appendTo(elem); lt.update_data(); $(window).on("scroll resize", lt.update_viewport); return lt; -}; +}; \ No newline at end of file diff --git a/js/mod/ban-list.js b/js/mod/ban-list.js index 7e5fdac0..a0bc4803 100644 --- a/js/mod/ban-list.js +++ b/js/mod/ban-list.js @@ -2,7 +2,6 @@ var banlist_init = function(token, my_boards, inMod) { inMod = !inMod; var lt; - var selected = {}; var time = function() { return Date.now()/1000|0; } @@ -33,46 +32,46 @@ var banlist_init = function(token, my_boards, inMod) { } if (inMod && f.single_addr && !f.masked) { - return pre+""+f.mask+""; - } - return pre+f.mask; + return pre+""+f.mask+""; + } + return pre+f.mask; } }, - reason: {name: _("Reason"), width: "calc(100% - 715px - 6 * 4px)", fmt: function(f) { - var add = "", suf = ''; + reason: {name: _("Reason"), width: "40%", max_width: "40%", handle_longwords: true, fmt: function(f) { + var add = "", suf = ''; if (f.seen == 1) add += ""; - if (f.message) { - add += ""; - suf = "

"+_("Message:")+"
"+f.message; - } + if (f.message) { + add += ""; + suf = "

"+_("Message:")+"
"+f.message; + } - if (add) { add = "
"+add+"
"; } + if (add) { add = "
"+add+"
"; } if (f.reason) return add + f.reason + suf; else return add + "-" + suf; } }, board: {name: _("Board"), width: "60px", fmt: function(f) { if (f.board) return "/"+f.board+"/"; - else return ""+_("all")+""; + else return ""+_("all")+""; } }, created: {name: _("Set"), width: "100px", fmt: function(f) { return ago(f.created) + _(" ago"); // in AGO form } }, // duration? expires: {name: _("Expires"), width: "235px", fmt: function(f) { - if (!f.expires || f.expires == 0) return ""+_("never")+""; + if (!f.expires || f.expires == 0) return ""+_("never")+""; return strftime(window.post_date, new Date((f.expires|0)*1000), datelocale) + ((f.expires < time()) ? "" : " "+_("in ")+until(f.expires|0)+""); } }, username: {name: _("Staff"), width: "100px", fmt: function(f) { - var pre='',suf='',un=f.username; - if (inMod && f.username && f.username != '?' && !f.vstaff) { - pre = ""; - suf = ""; - } - if (!f.username) { - un = ""+_("system")+""; - } - return pre + un + suf; + var pre='',suf='',un=f.username; + if (inMod && f.username && f.username != '?' && !f.vstaff) { + pre = ""; + suf = ""; + } + if (!f.username) { + un = ""+_("system")+""; + } + return pre + un + suf; } } }, {}, t); @@ -92,22 +91,22 @@ var banlist_init = function(token, my_boards, inMod) { var fields = ["mask", "reason", "board", "staff", "message"]; var ret_false = false; - terms.forEach(function(t) { + terms.forEach(function(t) { var fs = fields; - var re = /^(mask|reason|board|staff|message):/, ma; + var re = /^(mask|reason|board|staff|message):/, ma; if (ma = t.match(re)) { fs = [ma[1]]; - t = t.replace(re, ""); - } - - var found = false - fs.forEach(function(f) { - if (e[f] && e[f].indexOf(t) !== -1) { - found = true; - } - }); - if (!found) ret_false = true; + t = t.replace(re, ""); + } + + var found = false + fs.forEach(function(f) { + if (e[f] && e[f].indexOf(t) !== -1) { + found = true; + } + }); + if (!found) ret_false = true; }); if (ret_false) return false; @@ -133,25 +132,5 @@ var banlist_init = function(token, my_boards, inMod) { $(".banform").off("submit").submit(); }); - - if (device_type == 'desktop') { - // Stick topbar - var stick_on = $(".banlist-opts").offset().top; - var state = true; - $(window).on("scroll resize", function() { - if ($(window).scrollTop() > stick_on && state == true) { - $("body").css("margin-top", $(".banlist-opts").height()); - $(".banlist-opts").addClass("boardlist top").detach().prependTo("body"); - $("#banlist tr:not(.row)").addClass("tblhead").detach().appendTo(".banlist-opts"); - state = !state; - } - else if ($(window).scrollTop() < stick_on && state == false) { - $("body").css("margin-top", "auto"); - $(".banlist-opts").removeClass("boardlist top").detach().prependTo(".banform"); - $(".tblhead").detach().prependTo("#banlist"); - state = !state; - } - }); - } }); } diff --git a/stylesheets/longtable/longtable.css b/stylesheets/longtable/longtable.css index 09d9a0ab..17f287fa 100644 --- a/stylesheets/longtable/longtable.css +++ b/stylesheets/longtable/longtable.css @@ -1,26 +1,28 @@ .longtable { - display: block; position: relative; box-sizing: border-box; + display: table; + table-layout: fixed; + width: 100%; } .longtable > tbody { - display: block; box-sizing: border-box; + display: block; } .longtable > tbody > tr { - display: block; box-sizing: border-box; clear: left; width: 100%; } .longtable > tbody > tr > td { - display: block; + display: table; box-sizing: border-box; float: left; padding: 0; + word-break: break-word; } .longtable > tbody > tr > th { - display: block; + *display: table; box-sizing: border-box; float: left; padding: 0; @@ -28,4 +30,3 @@ .longtable > tbody > tr > th.sortable { cursor: pointer; } -