diff options
author | Wu Cheng-Han | 2015-10-22 17:09:55 +0800 |
---|---|---|
committer | Wu Cheng-Han | 2015-10-22 17:09:55 +0800 |
commit | 2cfcae6db2ae306a14a23317b40ad04924ff7ec6 (patch) | |
tree | 7e64d91b8af28a3bcc0f78504e490c741ed28b2a | |
parent | 5ed395122d3862b1e5ed84784b4205d30a407849 (diff) |
Support pinning note in history
-rw-r--r-- | public/css/cover.css | 16 | ||||
-rw-r--r-- | public/js/cover.js | 61 | ||||
-rw-r--r-- | public/js/history.js | 15 |
3 files changed, 85 insertions, 7 deletions
diff --git a/public/css/cover.css b/public/css/cover.css index 26cc8d5f..0a731cd2 100644 --- a/public/css/cover.css +++ b/public/css/cover.css @@ -257,6 +257,22 @@ input { .ui-history-close:hover { opacity: 1; } +.ui-history-pin { + position: absolute; + left: 14px; + top: 15px; + font-size: 16px; + opacity: 0.2; + transition: opacity 0.2s ease-in-out; + -webkit-transition: opacity 0.2s ease-in-out; +} +.item:hover .ui-history-pin:hover { + opacity: 1; +} +.item .ui-history-pin.active { + opacity: 1; + color: #d43f3a; +} .ui-or { margin-top: 5px; margin-bottom: 5px; diff --git a/public/js/cover.js b/public/js/cover.js index 567d6422..f2f3ae91 100644 --- a/public/js/cover.js +++ b/public/js/cover.js @@ -1,9 +1,10 @@ var options = { - valueNames: ['id', 'text', 'timestamp', 'fromNow', 'time', 'tags'], + valueNames: ['id', 'text', 'timestamp', 'fromNow', 'time', 'tags', 'pinned'], item: '<li class="col-xs-12 col-sm-6 col-md-6 col-lg-4">\ <span class="id" style="display:none;"></span>\ <a href="#">\ <div class="item">\ + <div class="ui-history-pin fa fa-thumb-tack fa-fw"></div>\ <div class="ui-history-close fa fa-close fa-fw" data-toggle="modal" data-target=".delete-modal"></div>\ <div class="content">\ <h4 class="text"></h4>\ @@ -83,17 +84,41 @@ function checkHistoryList() { function parseHistoryCallback(list, notehistory) { checkHistoryList(); - list.sort('timestamp', { - order: "desc" - }); + //sort by pinned then timestamp + list.sort('', { + sortFunction: function (a, b) { + var notea = a.values(); + var noteb = b.values(); + if (notea.pinned && !noteb.pinned) { + return -1; + } else if (!notea.pinned && noteb.pinned) { + return 1; + } else { + if (notea.timestamp > noteb.timestamp) { + return -1; + } else if (notea.timestamp < noteb.timestamp) { + return 1; + } else { + return 0; + } + } + } + }); var filtertags = []; $(".item").each(function (key, value) { var a = $(this).closest("a"); + var pin = $(this).find(".ui-history-pin"); var id = a.siblings("span").html(); var tagsEl = $(this).find(".tags"); var item = historyList.get('id', id); if (item.length > 0 && item[0]) { var values = item[0].values(); + //parse pinned + if (values.pinned) { + pin.addClass('active'); + } else { + pin.removeClass('active'); + } //parse link to element a a.attr('href', '/' + values.id); //parse tags @@ -125,6 +150,34 @@ function parseHistoryCallback(list, notehistory) { clearHistory = false; deleteId = id; }); + $(".ui-history-pin").click(function (e) { + e.preventDefault(); + var $this = $(this); + var id = $this.closest("a").siblings("span").html(); + var item = list.get('id', id)[0]; + var values = item.values(); + var pinned = values.pinned; + if (!values.pinned) { + pinned = true; + item._values.pinned = true; + } else { + pinned = false; + item._values.pinned = false; + } + getHistory(function (notehistory) { + for(var i = 0; i < notehistory.length; i++) { + if (notehistory[i].id == id) { + notehistory[i].pinned = pinned; + break; + } + } + saveHistory(notehistory); + if (pinned) + $this.addClass('active'); + else + $this.removeClass('active'); + }); + }); buildTagsFilter(filtertags); } diff --git a/public/js/history.js b/public/js/history.js index 82c145da..b3656d89 100644 --- a/public/js/history.js +++ b/public/js/history.js @@ -111,12 +111,13 @@ function clearDuplicatedHistory(notehistory) { return newnotehistory; } -function addHistory(id, text, time, tags, notehistory) { +function addHistory(id, text, time, tags, pinned, notehistory) { notehistory.push({ id: id, text: text, time: time, - tags: tags + tags: tags, + pinned: pinned }); return notehistory; } @@ -232,8 +233,16 @@ function renderHistory(view) { function generateHistory(view, notehistory) { var info = renderHistory(view); + //keep any pinned data + var pinned = false; + for (var i = 0; i < notehistory.length; i++) { + if (notehistory[i].id == info.id && notehistory[i].pinned) { + pinned = true; + break; + } + } notehistory = removeHistory(info.id, notehistory); - notehistory = addHistory(info.id, info.text, info.time, info.tags, notehistory); + notehistory = addHistory(info.id, info.text, info.time, info.tags, pinned, notehistory); notehistory = clearDuplicatedHistory(notehistory); return notehistory; } |