Accept pasted Scattermind concept maps
This commit is contained in:
+27
-2
@@ -51,6 +51,31 @@ function laneClass(lane) {
|
||||
return `lane-${lane?.id || 'defer'}`;
|
||||
}
|
||||
|
||||
function parsePastedJsonPayload(value) {
|
||||
const text = String(value || '').trim();
|
||||
if (!text.startsWith('{') || !text.endsWith('}')) return null;
|
||||
try {
|
||||
const parsed = JSON.parse(text);
|
||||
const looksLikeBridgePayload = parsed && typeof parsed === 'object' && !Array.isArray(parsed) && (
|
||||
parsed.schema || parsed.featureSet || parsed.conceptMap || parsed.lenses || parsed.reference_code || parsed.referenceCode || parsed.artifactId || parsed.ideaText
|
||||
);
|
||||
return looksLikeBridgePayload ? parsed : null;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function payloadFromForm(formPayload) {
|
||||
const ideaJson = parsePastedJsonPayload(formPayload.idea);
|
||||
const optionsJson = parsePastedJsonPayload(formPayload.optionsText);
|
||||
const embedded = ideaJson || optionsJson;
|
||||
if (!embedded) return formPayload;
|
||||
const merged = { ...embedded };
|
||||
if (!merged.mode && formPayload.mode) merged.mode = formPayload.mode;
|
||||
if (String(formPayload.context || '').trim() && !merged.context) merged.context = formPayload.context;
|
||||
return merged;
|
||||
}
|
||||
|
||||
function renderMetrics(metrics = {}) {
|
||||
const items = [
|
||||
['Value', metrics.value],
|
||||
@@ -227,8 +252,8 @@ function renderResults(data) {
|
||||
async function createFeedbackMap(event) {
|
||||
event.preventDefault();
|
||||
const submit = form.querySelector('button[type="submit"]');
|
||||
const payload = Object.fromEntries(new FormData(form).entries());
|
||||
if (!String(payload.optionsText || '').trim()) payload.optionsText = payload.idea;
|
||||
const payload = payloadFromForm(Object.fromEntries(new FormData(form).entries()));
|
||||
if (!String(payload.optionsText || '').trim() && !payload.conceptMap && !payload.featureSet && !payload.lenses) payload.optionsText = payload.idea;
|
||||
submit.disabled = true;
|
||||
submit.textContent = 'Judging…';
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user