+

-
+
-
-
-

-
-
-

+
+
+

+
+
+

+
+
+
+
+
+
+
— —
-
-
-
-
-
— —
-
+
-
+
+
+
+
change account information
+
+
+
+
+
+
+
logout
+
+ Warning! To be able log into this account again you will need this token:
+
+
+
+
+
-
-
-
-
change account information
-
-
-
-
-
-
-
logout
-
- Warning! To be able log into this account again you will need this token:
-
-
-
-
diff --git a/main.js b/main.js
index 91143fa..7bd78ae 100644
--- a/main.js
+++ b/main.js
@@ -7,6 +7,9 @@ var numberOfPagesToLoad = 10;
// How many pixels should there be space around the FAB
var fabSpace = 30;
+// How many milliseconds should an error message be visible
+var errorTime = 2000;
+
$(document).ready(function(){
// Check for localStorage
@@ -28,20 +31,23 @@ $(document).ready(function(){
}
}
- // Window resize for positioning FAB
+ // Window resize for positioning elements
window.onresize = resize;
resize();
});
+// Position FAB and error popups when resizing
function resize(){
var fab = $("#fab");
- var screenWidth = $(".screen:visible").width();
+ var screenWidth = $("#wrapper").width();
- var left = ($(window).width() - screenWidth)/2 + screenWidth - fab.width() - fabSpace;
+ var fabLeft = ($(window).width() - screenWidth)/2 + screenWidth - fab.width() - fabSpace;
fab.css("bottom", fabSpace);
- fab.css("left", left);
+ fab.css("left", fabLeft);
+
+ $(".error").css("right", $("#wrapper").offset().left)
}
// http://stackoverflow.com/a/488073/1456971
@@ -55,6 +61,33 @@ function isScrolledIntoView(elem) {
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
+// Shows an error message
+function error(msg){
+
+ // Prettify msg, replace all _ with blanks and set to lowercase
+ msg = msg.toLowerCase().replace(new RegExp("_", "g"), " ");
+
+ // Create popup
+ var popup = $("#error").clone();
+ popup.removeAttr("id");
+ $("body").append(popup);
+
+ // Set positions
+ resize();
+
+ // Set message and animate popup
+ popup.find("span").text(msg);
+ popup.addClass("active");
+ setTimeout(function(){
+ popup.removeClass("active");
+
+ // Destroy element
+ setTimeout(function(){
+ popup.remove();
+ }, errorTime);
+ }, errorTime);
+}
+
function showScreen(name){
// Hide all other screens
$("[id^=screen-]").hide();
@@ -97,7 +130,7 @@ function createAccount(){
// Check for valid data
if(!data.ok){
- alert(data.error);
+ error(data.error);
return;
}
@@ -121,7 +154,7 @@ function tokenLogin(){
// Check for valid data
if(!data.ok){
- alert(data.error);
+ error(data.error);
return;
}
@@ -194,7 +227,7 @@ function loadPages(){
// Check for valid data
if(!data.ok){
- alert(data.error);
+ error(data.error);
return;
}
@@ -229,7 +262,7 @@ function edit(){
// Check for valid data
if(!data.ok){
- alert(data.error);
+ error(data.error);
return;
}
@@ -255,7 +288,7 @@ function saveEdit(){
// Check for valid data
if(!data.ok){
- alert(data.error);
+ error(data.error);
return;
}
diff --git a/style.css b/style.css
index dc4d01b..8a1d6d3 100644
--- a/style.css
+++ b/style.css
@@ -34,7 +34,7 @@ p{
a.card{
cursor: pointer;
}
-.screen{
+#wrapper{
max-width: 600px;
margin: 1em auto;
}
@@ -43,6 +43,19 @@ a.card{
box-shadow: none;
}
+/* error popup */
+.error{
+ z-index: 2;
+ position: fixed;
+ top: -100px;
+ transition: 200ms;
+ color: #B71C1C;
+ font-weight: bold;
+}
+.error.active{
+ top: 0;
+}
+
/* Main Screen */
#user-info{