summaryrefslogtreecommitdiff
path: root/packages/backend/render-examples.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-09-30 18:39:32 -0300
committerSebastian <sebasjm@gmail.com>2021-09-30 18:39:32 -0300
commitb783e7219cc6ee4ae60301f560e2edf6cc44a489 (patch)
tree4c760a2c24f80bfad60b3e7af1c1a77b0d7be0e8 /packages/backend/render-examples.ts
parentd658ffbf0124b59b173c920ccbcd7ba7a33268fa (diff)
downloadmerchant-backoffice-b783e7219cc6ee4ae60301f560e2edf6cc44a489.tar.gz
merchant-backoffice-b783e7219cc6ee4ae60301f560e2edf6cc44a489.tar.bz2
merchant-backoffice-b783e7219cc6ee4ae60301f560e2edf6cc44a489.zip
new show template and mustache example
Diffstat (limited to 'packages/backend/render-examples.ts')
-rw-r--r--packages/backend/render-examples.ts83
1 files changed, 83 insertions, 0 deletions
diff --git a/packages/backend/render-examples.ts b/packages/backend/render-examples.ts
new file mode 100644
index 0000000..c1da3ce
--- /dev/null
+++ b/packages/backend/render-examples.ts
@@ -0,0 +1,83 @@
+/*
+ This file is part of GNU Taler
+ (C) 2021 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+*
+* @author Sebastian Javier Marchano (sebasjm)
+*/
+
+import mustache from "mustache";
+import fs from "fs";
+import { format, formatDuration, intervalToDuration } from "date-fns";
+
+/**
+ * This script will emulate what the merchant backend will do when being requested
+ *
+*/
+
+const sourceDirectory = process.argv[2]
+const destDirectory = process.argv[3]
+
+if (!sourceDirectory || !destDirectory) {
+ console.log('usage: render-mustache <source-directory> <dest-directory>')
+ process.exit(1);
+}
+
+if (!fs.existsSync(destDirectory)) {
+ fs.mkdirSync(destDirectory);
+}
+
+/**
+ * Load all the html files
+ */
+const files = fs.readdirSync(sourceDirectory).filter(f => /.html/.test(f))
+
+files.forEach(file => {
+ const html = fs.readFileSync(`${sourceDirectory}/${file}`, 'utf8')
+
+ const testName = file.replace('.html', '')
+ if (testName !== 'ShowOrderDetails') return;
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ const { exampleData } = require(`./src/pages/${testName}.examples`)
+
+ Object.keys(exampleData).forEach(exampleName => {
+ const example = exampleData[exampleName]
+
+ //enhance the example with more information
+ example.contract_terms_json = () => JSON.stringify(example.contract_terms);
+ example.contract_terms.timestamp_str = () => example.contract_terms.timestamp && format(example.contract_terms.timestamp.t_ms, 'dd MMM yyyy HH:mm:ss');
+
+ example.contract_terms.hasProducts = () => example.contract_terms.products?.length > 0;
+ example.contract_terms.hasAuditors = () => example.contract_terms.auditors?.length > 0;
+ example.contract_terms.hasExchanges = () => example.contract_terms.exchanges?.length > 0;
+
+ example.contract_terms.products.forEach(p => {
+ p.delivery_date_str = () => p.delivery_date && format(p.delivery_date.t_ms, 'dd MM yyyy HH:mm:ss')
+ p.hasTaxes = () => p.taxes?.length > 0
+ })
+ example.contract_terms.has_delivery_info = () => example.contract_terms.delivery_date || example.contract_terms.delivery_location
+
+ example.contract_terms.delivery_date_str = () => example.contract_terms.delivery_date && format(example.contract_terms.delivery_date.t_ms, 'dd MM yyyy HH:mm:ss')
+ example.contract_terms.pay_deadline_str = () => example.contract_terms.pay_deadline && format(example.contract_terms.pay_deadline.t_ms, 'dd MM yyyy HH:mm:ss')
+ example.contract_terms.wire_transfer_deadline_str = () => example.contract_terms.wire_transfer_deadline && format(example.contract_terms.wire_transfer_deadline.t_ms, 'dd MM yyyy HH:mm:ss')
+ example.contract_terms.refund_deadline_str = () => example.contract_terms.refund_deadline && format(example.contract_terms.refund_deadline.t_ms, 'dd MM yyyy HH:mm:ss')
+ example.contract_terms.auto_refund_str = () => example.contract_terms.auto_refund && formatDuration(intervalToDuration({ start: 0, end: example.contract_terms.auto_refund.d_ms }))
+
+ const output = mustache.render(html, example);
+
+ fs.writeFileSync(`${destDirectory}/${testName}.${exampleName}.html`, output)
+ })
+})