Retain preexisting counters in move history
This commit is contained in:
parent
b73217c5c4
commit
f3a5999142
@ -100,6 +100,14 @@ g.clone {
|
|||||||
stroke-dasharray: 1;
|
stroke-dasharray: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g.clone [href="#counter-prone"] {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.removed[href="#counter-prone"] {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
g[data-allegiance="davion"].clone {
|
g[data-allegiance="davion"].clone {
|
||||||
fill: rgb(255, 126, 126);
|
fill: rgb(255, 126, 126);
|
||||||
}
|
}
|
||||||
|
@ -255,6 +255,14 @@ export default class Counter {
|
|||||||
selected.parentElement.appendChild(clone);
|
selected.parentElement.appendChild(clone);
|
||||||
point.parentElement.appendChild(selected);
|
point.parentElement.appendChild(selected);
|
||||||
|
|
||||||
|
selected.childNodes.forEach(n => {
|
||||||
|
if (n.classList.contains('removed')) {
|
||||||
|
n.remove();
|
||||||
|
} else if ('preexisting' in n.dataset) {
|
||||||
|
delete n.dataset.preexisting;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
let previous = this.getCellPosition(clone.parentElement),
|
let previous = this.getCellPosition(clone.parentElement),
|
||||||
current = this.getCellPosition(selected.parentElement);
|
current = this.getCellPosition(selected.parentElement);
|
||||||
|
|
||||||
@ -288,24 +296,23 @@ export default class Counter {
|
|||||||
|
|
||||||
removeClones({ dataset: { allegiance, number }}) {
|
removeClones({ dataset: { allegiance, number }}) {
|
||||||
this.getClones(allegiance, number).forEach(el => {
|
this.getClones(allegiance, number).forEach(el => {
|
||||||
const proneCounter = el.parentElement.querySelector('[href="#counter-prone"]');
|
|
||||||
|
|
||||||
if (proneCounter) {
|
|
||||||
proneCounter.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
el.remove()
|
el.remove()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
endMove(el) {
|
endMove(el) {
|
||||||
let { number: troopNumber, allegiance: troopAllegiance } = el.dataset;
|
const { number, allegiance } = el.dataset,
|
||||||
let trace = this.svg.querySelector(this.traceSelector(troopNumber, troopAllegiance));
|
trace = this.svg.querySelector(this.traceSelector(number, allegiance)),
|
||||||
|
proneCounter = el.querySelector('[href="#counter-prone"]');
|
||||||
|
|
||||||
if (trace) {
|
if (trace) {
|
||||||
trace.remove();
|
trace.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (proneCounter) {
|
||||||
|
proneCounter.dataset.preexisting = '';
|
||||||
|
}
|
||||||
|
|
||||||
this.removeClones(el);
|
this.removeClones(el);
|
||||||
this.unSelect();
|
this.unSelect();
|
||||||
}
|
}
|
||||||
@ -314,7 +321,7 @@ export default class Counter {
|
|||||||
const isOnBoard = counter.parentElement.hasAttribute('data-x');
|
const isOnBoard = counter.parentElement.hasAttribute('data-x');
|
||||||
|
|
||||||
if (isOnBoard) {
|
if (isOnBoard) {
|
||||||
return !!counter.parentElement.querySelector('[href="#counter-prone"]');
|
return !!counter.querySelector('[href="#counter-prone"]');
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -328,7 +335,11 @@ export default class Counter {
|
|||||||
const proneCounter = selected.querySelector('[href="#counter-prone"]');
|
const proneCounter = selected.querySelector('[href="#counter-prone"]');
|
||||||
|
|
||||||
if (proneCounter) {
|
if (proneCounter) {
|
||||||
proneCounter.remove();
|
if ('preexisting' in proneCounter.dataset) {
|
||||||
|
proneCounter.classList.toggle('removed');
|
||||||
|
} else {
|
||||||
|
proneCounter.remove();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
const counter = document.createElementNS(svgns, 'use');
|
const counter = document.createElementNS(svgns, 'use');
|
||||||
counter.setAttributeNS(null, 'href', '#counter-prone');
|
counter.setAttributeNS(null, 'href', '#counter-prone');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user