Skip to content

Commit 258ccac

Browse files
Merge pull request #13 from DSACMS/nat/cleanup
MVP: Cleanup and refactor code.json download
2 parents df09c7d + 6239659 commit 258ccac

File tree

5 files changed

+42
-165
lines changed

5 files changed

+42
-165
lines changed

form.html renamed to index.html

File renamed without changes.

js/formDataToJson.js

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,58 +14,62 @@ async function retrieveFile(filePath) {
1414
}
1515
}
1616

17-
// Populates blank code.json object with values from form
18-
function populateObject(data, blankObject) {
19-
20-
for (const key in data) {
21-
if (blankObject.hasOwnProperty(key)) {
22-
console.log(`${key}: ${data[key]}`);
23-
24-
if(typeof data[key] === "object" && isMultiSelect(data[key])) {
25-
blankObject[key] = getSelectedOptions(data[key]);
26-
}
27-
else {
28-
blankObject[key] = data[key];
29-
}
30-
31-
}
32-
}
33-
}
34-
3517
function isMultiSelect(obj) {
36-
for (const key in obj) {
37-
if (typeof obj[key] !== 'boolean') {
38-
return false;
39-
}
18+
for (const key in obj) {
19+
if (typeof obj[key] !== 'boolean') {
20+
return false;
4021
}
41-
return true; // Return true if all values are booleans
22+
}
23+
return true; // Returns true if all values are booleans
4224
}
4325

4426
// Convert from dictionary to array
4527
function getSelectedOptions(options) {
46-
let selectedOptions = [];
28+
let selectedOptions = [];
29+
30+
for (let key in options) {
31+
if(options[key]) {
32+
selectedOptions.push(key);
33+
}
34+
}
35+
return selectedOptions;
36+
}
37+
38+
// Populates fields with form data
39+
function populateObject(data, schema) {
40+
let reorderedObject = {}
41+
42+
// Array of fields following proper order of fields in schema
43+
const fields = Object.keys(schema.properties.items);
4744

48-
for (let key in options) {
49-
if(options[key]) {
50-
selectedOptions.push(key);
45+
for (const key of fields) {
46+
let value = data[key];
47+
48+
// Adjusts value accordingly if multi-select field
49+
if((typeof value === "object" && isMultiSelect(value))) {
50+
value = getSelectedOptions(value);
5151
}
52+
53+
reorderedObject[key] = value;
5254
}
53-
return selectedOptions;
55+
56+
return reorderedObject;
5457
}
5558

5659
async function populateCodeJson(data) {
57-
// Path to the blank json file
58-
const filePath = "schemas/template-code.json";
60+
const filePath = "schemas/schema-0.0.0.json";
5961

60-
let codeJson = await retrieveFile(filePath);
62+
// Retrieves schema with fields in correct order
63+
const schema = await retrieveFile(filePath);
64+
let codeJson = {};
6165

62-
if (codeJson) {
63-
populateObject(data, codeJson);
66+
// Populates fields with form data
67+
if (schema) {
68+
codeJson = populateObject(data, schema);
6469
} else {
6570
console.error("Failed to retrieve JSON data.");
6671
}
6772

68-
console.log("FINAL CODE JSON HERE", codeJson);
6973
return codeJson;
7074
}
7175

js/generateFormComponents.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,14 @@ function determineType(field) {
5353

5454
// Creates Form.io component based on json field type
5555
function createComponent(fieldName, fieldObject) {
56-
var componentType = determineType(fieldObject);
56+
const componentType = determineType(fieldObject);
5757
switch (componentType) {
5858
case "textfield":
5959
return {
6060
type: "textfield",
6161
key: fieldName,
6262
label: fieldName,
6363
input: true,
64-
tooltip: fieldObject["description"],
6564
description: fieldObject["description"]
6665
};
6766
case "tags":
@@ -105,7 +104,6 @@ function createComponent(fieldName, fieldObject) {
105104
type: "radio",
106105
input: true,
107106
description: fieldObject["description"],
108-
tooltip: fieldObject["description"]
109107
};
110108
case "selectboxes":
111109
var options = transformArrayToOptions(fieldObject.items.enum);
@@ -224,14 +222,14 @@ function createAllComponents(schema, prefix = ""){
224222

225223
if (schema.type === "object" && schema.properties) {
226224

227-
let items = schema.properties.hasOwnProperty("items") ? schema.properties.items : schema.properties
225+
const items = schema.properties.hasOwnProperty("items") ? schema.properties.items : schema.properties
228226

229227
for (const [key, value] of Object.entries(items)) {
230228

231229
console.log("key at play:", key);
232230
const fullKey = prefix ? `${prefix}.${key}` : key;
233231

234-
var fieldComponent = createComponent(key, value);
232+
let fieldComponent = createComponent(key, value);
235233

236234
if (fieldComponent.type === "container") {
237235
fieldComponent.components = createAllComponents(value, fullKey);
@@ -252,7 +250,7 @@ async function createFormComponents() {
252250
let components = [];
253251

254252
const filePath = "schemas/schema-0.0.0.json";
255-
let jsonData = await retrieveFile(filePath);
253+
const jsonData = await retrieveFile(filePath);
256254
console.log("JSON Data:", jsonData);
257255

258256
createFormHeading(jsonData["title"], jsonData["description"]);

schemas/schema.json

Lines changed: 0 additions & 94 deletions
This file was deleted.

schemas/template-code.json

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)