Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
715ca49
Added new build form and added more team members in printer build form
APonugoti1 Jan 12, 2026
167cd59
Added team members in the printer build and propertyOrder in build form
APonugoti1 Jan 12, 2026
d9e66bd
Fixing autocomplete issue with lookup
APonugoti1 Jan 12, 2026
201e010
fixing issue with sample id and added codes
APonugoti1 Jan 13, 2026
8876b90
fixing type of buildparameters
APonugoti1 Jan 13, 2026
2e4a39d
solving mutliple entries for the same build params
APonugoti1 Jan 13, 2026
9072189
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
b42acca
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
3e9bfdf
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
16dc77c
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
33495e8
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
b80a269
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
c388904
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
5941a74
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
635fd0a
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
6be9fdf
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
570223c
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
29813fb
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
38d7fca
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
e186762
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
777fbda
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
34edc6a
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
7e3929d
fixing multiple parameter entry issue
APonugoti1 Jan 13, 2026
8bc4c03
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
abb8d2f
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
98f5e56
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
437d54f
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
3e48584
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
dd11f2c
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
a635c5d
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
4b84671
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
1a021e8
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
e18e126
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
be29884
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
fd1fd28
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
31668c8
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
1ae9b42
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
959fe8a
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
78ed001
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
02fc369
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
bb8def3
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
1b10680
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
51e3cf5
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
a93be36
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
b585801
fixing multiple parameter entry issue
APonugoti1 Jan 14, 2026
f755e09
fixing multiple parameter entry issue
APonugoti1 Jan 15, 2026
363c6ed
fixing multiple parameter entry issue
APonugoti1 Jan 15, 2026
fa8bc24
fixing multiple parameter entry issue
APonugoti1 Jan 15, 2026
6c55874
fixing multiple parameter entry issue
APonugoti1 Jan 15, 2026
556e6c0
fixing multiple parameter entry issue
APonugoti1 Jan 15, 2026
ced8f14
fixing multiple parameter entry issue
APonugoti1 Jan 15, 2026
049af51
fixing multiple parameter entry issue
APonugoti1 Jan 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions build_form.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
window.JSONEditor.defaults.callbacks.autocomplete = {
'search_deposition': function (editor, input) {
if (input.length < 3) {
return [];
}

return restRequest({
url: 'deposition',
method: 'GET',
data: {
q: input,
limit: 10
}
})
},
'render_deposition': function (editor, result, props) {
try {
const localId = result.metadata.alternateIdentifiers.find(
(id) => id.alternateIdentifierType.toLowerCase() === 'local'
);
return `<li ${props}> ${result.igsn} (localId: ${localId.alternateIdentifier})</li>`;
} catch (e) {
return `<li ${props}> ${result.igsn} (title: ${result.metadata.titles[0]['title']})</li>`;
}
},
'get_deposition_value': function (editor, result) {
try {
const localId = result.metadata.alternateIdentifiers.find(
(id) => id.alternateIdentifierType.toLowerCase() === 'local'
);
return `${result.igsn}`;
} catch (e) {
return `${result.igsn}`;
}
}
};

Handlebars.registerHelper('split', function (string, separator, index) {
try {
return string.split(separator)[index].trim();
} catch (e) {
return '';
}
});

Handlebars.registerHelper('replaceAll', function (string, search, replacement) {
return (string !== undefined && string !== null) ? string.replaceAll(search, replacement) : '';
});
Handlebars.registerHelper('joinarray', function (a, sep, prefix=false) {
if (!a || !Array.isArray(a) || a.length === 0) {
// Handle empty or undefined array
return '';
}
const result = a.join(sep);
if (result !== '' && prefix) {
return `${sep}${result}`;
}
return result;
});

Handlebars.registerHelper('formatBuildParams', function (params) {
if (!params || !Array.isArray(params) || params.length === 0) {
return '';
}

return params
.map(p => `${p.type}:${p.laserSpeed}:${p.laserPower}:${p.layerThickness}:${p.hatchSpacing}`)
.join('_');
});

