function card_title(text) {
return '
' + text + '
';
}
function card_subtitle(text) {
return '' + text + '
';
}
function card_ruler() {
return '';
}
function card_property(name, text) {
var result = "";
result += '';
result += '
' + name.trim() + '
';
result += '
' + text.trim() + '
';
result += '
';
return result;
}
function card_description(name, text) {
var result = "";
result += '';
result += '
' + name.trim() + '
';
result += '
' + text.trim() + '
';
result += '
';
return result;
}
function card_section(text) {
return ''+text+'
';
}
function card_fill1() {
return '';
}
function card_fill2() {
return '';
}
function card_fill3() {
return '';
}
function card_fill4() {
return '';
}
function card_icon(name) {
var result = "";
result += '';
result += '
';
result += '
';
result += '
';
return result;
}
function card_contents(contents) {
var result = "";
result += '';
result += contents.map(function (value) {
var parts = value.split("|").map(function (str) { return str.trim(); });
switch (parts[0]) {
case 'subtitle': return card_subtitle(parts[1], parts[2]); break;
case 'property': return card_property(parts[1], parts[2]); break;
case 'rule': return card_ruler(); break;
case 'description': return card_description(parts[1], parts[2]); break;
case 'text': return card_description("", parts[1]); break;
case 'fill-1': return card_fill1(); break;
case 'fill-2': return card_fill2(); break;
case 'fill-3': return card_fill3(); break;
case 'fill-4': return card_fill4(); break;
case 'section': return card_section(parts[1]); break;
default: return "";
}
}).join("\n");
result += '
';
return result;
}
var card_default_data = {
count:1,
title:"",
icon:"",
contents:[],
color: "white"
}
function card(data) {
var front = "";
var back = "";
front += '';
front += card_icon(data.icon);
front += card_title(data.title);
front += card_contents(data.contents);
front += '
';
var icon_back = data.icon_back || data.icon;
back += '';
back += '
';
back += '
';
back += '
';
back += '
';
back += '
';
back += '
';
var count = data.count || 1;
var result = { front: [], back: [] };
for (var i = 0; i < count; ++i) {
result.front.push(front);
result.back.push(back);
}
return result;
}
function card_split_pages(data, cards_per_page) {
var result = [];
for (var i = 0; i < data.length; i += cards_per_page) {
var page = data.slice(i, i + cards_per_page);
result.push(page);
}
return result;
}
function cards_flip_left_right(cards) {
return [
cards[2], cards[1], cards[0],
cards[5], cards[4], cards[3],
cards[8], cards[7], cards[6]
];
}
function card_generate_html(datas) {
var front = [];
var back = [];
// Generate HTML for each card
datas.forEach(function (data) {
var result = card(data);
front = front.concat(result.front);
back = back.concat(result.back);
});
// Fill the last page with blank cards
if (front.length % 9 !== 0) {
var result = card(card_default_data);
for (var i = front.length % 9; i < 9; ++i) {
front = front.concat(result.front);
back = back.concat(result.back);
}
}
// Split pages
front_pages = card_split_pages(front, 9);
back_pages = card_split_pages(back, 9);
// Clear the previous content of the document
var parent_element = document.getElementsByClassName("container")[0];
while (parent_element.hasChildNodes()) {
parent_element.removeChild(parent_element.lastChild);
}
// Add generated HTML to the document
for (var i = 0; i < front_pages.length; ++i) {
var page = document.createElement("page");
page.setAttribute("size", "A4");
page.innerHTML = front_pages[i].join("\n");
parent_element.appendChild(page);
var page = document.createElement("page");
page.setAttribute("size", "A4");
page.innerHTML = cards_flip_left_right(back_pages[i]).join("\n");
parent_element.appendChild(page);
}
}
//card_generate_html(card_data);