diff options
| -rw-r--r-- | bucky/search/search.js | 11 | ||||
| -rw-r--r-- | public/assets/css/bucky.css | 103 | ||||
| -rw-r--r-- | public/assets/js/lib/views/index/threadform.js | 1 | ||||
| -rw-r--r-- | public/assets/js/lib/views/search/results.js | 3 | ||||
| -rw-r--r-- | public/assets/js/util/format.js | 7 | ||||
| -rw-r--r-- | views/pages/index.ejs | 8 |
6 files changed, 82 insertions, 51 deletions
diff --git a/bucky/search/search.js b/bucky/search/search.js index 4818ef9..6e1fd01 100644 --- a/bucky/search/search.js +++ b/bucky/search/search.js @@ -2,15 +2,10 @@ var db = require('../db') var bdb = require('./bdb')('search') var STOPWORDS = require('./stopwords') -var wordRegexp = new RegExp("(\W+)"); -var wordBoundaryRegexp = new RegExp("\W"); +var wordRegexp = new RegExp("[^a-z0-9]+", 'g'); function parse_terms (s) { - return s.toLowerCase().split(wordRegexp).filter((term) => { - if (! term.match(wordBoundaryRegexp)) { - return true - } - return false - }) +console.log(s, wordRegexp) + return s.toLowerCase().split(wordRegexp).filter((term) => !!term) } function cmp (a,b){ return (a<b)?-1:(a===b)?0:1 } diff --git a/public/assets/css/bucky.css b/public/assets/css/bucky.css index b8a4d1a..3950585 100644 --- a/public/assets/css/bucky.css +++ b/public/assets/css/bucky.css @@ -7,7 +7,7 @@ body { font-size: 10px; font-family: Trebuchet MS, Helvetica, Arial, sans-serif; padding: 20px 30px; - transition: opacity 200ms; + transition: opacity 100ms; } body.loading { opacity: 0; @@ -202,6 +202,9 @@ table, tr { color: #444; text-decoration: none; } +.desktop .ledger .row td:nth-child(1) a:hover { + text-decoration: underline; +} .ledger .row td:nth-child(2) { text-align: left; font-family: Georgia, serif; @@ -225,69 +228,69 @@ table, tr { } tr:nth-child(odd).file td { background-color: #e6f0f0; } -tr:nth-child(odd).file:hover td { background-color: #d8e0ec; color: #000000; } +.desktop tr:nth-child(odd).file:hover td { background-color: #d8e0ec; color: #000000; } tr:nth-child(even).file td { background-color: #e0e8e8; } -tr:nth-child(even).file:hover td { background-color: #d8e0ec; color: #000000; } +.desktop tr:nth-child(even).file:hover td { background-color: #d8e0ec; color: #000000; } tr:nth-child(odd) td.row { background-color: #e6f0f0; } -tr:nth-child(odd) td.row:hover { background-color: #d8e0ec; color: #000000; } +.desktop tr:nth-child(odd) td.row:hover { background-color: #d8e0ec; color: #000000; } tr:nth-child(even) td.row { background-color: #e0e8e8; } -tr:nth-child(even) td.row:hover { background-color: #d8e0ec; color: #000000; } +.desktop tr:nth-child(even) td.row:hover { background-color: #d8e0ec; color: #000000; } tr:nth-child(odd) td.plain{ background-color: #d0dBe8; border-bottom: 1px solid #d3d3d0; } -tr:nth-child(odd) td.plain:hover { background-color: #d7e4f0; color: #000000; border-bottom-color: #d3d3d0; } +.desktop tr:nth-child(odd) td.plain:hover { background-color: #d7e4f0; color: #000000; border-bottom-color: #d3d3d0; } tr:nth-child(even) td.plain { background-color: #edf8f6; border-bottom-color: #d3d3d0; } -tr:nth-child(even) td.plain:hover { background-color: #f3fafa; color: #000000; border-bottom-color: #ded2dd; } +.desktop tr:nth-child(even) td.plain:hover { background-color: #f3fafa; color: #000000; border-bottom-color: #ded2dd; } tr:nth-child(odd) td.ivory{ background-color: #e0e0d8; border-bottom-color: #d3d3d0; } -tr:nth-child(odd) td.ivory:hover { background-color: #f8f0e9; color: #000000; border-bottom-color: #d3d3d0; } +.desktop tr:nth-child(odd) td.ivory:hover { background-color: #f8f0e9; color: #000000; border-bottom-color: #d3d3d0; } tr:nth-child(even) td.ivory { background-color: #f0f0ea; border-bottom-color: #d3d3d0; } -tr:nth-child(even) td.ivory:hover { background-color: #f8f0e9; color: #000000; border-bottom-color: #d3d3d0; } +.desktop tr:nth-child(even) td.ivory:hover { background-color: #f8f0e9; color: #000000; border-bottom-color: #d3d3d0; } tr:nth-child(odd) td.tan { background-color: #e1e1bf; border-bottom-color: #ced2cd; } -tr:nth-child(odd) td.tan:hover { background-color: #f7f6ed; color: #000000; border-bottom-color: #ced2cd; } +.desktop tr:nth-child(odd) td.tan:hover { background-color: #f7f6ed; color: #000000; border-bottom-color: #ced2cd; } tr:nth-child(even) td.tan { background-color: #f0eddf; border-bottom-color: #ced2cd; } -tr:nth-child(even) td.tan:hover { background-color: #f7f6ed; color: #000000; border-bottom-color: #ced2cd; } +.desktop tr:nth-child(even) td.tan:hover { background-color: #f7f6ed; color: #000000; border-bottom-color: #ced2cd; } tr:nth-child(odd) td.red { background-color: #fcc7c2; border-bottom-color: #E8B1AC; } -tr:nth-child(odd) td.red:hover { background-color: #FFACB2; color: #000000; border-bottom-color: #E8B1AC; } +.desktop tr:nth-child(odd) td.red:hover { background-color: #FFACB2; color: #000000; border-bottom-color: #E8B1AC; } tr:nth-child(even) td.red { background-color: #fde1df; border-bottom-color: #E8B1AC; } -tr:nth-child(even) td.red:hover { background-color: #FFACB2; color: #000000; border-bottom-color: #E8B1AC; } +.desktop tr:nth-child(even) td.red:hover { background-color: #FFACB2; color: #000000; border-bottom-color: #E8B1AC; } tr:nth-child(odd) td.orange { background-color: #F8E0C6; border-bottom-color: #F5D1AA; } -tr:nth-child(odd) td.orange:hover{ background-color: #FFD799; color: #000000; border-bottom-color: #F5D1AA; } +.desktop tr:nth-child(odd) td.orange:hover{ background-color: #FFD799; color: #000000; border-bottom-color: #F5D1AA; } tr:nth-child(even) td.orange { background-color: #FBEEE1; border-bottom-color: #F5D1AA; } -tr:nth-child(even) td.orange:hover{ background-color: #FFD799; color: #000000; border-bottom-color: #F5D1AA; } +.desktop tr:nth-child(even) td.orange:hover{ background-color: #FFD799; color: #000000; border-bottom-color: #F5D1AA; } tr:nth-child(odd) td.yellow { background-color: #FAFDC2; border-bottom-color: #CED3D2; } -tr:nth-child(odd) td.yellow:hover{ background-color: #FFF7A8; color: #000000; border-bottom-color: #CED3D2; } +.desktop tr:nth-child(odd) td.yellow:hover{ background-color: #FFF7A8; color: #000000; border-bottom-color: #CED3D2; } tr:nth-child(even) td.yellow { background-color: #FDFEDF; border-bottom-color: #CED3D2; } -tr:nth-child(even) td.yellow:hover{ background-color: #FFF7A8; color: #000000; border-bottom-color: #CED3D2; } +.desktop tr:nth-child(even) td.yellow:hover{ background-color: #FFF7A8; color: #000000; border-bottom-color: #CED3D2; } tr:nth-child(odd) td.green { background-color: #E6FFCC; border-bottom-color: #AFD8AB; } -tr:nth-child(odd) td.green:hover { background-color: #d8F4b4; color: #000000; border-bottom-color: #AFD8AB; } +.desktop tr:nth-child(odd) td.green:hover { background-color: #d8F4b4; color: #000000; border-bottom-color: #AFD8AB; } tr:nth-child(even) td.green { background-color: #F0FFE2; border-bottom-color: #AFD8AB; } -tr:nth-child(even) td.green:hover { background-color: #d4eeb0; color: #000000; border-bottom-color: #AFD8AB; } +.desktop tr:nth-child(even) td.green:hover { background-color: #d4eeb0; color: #000000; border-bottom-color: #AFD8AB; } tr:nth-child(odd) td.blue { background-color: #ddE2FF; border-bottom-color: #c9c9F5; } -tr:nth-child(odd) td.blue:hover { background-color: #cac8fe; color: #000000; border-bottom-color: #c9c9F5; } +.desktop tr:nth-child(odd) td.blue:hover { background-color: #cac8fe; color: #000000; border-bottom-color: #c9c9F5; } tr:nth-child(even) td.blue { background-color: #ebefff; border-bottom-color: #c9c9F5; } -tr:nth-child(even) td.blue:hover { background-color: #cac8fe; color: #000000; border-bottom-color: #c9c9F5; } +.desktop tr:nth-child(even) td.blue:hover { background-color: #cac8fe; color: #000000; border-bottom-color: #c9c9F5; } tr:nth-child(odd) td.purple { background-color: #E0CBF4; border-bottom-color: #D6A9EA; } -tr:nth-child(odd) td.purple:hover{ background-color: #DDB1FF; color: #000000; border-bottom-color: #D6A9EA; } +.desktop tr:nth-child(odd) td.purple:hover{ background-color: #DDB1FF; color: #000000; border-bottom-color: #D6A9EA; } tr:nth-child(even) td.purple { background-color: #EFE4F9; border-bottom-color: #D6A9EA; } -tr:nth-child(even) td.purple:hover{ background-color: #DDB1FF; color: #000000; border-bottom-color: #D6A9EA; } +.desktop tr:nth-child(even) td.purple:hover{ background-color: #DDB1FF; color: #000000; border-bottom-color: #D6A9EA; } tr:nth-child(odd) td.pink { background-color: #F1CDE4; border-bottom-color: #E8ABD2; } -tr:nth-child(odd) td.pink:hover { background-color: #FFAECD; color: #000000; border-bottom-color: #E8ABD2; } +.desktop tr:nth-child(odd) td.pink:hover { background-color: #FFAECD; color: #000000; border-bottom-color: #E8ABD2; } tr:nth-child(even) td.pink { background-color: #F8E5F1; border-bottom-color: #E8ABD2; } -tr:nth-child(even) td.pink:hover { background-color: #FFAECD; color: #000000; border-bottom-color: #E8ABD2; } +.desktop tr:nth-child(even) td.pink:hover { background-color: #FFAECD; color: #000000; border-bottom-color: #E8ABD2; } tr:nth-child(odd) td.black { background-color: #ccc; border-bottom-color: #aaa; } -tr:nth-child(odd) td.black:hover { background-color: #f8f8f8; color: #000000; border-bottom-color: #aaa; } +.desktop tr:nth-child(odd) td.black:hover { background-color: #f8f8f8; color: #000000; border-bottom-color: #aaa; } tr:nth-child(even) td.black { background-color: #eee; border-bottom-color: #aaa; } -tr:nth-child(even) td.black:hover { background-color: #f8f8f8; color: #000000; border-bottom-color: #aaa; } +.desktop tr:nth-child(even) td.black:hover { background-color: #f8f8f8; color: #000000; border-bottom-color: #aaa; } .new { color: #000000; font-weight: bold; } .recent { color: #001111; } @@ -314,7 +317,7 @@ tr:nth-child(even) td.black:hover { background-color: #f8f8f8; color: #000000; } .comment { - padding: 8px 8px 8px 8px; + padding: 10px; border-bottom: 1px solid #ccc; border-left: 1px solid #ccc; border-right: 1px solid #ccc; @@ -345,16 +348,37 @@ tr:nth-child(even) td.black:hover { background-color: #f8f8f8; color: #000000; } .comment div { font-size: 12px; - padding-top: 3px; - padding-bottom: 20px; + padding-top: 0px; + padding-bottom: 3px; } -.comment .date { +.comment .edit-links { float: right; } +.comment .date, .comment .edit-links { + color: #d8cfcf; + opacity: 0; + transition: opacity 0.1s; +} +.desktop .comment:hover .date, +.mobile .date, +.desktop .comment:hover .edit-links, +.mobile .edit-links { + opacity: 1; +} +.edit-links { +} +.comment .edit-links a { + color: #8f8ff8; +} +.desktop .comment .edit-links a:hover { + color: #11f; } -tr:nth-child(even) td.comment { background-color: #f3f1f2; } -tr:nth-child(odd) td.comment { background-color: #fcf8f8; } +.comment img { + max-width: 100%; +} +tr:nth-child(2n) td.comment { background-color: #f3f1f2; } +tr:nth-child(2n+1) td.comment { background-color: #fcf8f8; } code { display: block; @@ -442,7 +466,8 @@ code br { opacity: 1; } -#files, #files tr { +#files, +#files tr { margin: 0; padding: 0; border-spacing: 0; } @@ -451,7 +476,7 @@ code br { margin-bottom: 10px; } #files td { - padding: 3px 3px; + padding: 5px; font-size: 11px; } #files td:first-child { @@ -459,12 +484,15 @@ code br { } #files td:first-child a { display: block; - padding: 3px; + padding: 5px; } #files .user a { text-decoration: none; color: #333; } +.desktop #files user a:hover { + text-decoration: underline; +} #files td:first-child { text-align: left; } @@ -478,6 +506,9 @@ code br { #files .playing:before { content: "> "; } +#files tr.total td:first-child { + padding: 5px; +} #gallery { width: 100%; diff --git a/public/assets/js/lib/views/index/threadform.js b/public/assets/js/lib/views/index/threadform.js index 0fd149c..7a8e8ed 100644 --- a/public/assets/js/lib/views/index/threadform.js +++ b/public/assets/js/lib/views/index/threadform.js @@ -28,6 +28,7 @@ var ThreadForm = FormView.extend({ }) var sorted = Object.keys(tags).sort().map(kw => tags[kw]) this.$('[name=keyword]').append(sorted) + $("body").removeClass('loading') }.bind(this)) }, diff --git a/public/assets/js/lib/views/search/results.js b/public/assets/js/lib/views/search/results.js index d01db96..885d3b7 100644 --- a/public/assets/js/lib/views/search/results.js +++ b/public/assets/js/lib/views/search/results.js @@ -35,6 +35,9 @@ var SearchResults = View.extend({ this.$(".next_page").toggle(res.meta.start + res.meta.limit > res.meta.count) this.$(".next_page").attr("href", querystring(next_page)) res.results.forEach((result) => { + if (! result.thread) { + return + } var image if (result.file && is_image(result.file.filename)) { image = result.file diff --git a/public/assets/js/util/format.js b/public/assets/js/util/format.js index a185b33..bfabfc3 100644 --- a/public/assets/js/util/format.js +++ b/public/assets/js/util/format.js @@ -1,3 +1,10 @@ +var is_iphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) +var is_ipad = (navigator.userAgent.match(/iPad/i)) +var is_android = (navigator.userAgent.match(/Android/i)) +var is_mobile = is_iphone || is_ipad || is_android +var is_desktop = ! is_mobile; +document.body.classList.add(is_desktop ? 'desktop' : 'mobile'); + function commatize (n) { var nums = [], i, counter = 0, r = Math.floor if (n > 1024) { diff --git a/views/pages/index.ejs b/views/pages/index.ejs index 06a084c..37f828e 100644 --- a/views/pages/index.ejs +++ b/views/pages/index.ejs @@ -21,13 +21,7 @@ </form> </div> - <div class="bluebox"> - <a href="/post">new post</a> | - <a href="/mail">inbox</a> | - <a href="/message">message</a> | - <a href="/profile">profile</a> | - <a href="/logout">logout</a> - </div> + <span class="lastlog bluebox"> <script class="template" type="text/html"> <a href="/profile/{{username}}">{{username}}</a> |