JSONEditor.defaults.custom_validators.push(function (schema, value, path) {
// Only validate the buildParameters array
if (schema.title !== "Build Process Parameters") {
return [];
}

if (!Array.isArray(value)) {
return [];
}

const seen = new Set();
const duplicates = new Set();

value.forEach(item => {
if (item && item.type) {
if (seen.has(item.type)) {
duplicates.add(item.type);
}
seen.add(item.type);
}
});

if (duplicates.size > 0) {
return [{
path: path,
property: 'type',
message: `Duplicate build parameter type(s) not allowed: ${[...duplicates].join(', ')}.
Each type (upskin, downskin, infill, contouring) may only appear once.`
}];
}

return [];
});


JSONEditor.defaults.custom_validators.push(function (schema, value, path) {
// Only validate the IGSNs field
if (schema.title !== "IGSNs") {
return [];
}

if (!Array.isArray(value)) {
return [];
}

const seen = new Set();
const duplicates = new Set();

value.forEach(v => {
if (seen.has(v)) {
duplicates.add(v);
}
seen.add(v);
});

if (duplicates.size > 0) {
return [{
path: path,
message: `Duplicate IGSN(s) are not allowed: ${[...duplicates].join(', ')}`
}];
}

return [];
});
123 changes: 123 additions & 0 deletions build_form.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
{
"title": "Build Metadata Schema",
"description": "Schema for recording metadata of builds (build parameters)",
"type": "object",
"properties": {
"lookup": {
"type": "array",
"title": "IGSNs",
"description": "Select one or more IGSNs",
"minItems": 1,
"items": {
"type": "string",
"format": "autocomplete",
"options": {
"autocomplete": {
"search": "search_deposition",
"renderResult": "render_deposition",
"getResultValue": "get_deposition_value",
"autoSelect": true,
"debounceTime": 500
}
}
},
"propertyOrder": 0
},
"depositionId": {
"type": "string",
"title": "IGSN ID",
"description": "Unique identifier for the deposition",
"readOnly": true,
"propertyOrder": 999,
"watch": {
"igsn": "lookup"
},
"template": "{{split igsn ' - ' 1}}",
"options": {
"grid_columns": 12,
"hidden": true
}
},
"printerBuildID": {
"title": "Printer Build ID",
"description": "Automatically generated identifier for the printer build",
"type": "string",
"template": "{{formatBuildParams params}}",
"readOnly": true,
"propertyOrder": 2,
"watch": {
"params": "root.buildParameters"
},
"options": {
"grid_columns": 12
}
},
"buildParameters": {
"title": "Build Process Parameters",
"description": "Laser process parameters for all regions of the build. Each type (upskin, downskin, infill, contouring) can appear only once.",
"propertyOrder": 3,
"type": "array",
"minItems": 1,
"maxItems": 4,
"uniqueItemProperties": ["type"],
"items": {
"type": "object",
"format": "grid",
"options": {
"grid_columns": 12
},
"properties": {
"type": {
"type": "string",
"enum": ["upskin", "downskin", "infill", "contouring"],
"description": "Type of build region",
"propertyOrder": 1
},
"laserSpeed": {
"type": "number",
"minimum": 0,
"maximum": 10000,
"description": "PRC-3-2-9",
"propertyOrder": 2,
"options": {
"grid_row": 12
}
},
"laserPower": {
"type": "number",
"minimum": 0,
"maximum": 370,
"description": "PRC-3-2-3",
"propertyOrder": 3,
"options": {
"grid_row": 12
}
},
"layerThickness": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "PRC-3-2-1",
"propertyOrder": 4,
"options": {
"grid_row": 12
}
},
"hatchSpacing": {
"type": "number",
"minimum": 0,
"maximum": 300,
"description": "PRC-3-2-6",
"propertyOrder": 5,
"options": {
"grid_row": 12
}
}
},
"required": ["type", "laserSpeed", "laserPower", "layerThickness", "hatchSpacing"],
"additionalProperties": false
}
}
},
"required": ["lookup", "buildParameters"]
}
5 changes: 4 additions & 1 deletion printer_build_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,10 @@
"enum": [
"Evan Adcock",
"Nick Lamprinakos",
"Katie O'Donnell"
"Katie O'Donnell",
"Sierra Green",
"Justin Miner",
"David Reyes Ortiz"
]
},
"propertyOrder": 3
Expand Down