add Scale

This commit is contained in:
Bengt Brodersen 2015-11-27 07:52:48 +01:00
parent d93637b694
commit aaa3a9c9c5
4 changed files with 282 additions and 301 deletions

View File

@ -1,9 +1,10 @@
(function() {
var global = {};
global.version = "4.2.5";
global.version = "4.2.6";
global.issueTrackingUrl = "https://github.com/qoomon/Jira-Issue-Card-Printer";
global.isDev = document.currentScript == null;
global.isProd = !global.isDev;
global.settings = {};
window.addEventListener("error", function(event) {
var error = event.error;
@ -24,14 +25,16 @@
// wait untill all scripts loaded
appendScript('https://qoomon.github.io/void', function() {
init().then(function(){
main();
return main();
}).catch(function(cause){
console.log("ERROR " + JSON.stringify(cause,2,2));
alert("Sorry somthing went wrong. Please create an issue at " + global.issueTrackingUrl);
console.log("ERROR " + cause.stack);
alert("Sorry somthing went wrong.\n\nPlease create an issue at " + global.issueTrackingUrl + "\n\n" + cause.stack);
});
});
function main() {
var promises = [];
console.log("Run...")
// determine application
if (jQuery("meta[name='application-name'][ content='JIRA']").length > 0) {
@ -62,8 +65,16 @@
if (issueKeyList.length <= 0) {
alert("Please select at least one issue.");
return;
} else if (issueKeyList.length > 100) {
confirm("Are you sure you want select " + issueKeyList.length + " issues?");
return;
}
var settings = global.settings;
settings.scale = readCookie("card_printer_font_scale",1);
settings.rowCount = readCookie("card_printer_row_count",2);
settings.colCount = readCookie("card_printer_column_count", 1);
// open print preview
jQuery("body").append(printPreviewElement());
jQuery("#card-print-overlay").prepend(printOverlayStyleElement());
@ -77,24 +88,24 @@
redrawCards();
});
jQuery("#rowCount").val(readCookie("card_printer_row_count", 2));
jQuery("#columnCount").val(readCookie("card_printer_column_count", 1));
jQuery("#font-scale-range").val(readCookie("card_printer_font_scale",1));
jQuery("#font-scale-range").val(settings.scale);
jQuery("#rowCount").val(settings.rowCount);
jQuery("#columnCount").val(settings.colCount);
jQuery("#single-card-page-checkbox").attr('checked', readCookie("card_printer_single_card_page", 'true') == 'true');
jQuery("#hide-description-checkbox").attr('checked', readCookie("card_printer_hide_description", 'false') == 'true');
jQuery("#hide-assignee-checkbox").attr('checked', readCookie("card_printer_hide_assignee", 'true') == 'true');
jQuery("#hide-due-date-checkbox").attr('checked', readCookie("card_printer_hide_due_date", 'false') == 'true');
jQuery("#hide-status-checkbox").attr('checked', readCookie("card_printer_hide_status", 'true') == 'true');
jQuery("#card-print-dialog-title").text("Card Printer " + global.version + " - Loading issues...");
renderCards(issueKeyList).then(function() {
promises.push(renderCards(issueKeyList).then(function() {
jQuery("#card-print-dialog-title").text("Card Printer " + global.version);
//print();
});
}));
if (global.isProd) {
ga('send', 'pageview');
}
return Promise.all(promises);
}
function init() {
@ -189,9 +200,7 @@
});
console.log("wait for resources loaded...");
printDocument.close();
}).catch(function(cause){
console.log("ERROR " + JSON.stringify(cause))
});;
});
}
function redrawCards() {
@ -301,16 +310,6 @@
jQuery("head", printDocument).append(style);
}
// hide/show status
jQuery("#styleHideStatus", printDocument).remove();
if (!jQuery("#hide-status-checkbox")[0].checked) {
var style = document.createElement('style');
style.id = 'styleHideStatus';
style.type = 'text/css';
style.innerHTML = ".issue-status { display: none; }"
jQuery("head", printDocument).append(style);
}
// enable/disable single card page
jQuery("#styleSingleCardPage", printDocument).remove();
if (jQuery("#single-card-page-checkbox")[0].checked) {
@ -327,16 +326,14 @@
var printWindow = printFrame[0].contentWindow;
var printDocument = printWindow.document;
var columnCount = jQuery("#columnCount").val();
var rowCount = jQuery("#rowCount").val();
var cardCount = jQuery(".card", printDocument).length;
var pageCount = Math.ceil(cardCount / (columnCount * rowCount))
var scaleRoot = global.settings.scale;
var rowCount = global.settings.rowCount;
var columnCount = global.settings.colCount;
// scale
// reset scale
jQuery("html", printDocument).css("font-size", "1cm");
jQuery("html", printDocument).css("font-size", scaleRoot +"cm");
jQuery("#styleColumnCount", printDocument).remove();
jQuery("#styleRowCount", printDocument).remove();
@ -354,9 +351,9 @@
var scaleHeight = cardMaxHeight / cardMinHeight - 0.01;
// scale down
var scale = Math.min(scaleWidth, scaleHeight, 1) * global.scale;
var scale = Math.min(scaleWidth, scaleHeight, 1);
if (scale < 1) {
jQuery("html", printDocument).css("font-size", scale + "cm");
jQuery("html", printDocument).css("font-size", ( scaleRoot * scale) + "cm");
}
// size
@ -455,20 +452,12 @@
return true;
});
// show status
result.find("#hide-status-checkbox").click(function() {
writeCookie("card_printer_hide_status", this.checked);
redrawCards();
return true;
});
// scale font
result.find("#font-scale-range").on("input", function() {
writeCookie("card_printer_font_scale", jQuery(this).val());
global.scale = jQuery(this).val();
global.settings.scale = jQuery(this).val();
redrawCards();
});
@ -477,6 +466,9 @@
result.find("#rowCount").on("input", function() {
writeCookie("card_printer_row_count", jQuery(this).val());
global.settings.rowCount = jQuery(this).val();
redrawCards();
});
result.find("#rowCount").click(function() {
@ -486,6 +478,9 @@
result.find("#columnCount").on("input", function() {
writeCookie("card_printer_column_count", jQuery(this).val());
global.settings.colCount = jQuery(this).val();
redrawCards();
});
result.find("#columnCount").click(function() {
@ -853,7 +848,7 @@
if (/.*\/issues\/\?jql=.*/g.test(document.URL)) {
var jql = document.URL.replace(/.*\?jql=(.*)/, '$1');
var jqlIssues = [];
var url = '/rest/api/2/search?jql=' + jql + "&maxResults=1000";
var url = '/rest/api/2/search?jql=' + jql + "&maxResults=500&fields=key";
console.log("IssueUrl: " + url);
//console.log("Issue: " + issueKey + " Loading...");
jQuery.ajax({
@ -1013,11 +1008,7 @@
issueData.url = window.location.origin + "/youtrack/issue/" + issueData.key;
}));
return new Promise(function(resolve, reject) {
Promise.all(promises)
.then(function(){resolve(issueData);})
.catch(function(cause){reject(cause);});
});
return Promise.all(promises).then(function(results){return issueData;});
};
module.getIssueData = function(issueKey) {
@ -1082,11 +1073,7 @@
issueData.url = data.url;
}));
return new Promise(function(resolve, reject) {
Promise.all(promises)
.then(function(){resolve(issueData);})
.catch(function(cause){reject(cause);});
});
return Promise.all(promises).then(function(results){return issueData;});
};
module.getIssueData = function(issueKey, callback, async) {
@ -1137,11 +1124,7 @@
issueData.url = data.shortUrl;
}));
return new Promise(function(resolve, reject) {
Promise.all(promises)
.then(function(){resolve(issueData);})
.catch(function(cause){reject(cause);});
});
return Promise.all(promises).then(function(results){return issueData;});
};
module.getIssueData = function(issueKey, callback, async) {

480
card.css
View File

@ -1,321 +1,319 @@
* {
box-sizing: border-box;
overflow: hidden;
box-sizing: border-box;
overflow: hidden;
}
html {
background: WHITE;
padding: 0rem;
margin: 0rem;
font-size: 1.0cm;
overflow-y: scroll;
background: WHITE;
padding: 0rem;
margin: 0rem;
font-size: 1.0cm;
overflow-y: scroll;
}
body {
padding: 0rem;
margin: 0rem;
padding: 0rem;
margin: 0rem;
}
.badge, .shadow {
border-style: solid;
border-color: #333;
border-top-width: 0.12rem;
border-left-width: 0.12rem;
border-bottom-width: 0.21rem;
border-right-width: 0.21rem;
border-radius: 0.25rem;
border-style: solid;
border-color: #333;
border-top-width: 0.12rem;
border-left-width: 0.12rem;
border-bottom-width: 0.21rem;
border-right-width: 0.21rem;
border-radius: 0.25rem;
}
.badge {
// WHITESMOKE, GAINSBOROM;
background-color: #E0E0E0;
background-color: WHITESMOKE;
}
.hidden {
display: none;
display: none;
}
.zigzag {
border-bottom-width: 0rem;
border-bottom-width: 0rem;
}
.zigzag::after {
position: absolute;
bottom: 0.03rem;
left:-0.16rem;
content:"";
width: 100%;
border-style:solid;
border-bottom-width: 1rem;
border-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/Tearing.png);
border-image-width: 0 0 0.7rem 0;
border-image-slice: 56 0 56 1;
border-image-repeat: round round;
position: absolute;
bottom: 0.03rem;
left: -0.16rem;
content: "";
width: 100%;
border-style: solid;
border-bottom-width: 1rem;
border-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/Tearing.png);
border-image-width: 0 0 0.7rem 0;
border-image-slice: 56 0 56 1;
border-image-repeat: round round;
}
#preload {
position: fixed;
top: 0rem;
left: 100%;
position: fixed;
top: 0rem;
left: 100%;
}
.author {
color: DIMGREY;
position: absolute;
top:0.35rem;
left:calc(50% - 2rem);
font-size: 0.6rem;
overflow:visible;
line-height: 0.38rem;
color: DIMGREY;
position: absolute;
top: 0.5rem;
left: calc(50% - 2rem);
font-size: 0.8rem;
overflow: visible;
line-height: 0.38rem;
}
.author > span:nth-of-type(2) {
position: relative;
top: -0.07rem;
left: 0.49rem;
font-size: 0.5em;
position: relative;
top: 0.0rem;
left: 0.65rem;
font-size: 0.5em;
}
.card {
position: relative;
float:left;
height: 100%;
width: 100%;
padding: 0.5cm;
min-width:14.5rem;
min-height:10.0rem;
border-color: LightGray;
border-style: dotted;
border-width: 0.03cm;
position: relative;
float: left;
height: 100%;
width: 100%;
padding: 0.5cm;
min-width: 14.5rem;
min-height: 10.0rem;
border-color: LightGray;
border-style: dotted;
border-width: 0.03cm;
}
.card-content {
position: relative;
height: 100%;
// find .card-header;
padding-top: 2rem;
// find .card-footer;
padding-bottom: 1.3rem;
position: relative;
height: 100%;
// find .card-header;
padding-top: 2rem;
// find .card-footer;
padding-bottom: 1.3rem;
}
.card-body {
position: relative;
height: 100%;
margin-left: 0.4rem;
margin-right: 0.4rem;
padding-top: 1.1rem;
padding-bottom: 1.1rem;
padding-left: 0.4rem;
padding-right: 0.4rem;
background: WHITE;
position: relative;
height: 100%;
margin-left: 0.4rem;
margin-right: 0.4rem;
padding-top: 1.1rem;
padding-bottom: 1.1rem;
padding-left: 0.4rem;
padding-right: 0.4rem;
background: WHITE;
}
.card-header {
position: absolute;
top: 0rem;
height: 4.2rem;
width: 100%;
position: absolute;
top: 0rem;
height: 4.2rem;
width: 100%;
}
.card-footer {
position: absolute;
bottom: 0rem;
height: 2.2rem;
width: 100%;
position: absolute;
bottom: 0rem;
height: 2.2rem;
width: 100%;
}
.issue-summary {
font-weight: bold;
font-size: 0.9rem;
font-weight: bold;
font-size: 0.9rem;
}
.issue-description {
margin-top: 0.1rem;
display: block;
font-size: 0.6rem;
line-height: 0.62rem;
overflow: hidden;
margin-top: 0.1rem;
display: block;
font-size: 0.6rem;
line-height: 0.62rem;
overflow: hidden;
}
.issue-description p:first-of-type {
margin-top: 0rem;
margin-top: 0rem;
}
.issue-description p:last-of-type {
margin-bottom: 0rem;
margin-bottom: 0rem;
}
.issue-id {
position: absolute;
left: 1rem;
top: 1.2rem;
height: 1.5rem;
max-width: calc(100% - 7.5rem);
min-width: 6.0rem;
padding-left: 2.1rem;
padding-right: 0.4rem;
background-color: WHITESMOKE;
line-height: 1.3rem;
font-size: 0.8rem;
font-weight: bold;
text-align: center;
white-space: nowrap;
direction: rtl;
position: absolute;
left: 1rem;
top: 1.2rem;
height: 1.5rem;
max-width: calc(100% - 7.5rem);
min-width: 6.0rem;
padding-left: 2.1rem;
padding-right: 0.4rem;
background-color: WHITESMOKE;
line-height: 1.3rem;
font-size: 0.8rem;
font-weight: bold;
text-align: center;
white-space: nowrap;
direction: rtl;
}
.issue-id-fadeout {
position: absolute;
left: 2.4rem;
top: 1.3rem;
width: 1.2rem;
height: 1.2rem;
z-index: 0;
background: linear-gradient(to left, rgba(224, 224, 224, 0) 0%, rgba(224, 224, 224, 1) 60%);
position: absolute;
left: 2.4rem;
top: 1.3rem;
width: 1.2rem;
height: 1.2rem;
z-index: 0;
background: linear-gradient(to left, rgba(224, 224, 224, 0) 0%, rgba(224, 224, 224, 1) 60%);
}
.issue-icon {
position: absolute;
left: 0rem;
top: 0rem;
height: 3.0rem;
width: 3.0rem;
border-radius: 50%;
background-color: LIGHTSEAGREEN;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Objects.png);
background-repeat: no-repeat;
background-position: center;
background-size: 63%;
position: absolute;
left: 0rem;
top: 0rem;
height: 3.0rem;
width: 3.0rem;
border-radius: 50%;
background-color: LIGHTSEAGREEN;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Objects.png);
background-repeat: no-repeat;
background-position: center;
background-size: 63%;
}
.issue-icon[type="story"], .issue-icon[type="user story"] {
background-color: GOLD;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Bulb.png);
background-color: GOLD;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Bulb.png);
}
.issue-icon[type="bug"], .issue-icon[type="correction"] {
background-color: CRIMSON;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Bug.png);
background-color: CRIMSON;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Bug.png);
}
.issue-icon[type="epic"] {
background-color: ROYALBLUE;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Flash.png);
background-color: ROYALBLUE;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Flash.png);
}
.issue-icon[type="task"] {
background-color: WHEAT;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Task.png);
background-color: WHEAT;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Task.png);
}
.issue-icon[type="new feature"] {
background-color: LIMEGREEN;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Plus.png);
background-color: LIMEGREEN;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Plus.png);
}
.issue-icon[type="improvement"] {
background-color: CORNFLOWERBLUE;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Arrow.png);
background-color: CORNFLOWERBLUE;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Arrow.png);
}
.issue-estimate {
position: absolute;
left: 2.5rem;
top: 0.0rem;
height: 1.6rem;
width: 1.6rem;
border-radius: 50%;
background-color: WHITESMOKE;
line-height: 1.4rem;
font-size: 0.9rem;
font-weight: bold;
text-align: center;
position: absolute;
left: 2.5rem;
top: 0.0rem;
height: 1.6rem;
width: 1.6rem;
border-radius: 50%;
background-color: WHITESMOKE;
line-height: 1.4rem;
font-size: 0.9rem;
font-weight: bold;
text-align: center;
}
.issue-qr-code {
position: absolute;
left:0rem;
top: 0rem;
width: 2.2rem;
height: 2.2rem;
background-image: url(https://chart.googleapis.com/chart?cht=qr&chs=256x256&chld=L|1&chl=blog.qoomon.com);
background-repeat: no-repeat;
background-size: cover;
background-position: center;
position: absolute;
left: 0rem;
top: 0rem;
width: 2.2rem;
height: 2.2rem;
background-image: url(https://chart.googleapis.com/chart?cht=qr&chs=256x256&chld=L|1&chl=blog.qoomon.com);
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.issue-attachment {
position: absolute;
left:2.5rem;
top: 0rem;
width: 2.0rem;
height: 2.0rem;
border-radius: 50%;
background-color: LIGHTSKYBLUE;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Attachment.png);
background-repeat: no-repeat;
background-position: center;
background-size: 70%;
position: absolute;
left: 2.5rem;
top: 0rem;
width: 2.0rem;
height: 2.0rem;
border-radius: 50%;
background-color: LIGHTSKYBLUE;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Attachment.png);
background-repeat: no-repeat;
background-position: center;
background-size: 70%;
}
.issue-assignee {
position: absolute;
top:0rem;
right:0rem;
width: 2.2rem;
height: 2.2rem;
border-radius: 50%;
background-color: WHITESMOKE;
//background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Person.png);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
//-webkit-filter: contrast(200%) grayscale(100%);
//filter: contrast(200%) grayscale(100%);
text-align: center;
font-weight: bold;
font-size: 1.4rem;
line-height: 1.9rem;
position: absolute;
top: 0rem;
right: 0rem;
width: 2.2rem;
height: 2.2rem;
border-radius: 50%;
background-color: WHITESMOKE;
//background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/Person.png);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
//-webkit-filter: contrast(200%) grayscale(100%);
//filter: contrast(200%) grayscale(100%);
text-align: center;
font-weight: bold;
font-size: 1.4rem;
line-height: 1.9rem;
}
.issue-epic-box {
position: absolute;
right:2.5rem;
top: 0rem;
width: auto;
min-width: 2rem;
width: auto;
max-width: calc(100% - 7.5rem);
height: auto;
max-height: 2.2rem;
padding-top: 0.1rem;
padding-bottom: 0.2rem;
padding-left: 0.3rem;
padding-right: 0.3rem;
text-align: left;
font-size: 0.5rem;
line-height: 0.55rem;
position: absolute;
right: 2.5rem;
top: 0rem;
width: auto;
min-width: 2rem;
width: auto;
max-width: calc(100% - 7.5rem);
height: auto;
max-height: 2.2rem;
padding-top: 0.1rem;
padding-bottom: 0.2rem;
padding-left: 0.3rem;
padding-right: 0.3rem;
text-align: left;
font-size: 0.5rem;
line-height: 0.55rem;
}
.issue-epic-id {
font-size: 0.5rem;
font-weight: bold;
max-width: 1rem;
font-size: 0.5rem;
font-weight: bold;
max-width: 1rem;
}
.issue-epic-name {
margin-left: 0.1rem;
font-size: 0.6rem;
font-weight: bold;
margin-left: 0.1rem;
font-size: 0.6rem;
font-weight: bold;
}
.issue-due-date-box {
position: absolute;
right: 0rem;
top: 0rem;
overflow: visible !important;
position: absolute;
right: 0rem;
top: 0rem;
overflow: visible !important;
}
.issue-due-date {
position: absolute;
top: 1.3rem;
right: 1rem;
width: 5.3rem;
min-width: 2.8rem;
height: 1.3rem;
padding-left: 0.2rem;
padding-right: 1.4rem;
text-align: center;
font-weight: bold;
font-size: 0.7rem;
line-height: 1.0rem;
position: absolute;
top: 1.3rem;
right: 1rem;
width: 5.3rem;
min-width: 2.8rem;
height: 1.3rem;
padding-left: 0.2rem;
padding-right: 1.4rem;
text-align: center;
font-weight: bold;
font-size: 0.7rem;
line-height: 1.0rem;
}
.issue-due-icon {
position: absolute;
top: 0.5rem;
right: 0rem;
width: 2.5rem;
height: 2.5rem;
border-radius: 50%;
background-color: ORCHID;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/AlarmClock.png);
background-repeat: no-repeat;
background-position: center;
background-size: 65%;
position: absolute;
top: 0.5rem;
right: 0rem;
width: 2.5rem;
height: 2.5rem;
border-radius: 50%;
background-color: ORCHID;
background-image: url(https://qoomon.github.io/Jira-Issue-Card-Printer/resources/icons/AlarmClock.png);
background-repeat: no-repeat;
background-position: center;
background-size: 65%;
}
@media print {
@page {
margin: 0.0mm;
padding: 0.0mm;
}
html {
-webkit-print-color-adjust:exact;
print-color-adjust: exact;
}
.card {
page-break-inside: avoid;
}
@page {
margin: 0.0mm;
padding: 0.0mm;
}
html {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.card {
page-break-inside: avoid;
}
}

View File

@ -13,9 +13,9 @@
</div>
<div id="card-print-dialog-footer">
<div class="buttons">
<label style="margin-right:10px"><input id="font-scale-range" type="range" min="0.5" max="1.0" step="0.01" value="1.0" />Scale</label>
<label style="margin-right:10px;"><input id="rowCount" type="text" class="text" maxlength="1" style="width: 10px;" value="2"/>Row Count</label>
<label style="margin-right:10px;"><input id="columnCount" type="text" class="text" maxlength="1" style="width: 10px;" value="1"/>Column Count</label>
<label style="margin-right:10px; padding-right: 3px;"><input id="font-scale-range" type="range" min="0.5" max="1.0" step="0.01" style="width: 100px; position: relative; top: 2px; margin-right:5px;" value="1.0" />Scale</label>
<label style="margin-right:0px;"><input id="rowCount" type="text" class="text" maxlength="1" style="width: 10px;" value="2"/>x</label>
<label style="margin-right:10px;"><input id="columnCount" type="text" class="text" maxlength="1" style="width: 10px; margin-right:5px;" value="1"/>Page Grid</label>
<label style="margin-right:10px"><input id="single-card-page-checkbox" type="checkbox"/>Single Card Per Page</label>
<label style="margin-right:10px"><input id="hide-description-checkbox" type="checkbox"/>Hide Description</label>
<label style="margin-right:10px"><input id="hide-assignee-checkbox" type="checkbox"/>Hide Assignee</label>

View File