From 2cfcae6db2ae306a14a23317b40ad04924ff7ec6 Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Thu, 22 Oct 2015 17:09:55 +0800 Subject: Support pinning note in history --- public/js/cover.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++++---- public/js/history.js | 15 ++++++++++--- 2 files changed, 69 insertions(+), 7 deletions(-) (limited to 'public/js') 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: '
  • \ \ \
    \ +
    \
    \
    \

    \ @@ -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 @@ -124,6 +149,34 @@ function parseHistoryCallback(list, notehistory) { $('.ui-delete-modal-item').html(' ' + value.text + '
    ' + value.time); 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; } -- cgit v1.2.3