summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWu Cheng-Han2015-10-22 17:09:55 +0800
committerWu Cheng-Han2015-10-22 17:09:55 +0800
commit2cfcae6db2ae306a14a23317b40ad04924ff7ec6 (patch)
tree7e64d91b8af28a3bcc0f78504e490c741ed28b2a
parent5ed395122d3862b1e5ed84784b4205d30a407849 (diff)
Support pinning note in history
-rw-r--r--public/css/cover.css16
-rw-r--r--public/js/cover.js61
-rw-r--r--public/js/history.js15
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;
}