Commit f68a2ec6 authored by Dmitry.Shahtanov's avatar Dmitry.Shahtanov Committed by Alexander.Trofimov

fix: Bug 19653 - Ссылки на ячейки не меняются после переноса части данных с формулой в другое место

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@48828 954022d7-b5bf-4e40-9824-e11837661b57
parent 7eff7e32
...@@ -536,8 +536,8 @@ function DependencyGraph(wb) { ...@@ -536,8 +536,8 @@ function DependencyGraph(wb) {
r2:nodes[id].lastCellAddress.getRow0(), c2:nodes[id].lastCellAddress.getCol0() } r2:nodes[id].lastCellAddress.getRow0(), c2:nodes[id].lastCellAddress.getCol0() }
if( nodes[id].isArea ){ if( nodes[id].isArea ){
/* /*
Есть 2 области. Первая это диапазон? что участвует в формуле, второй - то который удаляют/вставляют. Нужно определить положение двух этих областей относительно друг друга. Есть 2 области. Первая - это диапазон, что участвует в формуле, второй - это который удаляют/вставляют. Нужно определить положение двух этих областей относительно друг друга.
Если вторая область находится ( ( выше и левее ) или правее или ниже ) первой такая область нас не интересуею. Она не повлияет на сдвиг диапазона. Если вторая область находится ( ( выше и левее ) или правее или ниже ) первой, такая область нас не интересуею. Она не повлияет на сдвиг диапазона.
Если же она находится выше или левее, перекрывает частично или полностью диапазон, необходимо отследить какой сдвиг будет следовать - по вертикали или по горизонтали. После чего следует выполнить соответсвтующие действия - расширить диапазон, сдвинуть диапазон, просто пересчитать. Если же она находится выше или левее, перекрывает частично или полностью диапазон, необходимо отследить какой сдвиг будет следовать - по вертикали или по горизонтали. После чего следует выполнить соответсвтующие действия - расширить диапазон, сдвинуть диапазон, просто пересчитать.
Для проверки на способ перекрытия переношу начало координат в левый верхний угол диапазона, меняю координаты у второй области и сравниваю возможные варианты расположения используя координаты углов обоих областей. Для проверки на способ перекрытия переношу начало координат в левый верхний угол диапазона, меняю координаты у второй области и сравниваю возможные варианты расположения используя координаты углов обоих областей.
PS вариант не нравится, слишком много if. Хотелось бы поэллегантнее решение. PS вариант не нравится, слишком много if. Хотелось бы поэллегантнее решение.
...@@ -685,6 +685,12 @@ function DependencyGraph(wb) { ...@@ -685,6 +685,12 @@ function DependencyGraph(wb) {
move[n.nodeId] = nodes[n.nodeId]; move[n.nodeId] = nodes[n.nodeId];
} }
else{ else{
for( var id2 in areaNodes ){
if( n.containCell(areaNodes[id2]) ){
move[areaNodes[id2].nodeId] = nodes[areaNodes[id2].nodeId];
}
}
range = range.getCells(); range = range.getCells();
for( var id in range ){ for( var id in range ){
n = new Vertex(wsId,range[id].getName()); n = new Vertex(wsId,range[id].getName());
......
Markdown is supported
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