- Replace hardcoded position strings with POSITIONS.* constants - Prefix unused variables with _ to resolve no-unused-vars warnings - Fix no-prototype-builtins with Object.prototype.hasOwnProperty.call() - Extract menuUtils.js (543 lines) into 6 focused modules under menu/ - menuUtils.js now 35 lines, delegates via prototype mixin pattern - Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
124 lines
4.7 KiB
JavaScript
124 lines
4.7 KiB
JavaScript
/**
|
|
* Data fetching methods for MenuUtils.
|
|
* Handles primary/fallback URL fetching and API calls.
|
|
*/
|
|
|
|
const dataFetching = {
|
|
async fetchData(url, fallbackUrl) {
|
|
try {
|
|
const response = await fetch(url);
|
|
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
|
|
const responsData = await response.json();
|
|
//responsData
|
|
const data = responsData.data;
|
|
/* .map(item => {
|
|
const { vendor_name, ...rest } = item;
|
|
return {
|
|
name: vendor_name,
|
|
...rest
|
|
};
|
|
}); */
|
|
console.log(url);
|
|
console.log("Response Data: ", data);
|
|
return data;
|
|
|
|
} catch (err) {
|
|
console.warn(
|
|
`Primary URL failed: ${url}. Trying fallback URL: ${fallbackUrl}`,
|
|
err
|
|
);
|
|
try {
|
|
const response = await fetch(fallbackUrl);
|
|
if (!response.ok)
|
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
return await response.json();
|
|
} catch (fallbackErr) {
|
|
console.error("Both primary and fallback URLs failed:", fallbackErr);
|
|
return [];
|
|
}
|
|
}
|
|
},
|
|
|
|
async fetchProjectData(url) {
|
|
try {
|
|
const response = await fetch(url);
|
|
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
|
|
const responsData = await response.json();
|
|
console.log("Response Data: ", responsData);
|
|
return responsData;
|
|
|
|
} catch (err) {
|
|
/* intentionally empty */
|
|
}
|
|
},
|
|
|
|
// Save changes to API
|
|
async apiCall(node) {
|
|
try{
|
|
// OLFIANT when a browser refreshes the tag code is lost!!! fix this later!!!!!
|
|
// FIX UUID ALSO LATER
|
|
|
|
if(node.assetTagCode !== "" || node.assetTagCode !== null){ /* intentionally empty */ }
|
|
// API call to register or check asset in central database
|
|
let assetregisterAPI = node.configUrls.cloud.taggcodeAPI + "/asset/create_asset.php";
|
|
|
|
const assetModelId = node.modelMetadata.id; //asset_product_model_id
|
|
const uuid = node.uuid; //asset_product_model_uuid
|
|
const assetName = node.assetType; //asset_name / type?
|
|
const description = node.name; // asset_description
|
|
const assetStatus = "actief"; //asset_status -> koppel aan enable / disable node ? or make dropdown ?
|
|
const assetProfileId = 1; //asset_profile_id these are the rules to check if the childs are valid under this node (parent / child id?)
|
|
const child_assets = ["63247"]; //child_assets tagnummer of id?
|
|
const assetProcessId = node.processId; //asset_process_id
|
|
const assetLocationId = node.locationId; //asset_location_id
|
|
const tagCode = node.assetTagCode; // if already exists in the node information use it to tell the api it exists and it will update else we will get it from the api call
|
|
//console.log(`this is my tagCode: ${tagCode}`);
|
|
|
|
// Build base URL with required parameters
|
|
let apiUrl = `?asset_product_model_id=${assetModelId}&asset_product_model_uuid=${uuid}&asset_name=${assetName}&asset_description=${description}&asset_status=${assetStatus}&asset_profile_id=${assetProfileId}&asset_location_id=${assetLocationId}&asset_process_id=${assetProcessId}&child_assets=${child_assets}`;
|
|
|
|
// Only add tagCode to URL if it exists
|
|
if (tagCode) {
|
|
apiUrl += `&asset_tag_number=${tagCode}`;
|
|
console.log('hello there');
|
|
}
|
|
|
|
assetregisterAPI += apiUrl;
|
|
console.log("API call to register asset in central database", assetregisterAPI);
|
|
|
|
const response = await fetch(assetregisterAPI, {
|
|
method: "POST"
|
|
});
|
|
|
|
// Get the response text first
|
|
const responseText = await response.text();
|
|
console.log("Raw API response:", responseText);
|
|
|
|
// Try to parse the JSON, handling potential parsing errors
|
|
let jsonResponse;
|
|
try {
|
|
jsonResponse = JSON.parse(responseText);
|
|
} catch (parseError) {
|
|
console.error("JSON Parsing Error:", parseError);
|
|
console.error("Response that could not be parsed:", responseText);
|
|
throw new Error("Failed to parse API response");
|
|
}
|
|
|
|
console.log(jsonResponse);
|
|
|
|
if(jsonResponse.success){
|
|
console.log(`${jsonResponse.message}, tag number: ${jsonResponse.asset_tag_number}, asset id: ${jsonResponse.asset_id}`);
|
|
// Save the asset tag number and id to the node
|
|
} else {
|
|
console.log("Asset not registered in central database");
|
|
}
|
|
return jsonResponse;
|
|
|
|
} catch (error) {
|
|
console.log("Error saving changes to asset register API", error);
|
|
}
|
|
},
|
|
};
|
|
|
|
module.exports = dataFetching;
|