bugfixing filter system
This commit is contained in:
parent
949f5e0bc1
commit
a61ce7613a
@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
let ruleOfList = [];
|
let ruleOfList = [];
|
||||||
let displayRules = [];
|
let displayRules = [];
|
||||||
|
let filterQuery = '';
|
||||||
|
|
||||||
let syncWorker: Worker | undefined;
|
let syncWorker: Worker | undefined;
|
||||||
let ruleName = '';
|
let ruleName = '';
|
||||||
let shouldLoadWorker = writable(false);
|
let shouldLoadWorker = writable(false);
|
||||||
@ -47,11 +49,7 @@ Object.keys(allRules).forEach(ruleName => {
|
|||||||
valueMappings[ruleName] = allRules[ruleName].defaultValue;
|
valueMappings[ruleName] = allRules[ruleName].defaultValue;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update ruleCondition and valueMappings based on existing rules
|
|
||||||
ruleOfList.forEach(rule => {
|
|
||||||
ruleCondition[rule.name] = rule.condition || allRules[rule.name].defaultCondition;
|
|
||||||
valueMappings[rule.name] = rule.value || allRules[rule.name].defaultValue;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
async function handleDeleteRule(state) {
|
async function handleDeleteRule(state) {
|
||||||
@ -81,6 +79,7 @@ async function handleResetAll() {
|
|||||||
ruleOfList = [];
|
ruleOfList = [];
|
||||||
ruleOfList = [...ruleOfList];
|
ruleOfList = [...ruleOfList];
|
||||||
ruleName = '';
|
ruleName = '';
|
||||||
|
filterQuery = '';
|
||||||
checkedItems = new Set();
|
checkedItems = new Set();
|
||||||
Object.keys(allRules).forEach(ruleName => {
|
Object.keys(allRules).forEach(ruleName => {
|
||||||
ruleCondition[ruleName] = allRules[ruleName].defaultCondition;
|
ruleCondition[ruleName] = allRules[ruleName].defaultCondition;
|
||||||
@ -158,7 +157,7 @@ async function handleRule(newRule) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const loadWorker = async () => {
|
const loadWorker = async () => {
|
||||||
syncWorker.postMessage({ rawData, ruleOfList });
|
syncWorker.postMessage({ rawData, ruleOfList, filterQuery });
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleMessage = (event) => {
|
const handleMessage = (event) => {
|
||||||
@ -280,7 +279,6 @@ const nyseDate = new Date(data?.getOptionsFlowFeed?.at(0)?.date ?? null)?.toLoca
|
|||||||
let muted = true;
|
let muted = true;
|
||||||
let newIncomingData = false;
|
let newIncomingData = false;
|
||||||
let socket;
|
let socket;
|
||||||
let filterQuery = '';
|
|
||||||
let previousCallVolume = 0; //This is needed to play the sound only if it changes.
|
let previousCallVolume = 0; //This is needed to play the sound only if it changes.
|
||||||
let notFound = false;
|
let notFound = false;
|
||||||
let isLoaded = false;
|
let isLoaded = false;
|
||||||
@ -372,25 +370,11 @@ function handleViewData(optionData) {
|
|||||||
}
|
}
|
||||||
rawData = [...newData];
|
rawData = [...newData];
|
||||||
|
|
||||||
// Apply current filters to the new rawData
|
if(ruleOfList?.length !== 0 || filterQuery?.length !== 0) {
|
||||||
let filteredData = rawData;
|
shouldLoadWorker.set(true)
|
||||||
|
console.log('yes')
|
||||||
// Apply filterQuery if it exists
|
|
||||||
if (filterQuery?.length !== 0) {
|
|
||||||
filteredData = filteredData.filter(item => item?.ticker === filterQuery?.toUpperCase());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filteredData.length !== 0) {
|
|
||||||
notFound = false;
|
|
||||||
} else {
|
|
||||||
notFound = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update displayedData instead of rawData
|
|
||||||
displayedData = filteredData;
|
|
||||||
|
|
||||||
calculateStats(displayedData);
|
|
||||||
|
|
||||||
if (previousCallVolume !== displayCallVolume && !muted) {
|
if (previousCallVolume !== displayCallVolume && !muted) {
|
||||||
audio?.play();
|
audio?.play();
|
||||||
}
|
}
|
||||||
@ -605,23 +589,7 @@ function calculateStats(data) {
|
|||||||
filterQuery = event.target.value;
|
filterQuery = event.target.value;
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
let filteredData = rawData;
|
shouldLoadWorker.set(true)
|
||||||
|
|
||||||
if (filterQuery?.length !== 0) {
|
|
||||||
filteredData = rawData.filter(item => item?.ticker === filterQuery?.toUpperCase());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (filteredData.length !== 0) {
|
|
||||||
notFound = false;
|
|
||||||
} else {
|
|
||||||
notFound = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update a separate variable for displayed data, not rawData itself
|
|
||||||
displayedData = filteredData;
|
|
||||||
|
|
||||||
|
|
||||||
calculateStats(displayedData);
|
|
||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -91,8 +91,15 @@ function isDateWithinRange(dateString: string, range: string): boolean {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function filterRawData(rawData, ruleOfList) {
|
async function filterRawData(rawData, ruleOfList, filterQuery) {
|
||||||
return rawData?.filter((item) => {
|
return rawData?.filter((item) => {
|
||||||
|
if (
|
||||||
|
filterQuery?.length !== 0 &&
|
||||||
|
item.ticker !== filterQuery.toUpperCase()
|
||||||
|
) {
|
||||||
|
return false; // Exclude if the ticker doesn't match the filterQuery
|
||||||
|
}
|
||||||
|
|
||||||
return ruleOfList.every((rule) => {
|
return ruleOfList.every((rule) => {
|
||||||
const itemValue = item[rule.name];
|
const itemValue = item[rule.name];
|
||||||
const ruleValue = convertUnitToValue(rule.value);
|
const ruleValue = convertUnitToValue(rule.value);
|
||||||
@ -132,8 +139,8 @@ async function filterRawData(rawData, ruleOfList) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onmessage = async (event: MessageEvent) => {
|
onmessage = async (event: MessageEvent) => {
|
||||||
const { rawData, ruleOfList } = event.data || {};
|
const { rawData, ruleOfList, filterQuery } = event.data || {};
|
||||||
const filteredData = await filterRawData(rawData, ruleOfList);
|
const filteredData = await filterRawData(rawData, ruleOfList, filterQuery);
|
||||||
postMessage({ message: "success", filteredData });
|
postMessage({ message: "success", filteredData });
|
||||||
console.log(filteredData);
|
console.log(filteredData);
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user