Commit cba7ebfe authored by Luna Riegel's avatar Luna Riegel
Browse files

Fix catalogue loading

parent b88f4cbe
......@@ -119,9 +119,9 @@ let projectStateObject = undefined;
async function loadCataloguesFromConfig(config) {
const configJson = JSON.parse(JSON.stringify(config));
const catalogues = configJson.objectCatalogues;
const catalogues = Object.values(configJson.objectCatalogues);
for (let cat of catalogues) {
for (const cat of catalogues) {
const catJson = await retrieveCatalogueJson(cat.url);
if (!catJson) continue;
......@@ -146,11 +146,15 @@ async function retrieveCatalogueJson(link) {
try {
const response = await fetch(link, { signal: controller.signal });
if (!response.ok) {
throw new Error(`HTTP error: ${response.status} for catalogue ${link}`);
throw new Error(`HTTP error ${response.status} for ${link}`);
}
return await response.json();
} catch (error) {
console.error(error);
if (error.name === 'AbortError') {
console.warn(`Fetch aborted (timeout) for: ${link}`);
} else {
console.error(`Fetch failed for ${link}:`, error);
}
return null;
} finally {
clearTimeout(timeout);
......@@ -160,24 +164,38 @@ async function retrieveCatalogueJson(link) {
function getCatalogueEntries(json, linkPrefix) {
const part = {};
for (let item of json.items) {
const subCat = item.title;
const entries = [];
for (let entry of item.predefinedObjects) {
const info = {
title: entry.title,
icon: linkPrefix + entry.icon,
model: linkPrefix + entry.properties?.olcs_modelUrl,
};
entries.push(info);
if (!json || !Array.isArray(json.items)) {
console.warn('Invalid or missing `json.items`:', json);
return part;
}
part[subCat.toString()] = entries;
}
for (const item of json.items) {
const subCat = item.title || 'Unnamed';
const entries = [];
return part;
}
if (Array.isArray(item.predefinedObjects)) {
for (const entry of item.predefinedObjects) {
if (typeof entry !== 'object' || entry === null) {
console.warn('Invalid entry:', entry);
continue;
}
const title = entry.title || 'Untitled';
const icon = linkPrefix + (entry.icon || '');
const model = linkPrefix + (entry.properties?.olcs_modelUrl || '');
entries.push({ title, icon, model });
}
} else {
console.warn('Expected array for predefinedObjects, got:', item.predefinedObjects);
}
part[subCat] = entries;
}
return part;
}
function uploadModel() {
// Create an input element
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment