[SE] fixed TypedMapCache methods for updating data

This commit is contained in:
Aleksandr Nagaev
2025-11-21 07:29:53 +03:00
parent 122fb9ad1e
commit 437973369a

View File

@ -2982,15 +2982,18 @@ function (window, undefined) {
fullRange._foreachNoEmpty(function (cell, r, c) {
const value = checkTypeCell(cell, true);
const index = bHor ? c : r;
if (!axisData[rowCol].data[value.type]) {
axisData[rowCol].data[value.type] = new Map();
if (index > axisData[rowCol].end) {
if (!axisData[rowCol].data[value.type]) {
axisData[rowCol].data[value.type] = new Map();
}
const map = axisData[rowCol].data[value.type];
if (!map.has(value.value)) {
map.set(value.value, []);
}
const arr = axisData[rowCol].data[value.type].get(value.value);
arr.push(index);
axisData[rowCol].end = index;
}
const map = axisData[rowCol].data[value.type];
if (!map.has(value.value)) {
map.set(value.value, []);
}
const arr = axisData[rowCol].data[value.type].get(value.value);
arr.push(index);
});
axisData[rowCol].end = endIndex;
}
@ -3016,7 +3019,7 @@ function (window, undefined) {
newArr.push(arr[i]);
}
}
mapOldType.set(newArr);
mapOldType.set(oldValue, newArr);
}
}
}
@ -3026,21 +3029,19 @@ function (window, undefined) {
if (mapNewType) {
if (mapNewType.has(newValue)) {
const arr = mapNewType.get(newValue);
const newArr = [];
let newArr = [];
if (arr.length === 1) {
newArr.push(arr[0]);
changedIndex > arr[0] ? newArr.push(changedIndex) : newArr.unshift(changedIndex);
newArr = changedIndex > arr[0] ? [arr[0], changedIndex] :[changedIndex, arr[0]];
} else {
if (arr[0] < changedIndex) {
newArr.push(changedIndex);
}
for(let i = 1; i < arr.length; i += 1) {
if (arr[i] < changedIndex && arr[i - 1] > changedIndex) {
let isAdded = false;
for (let i = 0; i < arr.length; i += 1) {
if (changedIndex < arr[i] && !isAdded) {
isAdded = true;
newArr.push(changedIndex);
}
newArr.push(arr[i]);
}
if (arr[arr.length - 1] < changedIndex) {
if (changedIndex > arr[arr.length - 1]) {
newArr.push(changedIndex);
}
}