From 9567f4ab22ed1cde833cecdd610a869294273ef9 Mon Sep 17 00:00:00 2001
From: Bengt Brodersen
Date: Sun, 31 May 2015 21:55:14 +0200
Subject: [PATCH] WIP
---
bookmarklet.js | 293 ++++++++++++++++++++++++++++---------------------
1 file changed, 165 insertions(+), 128 deletions(-)
diff --git a/bookmarklet.js b/bookmarklet.js
index afd9926..d7aa5b4 100644
--- a/bookmarklet.js
+++ b/bookmarklet.js
@@ -27,24 +27,21 @@
try {
main();
} catch (err) {
- console.log(err.message);
- if (isProd) {
- ga('send', 'exception', {
- 'exDescription': err.message,
- 'exFatal': true
- });
- }
+ handleError(err);
}
});
-
} catch (err) {
- console.log(err.message);
- if (isProd) {
- ga('send', 'exception', {
- 'exDescription': err.message,
- 'exFatal': true
- });
- }
+ handleError(err);
+ }
+
+ function handleError(err){
+ console.log("ERROR: " + err.stack);
+ if (isProd) {
+ ga('send', 'exception', {
+ 'exDescription': err.message,
+ 'exFatal': true
+ });
+ }
}
function init() {
@@ -93,10 +90,9 @@
jQuery("#rowCount").val(readCookie("card_printer_row_count",2));
jQuery("#columnCount").val(readCookie("card_printer_column_count",1));
jQuery("#card-scale-range").val(readCookie("card_printer_card_scale",1));
- jQuery("#multi-card-page-checkbox").attr('checked',readCookie("card_printer_multi_card_page",false) != 'false');
+ jQuery("#single-card-page-checkbox").attr('checked',readCookie("card_printer_single_card_page",false) != 'false');
jQuery("#hide-description-checkbox").attr('checked',readCookie("card_printer_hide_description",false) != 'false');
-
if (isProd) {
ga('send', 'pageview');
}
@@ -109,88 +105,59 @@
}
function print() {
- var rowCount = jQuery("#rowCount").val();
- var columnCount = jQuery("#columnCount").val();
- var scale = jQuery("#card-scale-range").val();
- var multiCard = jQuery("#multi-card-page-checkbox").is(':checked');
- var hideDescription = jQuery("#hide-description-checkbox").is(':checked');
+ try {
+ var rowCount = jQuery("#rowCount").val();
+ var columnCount = jQuery("#columnCount").val();
+ var scale = jQuery("#card-scale-range").val();
+ var singleCard = jQuery("#single-card-page-checkbox").is(':checked');
+ var hideDescription = jQuery("#hide-description-checkbox").is(':checked');
- writeCookie("card_printer_row_count", rowCount);
- writeCookie("card_printer_column_count",columnCount);
- writeCookie("card_printer_card_scale",scale);
- writeCookie("card_printer_multi_card_page",multiCard);
- writeCookie("card_printer_hide_description",hideDescription);
-
- var printFrame = jQuery("#card-print-dialog-content-iframe");
- var printWindow = printFrame[0].contentWindow;
- var printDocument = printWindow.document;
- if (isProd) {
- ga('send', 'event', 'button', 'click', 'print', jQuery(".card", printDocument).length);
- }
- var currentScale = jQuery("html", printDocument).css("font-size").replace("px", "");
- printWindow.matchMedia("print").addListener(function() {
-
- jQuery(".card", printDocument).css("height", "calc( 100% / " + rowCount + " )");
- jQuery(".card", printDocument).css("width", "calc( 100% / " + columnCount + " )");
-
- var pageWidth = jQuery("body", printDocument).outerWidth();
- var cardWidth = jQuery(".card", printDocument).outerWidth();
-
- var newScale = currentScale * pageWidth / cardWidth;
-
- //jQuery("html", printDocument).css("font-size",newScale +"px");
- });
-
- /////////////////////////////////////////
-
- printWindow.addEventListener("resize", refreshCard);
- printWindow.matchMedia("print").addListener(refreshCard);
-
- function refreshCard() {
- var cardElements = printDocument.querySelectorAll(".card");
- forEach(cardElements, function (cardElement) {
- var cardContent = cardElement.querySelectorAll(".card-content")[0];
- if (cardContent.scrollHeight > cardContent.offsetHeight) {
- cardContent.classList.add("zigzag");
- } else {
- cardContent.classList.remove("zigzag");
- }
- });
- }
-
- function forEach(array, callback) {
- for (i = 0; i < array.length; i++) {
- callback(array[i]);
+ var printFrame = jQuery("#card-print-dialog-content-iframe");
+ var printWindow = printFrame[0].contentWindow;
+ var printDocument = printWindow.document;
+ if (isProd) {
+ ga('send', 'event', 'button', 'click', 'print', jQuery(".card", printDocument).length);
}
- }
+ var currentScale = jQuery("html", printDocument).css("font-size").replace("px", "");
+ printWindow.matchMedia("print").addListener(function() {
- /////////////////////////////////////////
+ var pageWidth = jQuery("body", printDocument).outerWidth();
+ var cardWidth = jQuery(".card", printDocument).outerWidth();
- printWindow.print();
- jQuery("html", printDocument).css("font-size",currentScale +"px");
- }
+ var newScale = currentScale * pageWidth / cardWidth;
- function hideDescription(hide) {
- var printFrame = jQuery("#card-print-dialog-content-iframe");
- var printWindow = printFrame[0].contentWindow;
- var printDocument = printWindow.document;
- if (hide) {
- jQuery(".description", printDocument).hide();
- } else {
- jQuery(".description", printDocument).show();
- }
+ //jQuery("html", printDocument).css("font-size",newScale +"px");
+ });
- resizeIframe(printFrame);
- }
+ /////////////////////////////////////////
- function endableMultiCardPage(enable) {
- var printFrame = jQuery("#card-print-dialog-content-iframe");
- var printWindow = printFrame[0].contentWindow;
- var printDocument = printWindow.document;
- if (enable) {
- jQuery(".page", printDocument).addClass("multiCardPage");
- } else {
- jQuery(".page", printDocument).removeClass("multiCardPage");
+ printWindow.addEventListener("resize", refreshCard);
+ printWindow.matchMedia("print").addListener(refreshCard);
+
+ function refreshCard() {
+ var cardElements = printDocument.querySelectorAll(".card");
+ forEach(cardElements, function (cardElement) {
+ var cardContent = cardElement.querySelectorAll(".card-body")[0];
+ if (cardContent.scrollHeight > cardContent.offsetHeight) {
+ cardContent.classList.add("zigzag");
+ } else {
+ cardContent.classList.remove("zigzag");
+ }
+ });
+ }
+
+ function forEach(array, callback) {
+ for (i = 0; i < array.length; i++) {
+ callback(array[i]);
+ }
+ }
+
+ /////////////////////////////////////////
+
+ printWindow.print();
+ jQuery("html", printDocument).css("font-size",currentScale +"px");
+ } catch (err) {
+ handleError(err);
}
}
@@ -201,7 +168,7 @@
var printDocument = printWindow.document;
printDocument.open();
- printDocument.write("
");
jQuery("head", printDocument).append(cardCss());
// jQuery("head", printDocument).append(cardJavaScript()); // NOT WORKING
@@ -313,8 +280,6 @@
// http://www.cssdesk.com/T9hXg
function printOverlayHTML() {
-
-
var result = jQuery(document.createElement('div'))
.attr("id", "card-print-overlay")
.html(multilineString(function() {
@@ -333,9 +298,9 @@