Merge branch 'gh-pages' into develop

Conflicts:
	bookmarklet.js
This commit is contained in:
Bengt Brodersen 2015-04-18 01:40:58 +02:00
commit e894e7548c

View File

@ -1,5 +1,5 @@
(function () { (function () {
var version = "3.1.21"; var version = "3.2.0";
console.log("Version: " + version); console.log("Version: " + version);
var isDev = typeof isDev !== 'undefined' && isDev ; var isDev = typeof isDev !== 'undefined' && isDev ;
@ -100,6 +100,30 @@
printWindow.print(); printWindow.print();
} }
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();
}
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");
}
}
function renderCards(issueKeyList, callback) { function renderCards(issueKeyList, callback) {
var printFrame = jQuery("#card-print-dialog-content-iframe"); var printFrame = jQuery("#card-print-dialog-content-iframe");
@ -200,7 +224,7 @@
var avatarUrl = assignee.avatarUrls['48x48']; var avatarUrl = assignee.avatarUrls['48x48'];
if(avatarUrl.indexOf("ownerId=") < 0){ if(avatarUrl.indexOf("ownerId=") < 0){
var displayName = assignee.displayName; var displayName = assignee.displayName;
card.find(".assignee").text(displayName[0]); card.find(".assignee").text(displayName[0].toUpperCase());
} }
else { else {
card.find(".assignee").css("background-image", "url('" + avatarUrl + "')"); card.find(".assignee").css("background-image", "url('" + avatarUrl + "')");
@ -218,79 +242,6 @@
} else { } else {
card.find(".due").addClass("hidden"); card.find(".due").addClass("hidden");
} }
<<<<<<< HEAD
}
function loadCardDataJSON(issueKey, callback) {
//https://docs.atlassian.com/jira/REST/latest/
var url = '/rest/api/2/issue/' + issueKey + '?expand=renderedFields,names';
console.logDebug("IssueUrl: " + window.location.hostname + url);
console.logDebug("Issue: " + issueKey + " Loading...");
return jQuery.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(responseData){
fields = responseData.fields;
// add custom fields with field names
jQuery.each(responseData.names, function(key, value) {
if(key.startsWith("customfield_")){
var newFieldId = value.toCamelCase();
console.logTrace("add new field: " + newFieldId +" with value from "+ key);
fields[value.toCamelCase()] = fields[key];
}
});
console.logDebug("Issue: " + issueKey + " Loaded!");
callback(responseData);
},
data: {},
});
}
//############################################################################################################################
//############################################################################################################################
//############################################################################################################################
// http://www.cssdesk.com/T9hXg
function printOverlayHTML(){
var result = jQuery(document.createElement('div'))
.attr("id","card-print-overlay")
.html(multilineString(function() {
/*!
<div id="card-print-dialog">
<div id="card-print-dialog-header">
<div id="card-print-dialog-title">Card Print</div>
<div id="buttons">
<input id="report-issue" type="button" class="aui-button" value="Report Issues" />
<input id="about" type="button" class="aui-button" value="About" />
</div>
</div>
<div id="card-print-dialog-content">
<iframe id="card-print-dialog-content-iframe"></iframe>
</div>
<div id="card-print-dialog-footer">
<input id="card-print-dialog-print" type="button" class="aui-button aui-button-primary" value="Print" />
<a id="card-print-dialog-cancel" title="Cancel" class="cancel">Cancel</a>
</div>
</div>
*/
}));
// info
result.find("#report-issue")
.click(function(event){
window.open('https://github.com/qoomon/Jira-Issue-Card-Printer/issues');
return false;
});
=======
//Attachment //Attachment
var hasAttachment = false; var hasAttachment = false;
@ -410,33 +361,61 @@
<input id="report-issue" type="button" class="aui-button" value="Report Issues" /> <input id="report-issue" type="button" class="aui-button" value="Report Issues" />
<input id="about" type="button" class="aui-button" value="About" /> <input id="about" type="button" class="aui-button" value="About" />
</div> </div>
<div id="buttons">
<input id="card-print-dialog-print" type="button" class="aui-button aui-button-primary" value="Print" />
<a id="card-print-dialog-cancel" title="Cancel" class="cancel">Cancel</a>
</div>
</div> </div>
<div id="card-print-dialog-content"> <div id="card-print-dialog-content">
<iframe id="card-print-dialog-content-iframe"></iframe> <iframe id="card-print-dialog-content-iframe"></iframe>
</div> </div>
<div id="card-print-dialog-footer"></div> <div id="card-print-dialog-footer">
<div class="buttons">
<label style="margin-right:10px"><input id="card-scale-range" type="range" min="0.2" max="1.6" step="0.1" value="1.0" />Scale</label>
<label style="margin-right:10px"><input id="hide-description-checkbox" type="checkbox"/>Hide Description</label>
<label style="margin-right:10px"><input id="multi-card-page-checkbox" type="checkbox"/>Multi Card Page</label>
<input id="card-print-dialog-print" type="button" class="aui-button aui-button-primary" value="Print" />
<a id="card-print-dialog-cancel" title="Cancel" class="cancel">Cancel</a>
</div>
</div>
</div> </div>
*/ */
})); }));
// info
>>>>>>> gh-pages
// info
result.find("#report-issue") result.find("#report-issue")
.click(function(event){ .click(function(event){
window.open('https://github.com/qoomon/Jira-Issue-Card-Printer/issues'); window.open('https://github.com/qoomon/Jira-Issue-Card-Printer/issues');
return false; return false;
}); });
result.find("#about") result.find("#about")
.click(function(event){ .click(function(event){
window.open('http://qoomon.blogspot.de/2014/01/jira-issue-card-printer-bookmarklet.html'); window.open('http://qoomon.blogspot.de/2014/01/jira-issue-card-printer-bookmarklet.html');
return false; return false;
}); });
// enable multe card page
result.find("#multi-card-page-checkbox")
.click(function() {
endableMultiCardPage(this.checked);
return true;
});
// hide description
result.find("#hide-description-checkbox")
.click(function() {
hideDescription(this.checked);
return true;
});
// scale card
result.find("#card-scale-range").on("input", function() {
var printFrame = jQuery("#card-print-dialog-content-iframe");
var printWindow = printFrame[0].contentWindow;
var printDocument = printWindow.document;
jQuery("HTML", printDocument).css("font-size", jQuery(this).val() +"cm");
});
// print // print
result.find("#card-print-dialog-print") result.find("#card-print-dialog-print")
@ -457,7 +436,7 @@
if( event.target == this ){ if( event.target == this ){
closePrintPreview(); closePrintPreview();
} }
return false; return true;
}); });
jQuery(document).keyup(function(e) { jQuery(document).keyup(function(e) {
@ -559,9 +538,8 @@
} }
#info { #info {
position: absolute; position: relative;
right: 400px; float: right;
float: left;
display: inline-block; display: inline-block;
height 30px; height 30px;
} }
@ -577,6 +555,13 @@
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
} }
.cancel{
cursor: pointer;
font-size: 14px;
display: inline-block;
padding: 5px 10px;
vertical-align: baseline;
}
*/ */
})); }));
return result; return result;
@ -590,16 +575,21 @@
.attr("type", "text/css") .attr("type", "text/css")
.html(multilineString(function() { .html(multilineString(function() {
/*! /*!
.page { HTML {
font-size: 1.0cm;
}
.page {
position: relative; position: relative;
overflow: auto; overflow: auto;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
padding: 1.0rem;
margin: 1.0rem;
width: auto; width: auto;
max-width: 29.7cm; min-width: 21rem;
min-width: 21cm;
height: auto; height: auto;
page-break-after: always; page-break-after: always;
page-break-inside: avoid;
background:rgba(256, 256, 256, 0.85); background:rgba(256, 256, 256, 0.85);
@ -609,166 +599,51 @@
border-style: solid; border-style: solid;
border-color: #bfbfbf; border-color: #bfbfbf;
border-width: 0.05cm; border-width: 0.05rem;
-moz-border-radius: 0.1cm; -moz-border-radius: 0.1rem;
-webkit-border-radius: 0.1cm; -webkit-border-radius: 0.1rem;
border-radius: 0.1cm; border-radius: 0.1rem;
padding: 1.0cm; overflow: hidden;
margin: 1.0cm;
} }
.multiCardPage {
page-break-after: avoid;
}
@media print { @media print {
.page { .page {
<<<<<<< HEAD background:rgba(256, 256, 256, 0.0);
border:none; border-style: none;
} padding: 0.0rem;
margin: 0.0rem;
margin-top: 2.0rem;
#card-print-dialog-footer { -webkit-box-shadow: none;
position: relative; -moz-box-shadow: none;
background: #f0f0f0; box-shadow: none;
border-top: 1px solid #cccccc;
height: 30px;
padding: 10px;
text-align: right;
}
#buttons { -webkit-print-color-adjust:exact;
position: relative; print-color-adjust: exact;
float: right;
display: inline-block;
height 30px;
}
#card-print-dialog-title{ -webkit-filter:opacity(1.0);
position: relative; filter:opacity(1.0);
float: left; }
color: rgb(51, 51, 51);
display: block;
font-family: Arial, sans-serif;
font-size: 20px;
font-weight: normal;
height: 30px;
line-height: 30px;
}
*/
}));
return result;
}
.page:first-of-type {
margin-top: 0rem;
}
function printPanelPageCSS(){ .page:last-of-type {
page-break-after: auto;
}
var result = jQuery(document.createElement('style')) }
.attr("id", "printPanelPageStyle")
.attr("type", "text/css")
.html(multilineString(function() {
/*!
.page {
position: relative;
overflow: auto;
margin-left: auto;
margin-right: auto;
width: auto;
max-width: 29.7cm;
min-width: 21cm;
height: auto;
=======
>>>>>>> gh-pages
page-break-after: always;
background:rgba(256, 256, 256, 0.0);
border-style: none;
padding: 0.0cm;
margin: 0.0cm;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
-webkit-print-color-adjust:exact;
print-color-adjust: exact;
-webkit-filter:opacity(1.0);
filter:opacity(1.0);
}
<<<<<<< HEAD
@media print {
.page {
page-break-after: always;
background:rgba(256, 256, 256, 0.0);
border-style: none;
padding: 0.0cm;
margin: 0.0cm;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
-webkit-print-color-adjust:exact;
print-color-adjust: exact;
-webkit-filter:opacity(1.0);
filter:opacity(1.0);
}
.page:last-of-type {
page-break-after: auto;
}
}
*/
}));
return result;
}
// http://www.cssdesk.com/scHcP
function newPage(issueKey){
var page = jQuery(document.createElement('div'))
.attr("id",issueKey)
.addClass("page")
.html(multilineString(function() {
/*!
<div class="card">
<div class="author">Bengt Brodersen - qoomon.com</div>
<div class="card-border"></div>
<div class="card-header">
<div class="type-icon badge circular"></div>
<div class="key badge"></div>
<div class="estimate badge circular"></div>
<div class="due">
<div class="due-icon badge circular "></div>
<div class="due-date badge"></div>
</div>
</div>
<div class="card-content">
<div class="content-header">
<span class="summary"></span>
</div>
<div class="description"></div>
</div>
<div class="card-footer">
<div class="assignee badge circular"></div>
<div class="qr-code badge"></div>
<div class="attachment badge circular"></div>
<div class="epic badge">
<span class="epic-key"></span>
<span class="epic-name"></span>
=======
.page:last-of-type {
page-break-after: auto;
}
}
*/ */
})); }));
@ -782,10 +657,11 @@
var page = jQuery(document.createElement('div')) var page = jQuery(document.createElement('div'))
.attr("id",issueKey) .attr("id",issueKey)
.addClass("page") .addClass("page")
.addClass("singleCardPage")
.html(multilineString(function() { .html(multilineString(function() {
/*! /*!
<div class="card"> <div class="card">
<div class="author">Bengt Brodersen - qoomon.com</div> <div class="author">qoomon.com<br>Bengt Brodersen</div>
<div class="card-border"></div> <div class="card-border"></div>
<div class="card-header"> <div class="card-header">
<div class="type-icon badge circular"></div> <div class="type-icon badge circular"></div>
@ -799,7 +675,6 @@
<div class="card-content"> <div class="card-content">
<div class="content-header"> <div class="content-header">
<span class="summary" contenteditable="true"></span> <span class="summary" contenteditable="true"></span>
>>>>>>> gh-pages
</div> </div>
<div class="description" contenteditable="true"></div> <div class="description" contenteditable="true"></div>
</div> </div>
@ -846,12 +721,12 @@
.shadow { .shadow {
border-style: solid; border-style: solid;
border-color: #2f2f2f; border-color: #2f2f2f;
border-top-width: 0.14cm; border-top-width: 0.14rem;
border-left-width: 0.14cm; border-left-width: 0.14rem;
border-bottom-width: 0.24cm; border-bottom-width: 0.24rem;
border-right-width: 0.24cm; border-right-width: 0.24rem;
-webkit-border-radius: 0.25cm; -webkit-border-radius: 0.25rem;
border-radius: 0.25cm; border-radius: 0.25rem;
// -webkit-filter: drop-shadow(0px 5px 10px black) // -webkit-filter: drop-shadow(0px 5px 10px black)
} }
.circular { .circular {
@ -860,34 +735,36 @@
border-radius: 50%; border-radius: 50%;
} }
.badge { .badge {
width: 3.2cm; width: 3.2rem;
height: 3.2cm; height: 3.2rem;
background: #d0d0d0; background: #d0d0d0;
} }
.card { .card {
position: relative; position: relative;
min-width: 21.0cm; min-width: 21.0rem;
} }
.author { .author {
z-index: 999; z-index: 999;
position: absolute; position: absolute;
top:3.1cm; top:2.0rem;
right:0.7cm; right:-0.25rem;
-webkit-transform-origin: 100% 100%; -webkit-transform-origin: 100% 100%;
transform-origin: 100% 100%; transform-origin: 100% 100%;
-webkit-transform: rotate(-90deg); -webkit-transform: rotate(-90deg);
transform: rotate(-90deg); transform: rotate(-90deg);
font-size: 0.4cm; font-size: 0.4rem;
line-height: 0.8rem;
text-align: center;
color: DARKGREY; color: DARKGREY;
} }
.card-border { .card-border {
position: absolute; position: absolute;
top:2.0cm; top:2.0rem;
left:0.4cm; left:0.4rem;
right:0.4cm; right:0.4rem;
height: calc(100% - 4.0cm); height: calc(100% - 4.0rem);
background: #ffffff; background: #ffffff;
} }
@ -896,17 +773,17 @@
} }
.card-content { .card-content {
position: relative; position: relative;
margin-top: 0.3cm; margin-top: 0.3rem;
margin-left: 1.0cm; margin-left: 1.0rem;
margin-right: 1.1cm; margin-right: 1.1rem;
margin-bottom: 0.2cm; margin-bottom: 0.2rem;
min-height: 3.0cm; min-height: 1.2rem;
} }
.content-header { .content-header {
position: relative; position: relative;
font-size: 1.1cm; font-size: 1.1rem;
line-height: 1.1cm; line-height: 1.1rem;
margin-bottom: 0.6cm; margin-bottom: 0.6rem;
} }
.card-footer { .card-footer {
position: relative; position: relative;
@ -916,24 +793,23 @@
font-weight: bold; font-weight: bold;
} }
.description { .description {
min-height: 3.0cm; font-size: 0.6rem;
font-size: 0.6cm; line-height: 0.6rem;
line-height: 0.6cm;
} }
.key { .key {
position: absolute; position: absolute;
float: left; float: left;
width: auto; width: auto;
min-width: 4.4cm; min-width: 4.4rem;
height: 1.35cm; height: 1.35rem;
left: 3.0cm; left: 3.0rem;
margin-top: 1.2cm; margin-top: 1.2rem;
padding-left: 0.7cm; padding-left: 0.7rem;
padding-right: 0.4cm; padding-right: 0.4rem;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
font-size: 1.0cm; font-size: 1.0rem;
line-height: 1.6cm; line-height: 1.5rem;
} }
.type-icon { .type-icon {
position: relative; position: relative;
@ -963,15 +839,15 @@
.estimate { .estimate {
position: relative; position: relative;
float: left; float: left;
left: -0.65cm; left: -0.65rem;
top:-1.5cm; top:-1.5rem;
height: 1.1cm; height: 1.1rem;
width: 1.1cm; width: 1.1rem;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
font-size: 1cm; font-size: 1rem;
line-height: 1.15cm; line-height: 1.15rem;
margin-top:1.5cm; margin-top:1.5rem;
z-index: 999; z-index: 999;
} }
@ -982,9 +858,9 @@
.due-icon { .due-icon {
position: relative; position: relative;
float:right; float:right;
width: 2.5cm; width: 2.5rem;
height: 2.5cm; height: 2.5rem;
margin-top: 0.4cm; margin-top: 0.4rem;
background-color: MEDIUMPURPLE; background-color: MEDIUMPURPLE;
background-image: url(https://googledrive.com/host/0Bwgd0mVaLU_KU0N5b3JyRnJaNTA/resources/icons/AlarmClock.png); background-image: url(https://googledrive.com/host/0Bwgd0mVaLU_KU0N5b3JyRnJaNTA/resources/icons/AlarmClock.png);
background-repeat: no-repeat; background-repeat: no-repeat;
@ -996,26 +872,26 @@
.due-date { .due-date {
position: relative; position: relative;
float: right; float: right;
right: -0.6cm; right: -0.6rem;
width: auto; width: auto;
min-width: 2.8cm; min-width: 2.8rem;
height: auto; height: auto;
margin-top: 1.3cm; margin-top: 1.3rem;
padding-top: 0.2cm; padding-top: 0.2rem;
padding-bottom: 0.2cm; padding-bottom: 0.2rem;
padding-left: 0.3cm; padding-left: 0.3rem;
padding-right: 0.6cm; padding-right: 0.6rem;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
font-size: 0.7cm; font-size: 0.7rem;
line-height: 0.7cm; line-height: 0.7rem;
} }
.attachment { .attachment {
position: relative; position: relative;
float: left; float: left;
margin-left: 0.6cm; margin-left: 0.6rem;
width: 2.1cm; width: 2.1rem;
height: 2.1cm; height: 2.1rem;
background-color: LIGHTSKYBLUE; background-color: LIGHTSKYBLUE;
background-image: url(https://images.weserv.nl/?url=www.iconsdb.com/icons/download/color/2f2f2f/attach-256.png); background-image: url(https://images.weserv.nl/?url=www.iconsdb.com/icons/download/color/2f2f2f/attach-256.png);
background-repeat: no-repeat; background-repeat: no-repeat;
@ -1027,12 +903,12 @@
.assignee { .assignee {
position: relative; position: relative;
float: right; float: right;
width: 2.1cm; width: 2.1rem;
height: 2.1cm; height: 2.1rem;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
font-size: 1.8cm; font-size: 1.8rem;
line-height: 2.5cm; line-height: 2.2rem;
background-image: url(https://images.weserv.nl/?url=www.iconsdb.com/icons/download/color/aaaaaa/contacts-256.png); background-image: url(https://images.weserv.nl/?url=www.iconsdb.com/icons/download/color/aaaaaa/contacts-256.png);
background-repeat: no-repeat; background-repeat: no-repeat;
-webkit-background-size: cover; -webkit-background-size: cover;
@ -1046,8 +922,8 @@
.qr-code { .qr-code {
position: relative; position: relative;
float: left; float: left;
width: 2.1cm; width: 2.1rem;
height: 2.1cm; height: 2.1rem;
background-image: url(https://chart.googleapis.com/chart?cht=qr&chs=256x256&chld=L|1&chl=blog.qoomon.com); background-image: url(https://chart.googleapis.com/chart?cht=qr&chs=256x256&chld=L|1&chl=blog.qoomon.com);
background-repeat: no-repeat; background-repeat: no-repeat;
-webkit-background-size: cover; -webkit-background-size: cover;
@ -1059,15 +935,15 @@
height: auto; height: auto;
position: relative; position: relative;
float:right; float:right;
margin-right:0.6cm; margin-right:0.6rem;
padding-top: 0.2cm; padding-top: 0.2rem;
padding-bottom: 0.2cm; padding-bottom: 0.2rem;
padding-left: 0.3cm; padding-left: 0.3rem;
padding-right: 0.3cm; padding-right: 0.3rem;
text-align: left; text-align: left;
font-size: 0.7cm; font-size: 0.7rem;
line-height: 0.7cm; line-height: 0.7rem;
max-width: calc( 100% - 10.2cm); max-width: calc( 100% - 10.2rem);
} }
.epic-key { .epic-key {
} }
@ -1252,7 +1128,7 @@
// Time // Time
a: function() { return this.getHours() < 12 ? 'am' : 'pm'; }, a: function() { return this.getHours() < 12 ? 'am' : 'pm'; },
A: function() { return this.getHours() < 12 ? 'AM' : 'PM'; }, A: function() { return this.getHours() < 12 ? 'AM' : 'PM'; },
B: function() { return Math.floor((((this.getUTCHours() + 1) % 24) + this.getUTCMinutes() / 60 + this.getUTCSeconds() / 3600) * 1000 / 24); }, // Fixed now B: function() { return Math.floor((((this.getUTCHours() + 1) % 24) + this.getUTreminutes() / 60 + this.getUTCSeconds() / 3600) * 1000 / 24); }, // Fixed now
g: function() { return this.getHours() % 12 || 12; }, g: function() { return this.getHours() % 12 || 12; },
G: function() { return this.getHours(); }, G: function() { return this.getHours(); },
h: function() { return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12); }, h: function() { return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12); },
@ -1303,4 +1179,3 @@
}); });
}; };
})(); })();