@genesislcap/blank-app-seed 3.14.0 → 3.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  const versions = require('./versions.json');
2
- const { registerPartials, generateRoute, generateEmptyCsv, formatRouteData, validateRoute } = require('./utils');
2
+ const { registerPartials, generateRoute, generateCsv, getCombinedCsvData, formatRouteData, validateRoute } = require('./utils');
3
3
 
4
4
  /**
5
5
  * Signature is `async (data: inquirer.Answers, utils: SeedConfigurationUtils)`
@@ -30,11 +30,8 @@ module.exports = async (data, utils) => {
30
30
  });
31
31
 
32
32
  data.csv
33
- .map(entity => ({
34
- name: entity.name.toUpperCase(),
35
- fields: entity.fields.map( (field, index) => ({name: field.toUpperCase(), isLast: index === (entity.fields.length -1) }))
36
- }))
37
- .forEach(entity => {
38
- generateEmptyCsv(entity, data.appName, utils);
33
+ .map((entity) => getCombinedCsvData(entity))
34
+ .forEach((entity) => {
35
+ generateCsv(entity, utils);
39
36
  });
40
37
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/blank-app-seed-config",
3
3
  "description": "Genesis Blank App Seed Configuration",
4
- "version": "3.14.0",
4
+ "version": "3.15.0",
5
5
  "license": "Apache-2.0",
6
6
  "genxSeedConfig": {
7
7
  "exclude": [
@@ -1 +1,6 @@
1
- {{#each entity.fields}}{{this.name}}{{#unless this.isLast }},{{/unless}}{{/each}}
1
+ {{#each entity.fields}}{{this.name}}{{#unless this.isLast }},{{/unless}}{{/each}}
2
+ {{#if entity.data}}
3
+ {{#each entity.data}}
4
+ {{#each this.rows}}{{this.name}}{{#unless this.isLast }},{{/unless}}{{/each}}
5
+ {{/each}}
6
+ {{/if}}
@@ -1,10 +1,11 @@
1
+ import { isDev } from '@genesislcap/foundation-utils';
1
2
  import { html, whenElse } from '@genesislcap/web-core';
2
3
  import { getDateFormatter, getNumberFormatter, getViewUpdateRightComponent{{#if route.FDC3EventHandlersEnabled}}, sendEventOnChannel{{/if}} } from '../../utils';
3
4
  import type { {{pascalCase route.name}} } from './{{kebabCase route.name}}';
4
5
 
5
6
  export const {{pascalCase route.name}}Template = html<{{pascalCase route.name}}>`
6
7
  {{#if route.tiles}}
7
- <rapid-layout auto-save-key="{{route.layoutKey}}">
8
+ <rapid-layout auto-save-key="${() => (isDev() ? null : '{{route.layoutKey}}')}">
8
9
  {{> (lookup ./route 'layoutType') }}
9
10
  </rapid-layout>
10
11
  {{else}}
package/.genx/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- const {existsSync, mkdirSync} = require('node:fs');
1
+ const {existsSync, mkdirSync, readFileSync} = require('node:fs');
2
2
  const { resolve } = require('node:path');
3
3
 
4
4
  const makeDirectory = (directory) => {
@@ -25,10 +25,78 @@ const generateRoute = (route, { writeFileWithData, changeCase }) => {
25
25
  writeFileWithData(resolve(__dirname, `../client/src/routes/${routeName}/${routeName}.styles.ts`), {route}, resolve(__dirname, 'templates/route.styles.hbs'));
26
26
  };
27
27
 
28
- const generateEmptyCsv = (entity, appName, { writeFileWithData }) => {
28
+ const generateCsv = (entity, { writeFileWithData }) => {
29
29
  writeFileWithData(resolve(__dirname, `../server/{{appName}}-app/src/main/genesis/data/${entity.name}.csv`), {entity}, resolve(__dirname, 'templates/csv.hbs'));
30
30
  };
31
31
 
32
+ const prepareCsvData = (entity) => {
33
+ if (!entity.data?.length) return null;
34
+
35
+ const data = entity.data.map((rows) => ({
36
+ rows: rows?.map((x, index) => ({
37
+ name: x,
38
+ isLast: index === rows.length - 1,
39
+ })),
40
+ }));
41
+
42
+ return data;
43
+ };
44
+
45
+ function csvToObject(csv) {
46
+ const lines = csv
47
+ .split('\n')
48
+ .map((x) => x.replaceAll('"', ''))
49
+ .filter((line) => line.trim() !== '');
50
+ const fieldsRow = lines[0].split(',').map((field) => field.trim());
51
+ const fields = fieldsRow.map((field, index) => ({
52
+ name: field.toUpperCase(),
53
+ isLast: index === fieldsRow.length - 1,
54
+ }));
55
+
56
+ const data = lines.slice(1).map((line) => {
57
+ const rows = line.split(',').map((value, index) => ({
58
+ name: value.trim(),
59
+ isLast: index === fieldsRow.length - 1,
60
+ }));
61
+ return { rows };
62
+ });
63
+
64
+ return { fields, data };
65
+ }
66
+
67
+ const getCombinedCsvData = (entity) => {
68
+ let csvFile;
69
+ const combinedCsv = {
70
+ name: entity.name.toUpperCase(),
71
+ fields: entity.fields?.map((field, index) => ({
72
+ name: field.toUpperCase(),
73
+ isLast: index === entity.fields.length - 1,
74
+ })),
75
+ data: prepareCsvData(entity),
76
+ };
77
+
78
+ if (entity.mode?.toLowerCase() === 'append') {
79
+ const path = resolve(
80
+ __dirname,
81
+ `../server/{{appName}}-app/src/main/genesis/data/${entity.name}.csv`
82
+ );
83
+
84
+ try {
85
+ csvFile = readFileSync(path, 'utf8');
86
+ } catch (err) {
87
+ console.log('File to append not found - creating a new CSV file');
88
+ }
89
+
90
+ if (csvFile) {
91
+ const existingCsv = csvToObject(csvFile);
92
+ combinedCsv.fields = existingCsv.fields;
93
+ combinedCsv.data = [...existingCsv.data, ...prepareCsvData(entity)];
94
+ }
95
+ }
96
+
97
+ return combinedCsv;
98
+ };
99
+
32
100
  const formatJSONValue = (value) => {
33
101
  try {
34
102
  return value ? JSON.stringify(value, null, 2) : undefined;
@@ -137,7 +205,8 @@ module.exports = {
137
205
  registerPartials,
138
206
  generateRoute,
139
207
  validateRoute,
140
- generateEmptyCsv,
208
+ generateCsv,
209
+ getCombinedCsvData,
141
210
  formatRouteData,
142
211
  parseJSONArgument,
143
212
  };
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.15.0](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.14.1...v3.15.0) (2024-06-20)
4
+
5
+
6
+ ### Features
7
+
8
+ * ability to add/append data to csv files GENC-473 (#260) 7b337ff
9
+
10
+ ## [3.14.1](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.14.0...v3.14.1) (2024-06-18)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * do not use foundation layout autosave during dev GENC-528 (#258) ac4b2fd
16
+
3
17
  ## [3.14.0](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.13.1...v3.14.0) (2024-06-17)
4
18
 
5
19
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/blank-app-seed",
3
3
  "description": "Genesis Blank App Seed",
4
- "version": "3.14.0",
4
+ "version": "3.15.0",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
7
7
  "release": "semantic-release"