Fix history list not parse and bind events properly on change pagination

This commit is contained in:
Wu Cheng-Han 2016-10-12 13:14:46 +08:00
parent f4fe27e26c
commit f5d471106c

View file

@ -112,94 +112,110 @@ function parseHistoryCallback(list, notehistory) {
} }
} }
}); });
// parse filter tags
var filtertags = []; var filtertags = [];
$(".item").each(function (key, value) { for (var i = 0, l = list.items.length; i < l; i++) {
var a = $(this).closest("a"); var tags = list.items[i]._values.tags;
var pin = $(this).find(".ui-history-pin"); if (tags && tags.length > 0) {
var id = a.siblings("span").html(); for (var j = 0; j < tags.length; j++) {
var tagsEl = $(this).find(".tags"); //push info filtertags if not found
var item = historyList.get('id', id); var found = false;
if (item.length > 0 && item[0]) { if (filtertags.indexOf(tags[j]) != -1)
var values = item[0].values(); found = true;
//parse pinned if (!found)
if (values.pinned) { filtertags.push(tags[j]);
pin.addClass('active');
} else {
pin.removeClass('active');
}
//parse link to element a
a.attr('href', serverurl + '/' + values.id);
//parse tags
if (values.tags) {
var tags = values.tags;
if (tags.length > 0) {
var labels = [];
for (var j = 0; j < tags.length; j++) {
//push info filtertags if not found
var found = false;
if (filtertags.indexOf(tags[j]) != -1)
found = true;
if (!found)
filtertags.push(tags[j]);
//push into the item label
labels.push("<span class='label label-default'>" + tags[j] + "</span>");
}
tagsEl.html(labels.join(' '));
}
} }
} }
}); }
$(".ui-history-close").click(function (e) { buildTagsFilter(filtertags);
e.preventDefault(); }
var id = $(this).closest("a").siblings("span").html();
var value = list.get('id', id)[0].values(); // update items whenever list updated
$('.ui-delete-modal-msg').text('Do you really want to delete below history?'); historyList.on('updated', function (e) {
$('.ui-delete-modal-item').html('<i class="fa fa-file-text"></i> ' + value.text + '<br><i class="fa fa-clock-o"></i> ' + value.time); for (var i = 0, l = e.items.length; i < l; i++) {
clearHistory = false; var item = e.items[i];
deleteId = id; if (item.visible()) {
}); var itemEl = $(item.elm);
$(".ui-history-pin").click(function (e) { var values = item._values;
e.preventDefault(); var a = itemEl.find("a");
var $this = $(this); var pin = itemEl.find(".ui-history-pin");
var id = $this.closest("a").siblings("span").html(); var tagsEl = itemEl.find(".tags");
var item = list.get('id', id)[0]; //parse link to element a
var values = item.values(); a.attr('href', serverurl + '/' + values.id);
var pinned = values.pinned; //parse pinned
if (!values.pinned) { if (values.pinned) {
pinned = true; pin.addClass('active');
item._values.pinned = true; } else {
} else { pin.removeClass('active');
pinned = false; }
item._values.pinned = false; //parse tags
} var tags = values.tags;
checkIfAuth(function () { if (tags && tags.length > 0 && tagsEl.children().length <= 0) {
postHistoryToServer(id, { var labels = [];
pinned: pinned for (var j = 0; j < tags.length; j++) {
}, function (err, result) { //push into the item label
if (!err) { labels.push("<span class='label label-default'>" + tags[j] + "</span>");
if (pinned)
$this.addClass('active');
else
$this.removeClass('active');
}
});
}, function () {
getHistory(function (notehistory) {
for(var i = 0; i < notehistory.length; i++) {
if (notehistory[i].id == id) {
notehistory[i].pinned = pinned;
break;
}
} }
saveHistory(notehistory); tagsEl.html(labels.join(' '));
}
}
}
$(".ui-history-close").off('click');
$(".ui-history-close").on('click', historyCloseClick);
$(".ui-history-pin").off('click');
$(".ui-history-pin").on('click', historyPinClick);
});
function historyCloseClick(e) {
e.preventDefault();
var id = $(this).closest("a").siblings("span").html();
var value = historyList.get('id', id)[0]._values;
$('.ui-delete-modal-msg').text('Do you really want to delete below history?');
$('.ui-delete-modal-item').html('<i class="fa fa-file-text"></i> ' + value.text + '<br><i class="fa fa-clock-o"></i> ' + value.time);
clearHistory = false;
deleteId = id;
}
function historyPinClick(e) {
e.preventDefault();
var $this = $(this);
var id = $this.closest("a").siblings("span").html();
var item = historyList.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;
}
checkIfAuth(function () {
postHistoryToServer(id, {
pinned: pinned
}, function (err, result) {
if (!err) {
if (pinned) if (pinned)
$this.addClass('active'); $this.addClass('active');
else else
$this.removeClass('active'); $this.removeClass('active');
}); }
}) });
}, function () {
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);
} }
//auto update item fromNow every minutes //auto update item fromNow every minutes