Add AJAX note refresh, note text now changes color to stay readable on dark backgrounds
This commit is contained in:
parent
9742b70e71
commit
161b3e3755
@ -82,4 +82,12 @@ switch ($VARS['action']) {
|
|||||||
$note->saveNote();
|
$note->saveNote();
|
||||||
returnToSender("");
|
returnToSender("");
|
||||||
break;
|
break;
|
||||||
|
case "getnotes":
|
||||||
|
header("Content-Type: application/json");
|
||||||
|
$noteids = $database->select('notes', 'noteid', ['ownerid' => $_SESSION['uid']]);
|
||||||
|
$notes = [];
|
||||||
|
foreach ($noteids as $n) {
|
||||||
|
$notes[] = Note::loadNote($n)->toArray();
|
||||||
|
}
|
||||||
|
exit(json_encode($notes));
|
||||||
}
|
}
|
@ -202,6 +202,30 @@ class Note {
|
|||||||
return $this->favorite;
|
return $this->favorite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the text color for this note, based on the background color.
|
||||||
|
* Thanks to https://stackoverflow.com/a/8468448
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getTextColor(): string {
|
||||||
|
$bg = $this->getColor();
|
||||||
|
$r = hexdec(substr($bg, 0, 2));
|
||||||
|
$g = hexdec(substr($bg, 2, 2));
|
||||||
|
$b = hexdec(substr($bg, 4, 2));
|
||||||
|
|
||||||
|
$contrast = sqrt(
|
||||||
|
$r * $r * .241 +
|
||||||
|
$g * $g * .691 +
|
||||||
|
$b * $b * .068
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($contrast > 130) {
|
||||||
|
return '000000';
|
||||||
|
} else {
|
||||||
|
return 'FFFFFF';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the note content
|
* Set the note content
|
||||||
* @param string $markdown
|
* @param string $markdown
|
||||||
@ -272,6 +296,7 @@ class Note {
|
|||||||
'noteid' => $this->getID(),
|
'noteid' => $this->getID(),
|
||||||
'color' => $this->getColor(),
|
'color' => $this->getColor(),
|
||||||
'content' => $this->getText(),
|
'content' => $this->getText(),
|
||||||
|
'html' => $this->getHTML(true),
|
||||||
'title' => $this->getTitle(),
|
'title' => $this->getTitle(),
|
||||||
'modified' => $this->getModified(),
|
'modified' => $this->getModified(),
|
||||||
'favorite' => $this->getFavorite(),
|
'favorite' => $this->getFavorite(),
|
||||||
|
@ -9,7 +9,10 @@ define("PAGES", [
|
|||||||
"home" => [
|
"home" => [
|
||||||
"title" => "Notes",
|
"title" => "Notes",
|
||||||
"navbar" => true,
|
"navbar" => true,
|
||||||
"icon" => "far fa-sticky-note"
|
"icon" => "far fa-sticky-note",
|
||||||
|
"scripts" => [
|
||||||
|
"static/js/home.js"
|
||||||
|
]
|
||||||
],
|
],
|
||||||
"404" => [
|
"404" => [
|
||||||
"title" => "404 error"
|
"title" => "404 error"
|
||||||
|
@ -15,8 +15,9 @@ foreach ($noteids as $n) {
|
|||||||
<style nonce="<?php echo $SECURE_NONCE; ?>">
|
<style nonce="<?php echo $SECURE_NONCE; ?>">
|
||||||
<?php
|
<?php
|
||||||
foreach ($notes as $note) {
|
foreach ($notes as $note) {
|
||||||
echo "#notecard_" . $note->getID() . " {\n"
|
echo "#notecard_" . $note->getID() . ", #notecard_" . $note->getID() . " a {\n"
|
||||||
. " background-color: #" . $note->getColor() . ";\n"
|
. " background-color: #" . $note->getColor() . ";\n"
|
||||||
|
. " color: #" . $note->getTextColor() . ";\n"
|
||||||
. " border: 1px solid #" . $note->getColor() . ";\n"
|
. " border: 1px solid #" . $note->getColor() . ";\n"
|
||||||
. "}\n";
|
. "}\n";
|
||||||
}
|
}
|
||||||
@ -33,26 +34,26 @@ foreach ($notes as $note) {
|
|||||||
foreach ($notes as $note) {
|
foreach ($notes as $note) {
|
||||||
?>
|
?>
|
||||||
<div class="col-12 col-sm-6 col-md-6 col-lg-4">
|
<div class="col-12 col-sm-6 col-md-6 col-lg-4">
|
||||||
<div class="card mb-3" data-color="<?php echo $note->getColor(); ?>" id="notecard_<?php echo $note->getID(); ?>">
|
<div class="card notecard mb-3" data-color="<?php echo $note->getColor(); ?>" id="notecard_<?php echo $note->getID(); ?>" data-note="<?php echo $note->getID(); ?>">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="float-right">
|
<div class="float-right">
|
||||||
<a href="./action.php?action=favoritenote¬eid=<?php echo $note->getID(); ?>" class="text-<?php echo $note->getFavorite() ? "warning" : "body"; ?>">
|
<a href="./action.php?action=favoritenote¬eid=<?php echo $note->getID(); ?>" class="favorite-btn <?php echo $note->getFavorite() ? "text-warning": ""; ?>">
|
||||||
<i class="fa<?php echo $note->getFavorite() ? "s" : "r"; ?> fa-star"></i>
|
<i class="fa<?php echo $note->getFavorite() ? "s" : "r"; ?> fa-star"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-text">
|
<div class="card-text note-text">
|
||||||
<?php echo $note->getHTML(); ?>
|
<?php echo $note->getHTML(); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-footer">
|
<div class="card-footer">
|
||||||
<a href="./app.php?page=editnote¬e=<?php echo $note->getID(); ?>" class="text-body mr-2">
|
<a href="./app.php?page=editnote¬e=<?php echo $note->getID(); ?>" class="mr-2">
|
||||||
<i class="fas fa-edit"></i> <?php $Strings->get('Edit'); ?>
|
<i class="fas fa-edit"></i> <?php $Strings->get('Edit'); ?>
|
||||||
</a>
|
</a>
|
||||||
<a href="./action.php?action=downloadnote¬eid=<?php echo $note->getID(); ?>" class="text-body mr-2">
|
<a href="./action.php?action=downloadnote¬eid=<?php echo $note->getID(); ?>" class="mr-2">
|
||||||
<i class="fas fa-download"></i> <?php $Strings->get('Download'); ?>
|
<i class="fas fa-download"></i> <?php $Strings->get('Download'); ?>
|
||||||
</a>
|
</a>
|
||||||
<a href="./action.php?action=deletenote¬eid=<?php echo $note->getID(); ?>" class="text-body text-danger">
|
<a href="./action.php?action=deletenote¬eid=<?php echo $note->getID(); ?>">
|
||||||
<i class="fas fa-trash"></i> <?php $Strings->get('Delete'); ?>
|
<i class="fas fa-trash"></i> <?php $Strings->get('Delete'); ?>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
26
static/js/home.js
Normal file
26
static/js/home.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Update note content dynamically
|
||||||
|
setInterval(function () {
|
||||||
|
$.getJSON("action.php", {
|
||||||
|
action: "getnotes"
|
||||||
|
}, function (notes) {
|
||||||
|
for (var i = 0; i < notes.length; i++) {
|
||||||
|
n = notes[i];
|
||||||
|
var notecard = $("#notecard_" + n['noteid']);
|
||||||
|
var favbtn = notecard.find(".favorite-btn");
|
||||||
|
notecard.find(".note-text").html(n['html']);
|
||||||
|
if (n.favorite) {
|
||||||
|
favbtn.addClass("text-warning");
|
||||||
|
favbtn.html('<i class="fas fa-star"></i>');
|
||||||
|
} else {
|
||||||
|
favbtn.removeClass("text-warning");
|
||||||
|
favbtn.html('<i class="far fa-star"></i>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 15 * 1000);
|
Loading…
x
Reference in New Issue
Block a user