1
0
mirror of https://github.com/tomasvarg/gallerymaker.git synced 2026-03-01 08:28:48 +00:00

Page creation from templates and generated content; added write/copyFile helpers

This commit is contained in:
Tomas Varga 2016-10-30 02:28:14 +02:00
parent 1ef87937e6
commit 58c7b149dd
6 changed files with 98 additions and 23 deletions

2
src/client/index.css Normal file
View File

@ -0,0 +1,2 @@
body { font-family: Tahoma, sans-serif; margin: 0; }
h1 { font-size: 24px; padding-left: 20px; }

11
src/client/index.html Normal file
View File

@ -0,0 +1,11 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Gallery</title>
<link href="index.css" rel="stylesheet" type="text/css">
<script src="index.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>

10
src/client/index.js Normal file
View File

@ -0,0 +1,10 @@
(function () {
'use strict';
addEventListener('DOMContentLoaded', init);
function init() {
console.log('index initialized');
}
}());

View File

@ -0,0 +1,18 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Gallery</title>
<script src="lib/webcomponents-lite.js"></script>
<script>
/*
window.Polymer = window.Polymer || {};
window.Polymer.dom = 'shadow';
*/
</script>
<link rel="import" href="gallery-wc.html">
</head>
<body>
<gallery-wc></treegrid-wc>
</body>
</html>

View File

@ -11,10 +11,13 @@ var cmd = process.argv[2]
var idir = process.argv[3]; var idir = process.argv[3];
var odir = sanitize(process.argv[4] || idir + '.web'); var odir = sanitize(process.argv[4] || idir + '.web');
var clientDir = path.join(__dirname, 'client');
var conf = { var conf = {
width: 700, width: 700,
quality: 80, quality: 80,
debug: true debug: true,
template: 'index.html'
}; };
var EOL = "\n"; var EOL = "\n";
var DEPTH = 2; var DEPTH = 2;
@ -99,16 +102,10 @@ function prepareImages() {
}) })
.then(cont => { .then(cont => {
log('Image preparation done!'); log('Image preparation done!');
return new Promise((resolve, reject) => { return utils.writeFile(JSON.stringify(cont), 'content.json', odir);
fs.writeFile(path.join(odir, 'content.json'), JSON.stringify(cont), err => {
if (err) reject('Writing content file failed: ' + err)
log('Written content file!')
resolve(cont);
});
})
}) })
.then(cont => { .then(cont => {
log('content:', util.inspect(cont, { showHidden: false, depth: null })); log('Content:', util.inspect(cont, { showHidden: false, depth: null }));
return cont; return cont;
}) })
.catch(err => { .catch(err => {
@ -126,19 +123,15 @@ function generateList(cont) {
return cont return cont
}) })
.then(cont => getListEntryHtml(cont.cont)) .then(cont => getListEntryHtml(cont.cont))
.then(html => { .then(html => getPageHtml(html))
log('Image list prepared!'); .then(html => Promise.all([
return new Promise((resolve, reject) => { utils.writeFile(html, 'list.html', odir),
fs.writeFile(path.join(odir, 'list.html'), html, err => { utils.copyFile(clientDir, 'index.css', odir),
if (err) reject('Writing content file failed: ' + err) utils.copyFile(clientDir, 'index.js', odir)
log('Written content file!') ]))
resolve(html); .then(res => {
}); log('Generated files:', res);
}) return res[0];
})
.then(html => {
log("html:\n" + html);
return html;
}) })
.catch(err => { .catch(err => {
console.log(err); console.log(err);
@ -163,6 +156,22 @@ function getListEntryHtml(cont, dir, depth) {
return html; return html;
} }
function getPageHtml(htmlPart, pageFname) {
pageFname = pageFname || conf.template;
return new Promise((resolve, reject) => {
var pageFile = path.join(clientDir, pageFname);
fs.readFile(pageFile, 'utf-8', (err, data) => {
if (err) reject(err);
else if (!data) reject('File empty: ' + pageFile);
resolve(data);
});
})
.then((pageHtml) => {
return pageHtml.substring(0, pageHtml.search('[ ]*</body>')) + htmlPart
+ pageHtml.substr(pageHtml.search('[ ]*</body>'));
});
}
function generateGallery(cont) { function generateGallery(cont) {
log('Generating gallery'); log('Generating gallery');

View File

@ -1,7 +1,14 @@
/* global Promise */
var fs = require('fs');
var path = require('path');
module.exports = { module.exports = {
indent: indent, indent: indent,
stringContains: stringContains, stringContains: stringContains,
diaStrip: diaStrip diaStrip: diaStrip,
writeFile: writeFile,
copyFile: copyFile
}; };
function indent(depth, baseDepth, multip, ch, empty) { function indent(depth, baseDepth, multip, ch, empty) {
@ -113,3 +120,21 @@ function diaStrip(str) {
return str; return str;
} }
function writeFile(data, fname, dir) {
return new Promise((resolve, reject) => fs.writeFile(path.join(dir, fname), data, err => {
if (err) reject('Writing content file failed: ' + err)
resolve(fname);
}));
}
function copyFile(srcDir, fname, destDir) {
return new Promise((resolve, reject) => {
var rs = fs.createReadStream(path.join(srcDir, fname));
var ws = fs.createWriteStream(path.join(destDir, fname));
rs.on('error', err => reject('File reading failed: ' + err));
ws.on('error', err => reject('File writing failed: ' + err));
ws.on('finish', () => resolve(fname));
rs.pipe(ws);
});
}