Add color picker, improve refresh behavior

master
Skylar Ittner 5 yıl önce
ebeveyn 40e6ff1b64
işleme 64beddce8a

@ -116,6 +116,8 @@ class NotePostNotes extends Notes {
}
});
}
/**
* Sync notes with the NotePost server, resolving conflicts in the process.
*
@ -123,8 +125,6 @@ class NotePostNotes extends Notes {
* @param {function} error
* @returns {undefined}
*/
sync(success, error) {
super.sync();
var self = this;

@ -112,8 +112,7 @@ class Notes {
if (typeof note.html !== 'string') {
note.html = marked(note.content);
} // Save
}
return note;
}

@ -6,9 +6,43 @@
$(".view-main").on("ptr:refresh", ".ptr-content", function () {
restartApplication();
loadCards(function () {
app.ptr.done();
});
});
function loadCards(callback) {
// Do it twice as a workaround for the stupid sync issue
NOTES.sync(function () {
NOTES.sync(function (notes) {
for (i in window.shuffleInstance.items) {
window.shuffleInstance.remove(window.shuffleInstance.items[i]);
}
$(".notecard-col").remove();
for (n in notes) {
var note = notes[n];
$("#notecards-bin").append('<div class="col-100 tablet-50 desktop-33 notecard-col" id="notecard-col-' + note.noteid + '">'
+ '<div class="card notecard" id="notecard-' + note.noteid + '" data-id="' + note.noteid + '" data-bg="' + note.color + '" data-fg="' + note.textcolor + '" style="background-color: #' + note.color + '; color: #' + note.textcolor + ';">'
+ '<div class="menubtn">'
+ '<i class="material-icons">more_vert</i>'
+ '</div>'
+ '<div class="card-content card-content-padding">' + note.html + '</div>'
+ '</div>'
+ '</div>');
}
var noteElements = document.getElementsByClassName("notecard-col");
window.shuffleInstance.add(noteElements);
if (typeof callback == 'function') {
callback();
}
}, function () {
restartApplication();
});
}, function () {
restartApplication();
});
}
function editNote(id) {
var note = NOTES.get(id);
router.navigate("/editnote", {
@ -32,16 +66,29 @@ function makeList(id) {
function deleteNote(id) {
app.dialog.confirm('Are you sure?', 'Delete Note', function () {
NOTES.del(id, function () {
app.ptr.refresh();
window.shuffleInstance.remove(document.getElementById("notecard-" + id));
});
});
}
function colorNote(id) {
$("#colorpicker").data("noteid", id);
var colorpicker = app.popup.create({
el: $("#colorpicker")
});
colorpicker.open();
}
$("#app").on("click", ".edit-note-btn", function () {
editNote($(this).data("note"));
app.popover.close();
});
$("#app").on("click", ".color-note-btn", function () {
colorNote($(this).data("note"));
app.popover.close();
});
$("#app").on("click", ".favorite-note-btn", function () {
favoriteNote($(this).data("note"));
app.popover.close();
@ -57,6 +104,23 @@ $("#app").on("click", ".delete-note-btn", function () {
app.popover.close();
});
$("#app").on("click", "#colorpicker .colorpicker-color", function () {
var color = $(this).data("color");
var noteid = $("#colorpicker").data("noteid");
var note = NOTES.get(noteid);
app.popup.close();
note.color = color;
// Set them to null, they'll be fixed in fix()
note.modified = null;
note.textcolor = null;
note2 = NOTES.fix(note);
NOTES.set(note2);
$("#notecard-" + noteid).data("bg", note2.color);
$("#notecard-" + noteid).data("fg", note2.textcolor);
$("#notecard-" + noteid).css("background-color", "#" + note2.color);
$("#notecard-" + noteid).css("color", "#" + note2.textcolor);
});
function openNoteActionMenu(notecard) {
var noteid = notecard.data("id");
if (window.innerWidth < 768) {
@ -70,6 +134,14 @@ function openNoteActionMenu(notecard) {
editNote(noteid);
}
},
{
text: "Color",
icon: '<i class="fas fa-palette fa-fw"></i>',
onClick: function () {
colorNote(noteid);
}
},
// {
// text: "Favorite",
// icon: '<i class="fas fa-star fa-fw"></i>',
@ -104,6 +176,7 @@ function openNoteActionMenu(notecard) {
'<div class="list">' +
'<ul>' +
'<li><a class="list-button item-link edit-note-btn" data-note="' + noteid + '"><i class="fas fa-edit fa-fw"></i> Edit</a></li>' +
'<li><a class="list-button item-link color-note-btn" data-note="' + noteid + '"><i class="fas fa-palette fa-fw"></i> Color</a></li>' +
'<li><a class="list-button item-link favorite-note-btn" data-note="' + noteid + '"><i class="fas fa-star fa-fw"></i> Favorite</a></li>' +
'<li><a class="list-button item-link listify-note-btn" data-note="' + noteid + '"><i class="fas fa-tasks fa-fw"></i> Make a List</a></li>' +
'<li><a class="list-button item-link delete-note-btn" data-note="' + noteid + '"><i class="fas fa-trash fa-fw"></i> Delete</a></li>' +

@ -28,6 +28,8 @@
</div>
<div class="row notecards-row" id="notecards-bin">
<div class="col-100 tablet-50 desktop-33" style="visibility: hidden;" id="notecard-col-sizer">
</div>
{{#if offline}}
<div class="col-100 tablet-50 desktop-33 notecard-col">
<div class="card">
@ -39,7 +41,7 @@
</div>
{{/if}}
{{#each notecards}}
<div class="col-100 tablet-50 desktop-33 notecard-col">
<div class="col-100 tablet-50 desktop-33 notecard-col" id="notecard-col-{{noteid}}">
<div class="card notecard" id="notecard-{{noteid}}" data-id="{{noteid}}" data-bg="{{color}}" data-fg="{{textcolor}}" style="background-color: #{{color}}; color: #{{textcolor}};">
<div class="menubtn">
<i class="material-icons">more_vert</i>
@ -61,10 +63,37 @@
</a>
</div>
<div class="popup" id="colorpicker">
<div class="navbar">
<div class="navbar-inner">
<div class="title">Set Color</div>
<div class="right">
<a href="#" class="link icon-only popup-close">
<i class="material-icons">close</i>
</a>
</div>
</div>
</div>
<div class="block">
<div style="display: flex; justify-content: center; flex-wrap: wrap;">
{{#each colors}}
<div class="card colorpicker-color" style="background-color: #{{this}}; height: 3em; width: 3em; cursor: pointer;" data-color="{{this}}">
&nbsp;
</div>
{{/each}}
</div>
</div>
</div>
<script>
window.shuffleInstance = new window.Shuffle(document.getElementById('notecards-bin'), {
itemSelector: '.notecard-col'
itemSelector: '.notecard-col',
sizer: '#notecard-col-sizer'
});
loadCards();
</script>
</div>

@ -16,7 +16,38 @@ var routes = [
};
var context = {
showrefreshbtn: (platform_type != "cordova"),
offline: OFFLINE
offline: OFFLINE,
colors: [
// Pastel colors
"EF9A9A", // red
"FFCC80", // orange
"FFF59D", // yellow
"E6EE9C", // lime
"A5D6A7", // green
"80CBC4", // teal
"81D4FA", // light blue
"90CAF9", // blue
"B39DDB", // purple
"F48FB1", // pink
// Bright colors
"F44336", // red
"FF9800", // orange
"FFEB3B", // yellow
"8BC34A", // light green
"4CAF50", // green
"009688", // teal
"03A9F4", // light blue
"2196F3", // blue
"673AB7", // purple
"E91E63", // pink
// Other colors
"FFFFFF", // white
"E0E0E0", // pastel gray
"9E9E9E", // gray
"BCAAA4", // pastel brown
"795548", // brown
"000000" // black
]
};
NOTES.sync(function (notes) {
context["notecards"] = notes;

Yükleniyor…
İptal
Kaydet