bugfixing

This commit is contained in:
MuslemRahimi 2024-12-10 20:18:37 +01:00
parent d6e92e7b4c
commit c467f40592

View File

@ -161,48 +161,53 @@
allRows = sortIndicatorCheckMarks(allRows); allRows = sortIndicatorCheckMarks(allRows);
const handleDownloadMessage = (event) => { const handleDownloadMessage = (event) => {
let updateData = event?.data?.rawData ?? []; // Use a new variable for updated data let updateData = event?.data?.rawData ?? []; // Use a new variable for updated data
// Check if both arrays exist and have data // Check if both arrays exist and have data
if (!updateData?.length || !rawData?.length) { if (!updateData?.length || !rawData?.length) {
return; return;
} }
for (let i = 0; i < updateData.length; i++) { // Create a new array to store the final data
if (rawData[i]) { const updatedRawData = rawData.map((originalItem) => {
// Create a new object to merge the data // Find the corresponding item in updateData by matching symbol
let newData = {}; const updateItem = updateData.find(
(item) => item.symbol === originalItem.symbol,
);
// If no matching update found, return the original item
if (!updateItem) {
return originalItem;
}
// Create a new object to merge data
let newData = { ...originalItem };
// Merge fields from updateData // Merge fields from updateData
Object.assign(newData, updateData[i]); Object.assign(newData, updateItem);
// Merge fields from defaultRules that are missing in updateData // Apply defaultRules logic
defaultRules?.forEach((rule) => { defaultRules?.forEach((rule) => {
if (!(rule in updateData[i]) && rule in rawData[i]) { // If the rule is missing in updateData but exists in original data, preserve original
newData[rule] = rawData[i][rule]; if (!(rule in updateItem) && rule in originalItem) {
newData[rule] = originalItem[rule];
} }
}); });
// Preserve the original 'priceTarget' value from rawData // Explicitly ensure 'rank' and 'years' are preserved if missing in update
for (let rule of defaultRules) { if (!("rank" in updateItem) && "rank" in originalItem) {
if (rule in rawData[i]) { newData.rank = originalItem.rank;
newData[rule] = rawData[i][rule];
} }
if (!("years" in updateItem) && "years" in originalItem) {
newData.years = originalItem.years;
} }
// Ensure 'rank' and 'years' are added if they are missing in updateData return newData;
if (!("rank" in updateData[i]) && "rank" in rawData[i]) { });
newData.rank = rawData[i]["rank"];
}
if (!("years" in updateData[i]) && "years" in rawData[i]) {
newData.years = rawData[i]["years"];
}
updateData[i] = newData; rawData = updatedRawData;
}
}
rawData = updateData;
originalData = rawData; originalData = rawData;
stockList = originalData?.slice(0, 150); // Assign to stockList instead of rawData directly stockList = originalData?.slice(0, 150);
columns = generateColumns(rawData); columns = generateColumns(rawData);
sortOrders = generateSortOrders(rawData); sortOrders = generateSortOrders(rawData);
}; };