put back duplicate
This commit is contained in:
parent
1958eac83c
commit
30e1cac0a9
1 changed files with 40 additions and 0 deletions
|
@ -388,6 +388,42 @@ export const dbUtils = {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
duplicateSelection: () => {
|
||||||
|
if (get(selection).size === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
applyGlobal((draft) => {
|
||||||
|
let ids = getFileIds(get(settings.fileOrder).length);
|
||||||
|
let index = 0;
|
||||||
|
applyToOrderedSelectedItemsFromFile((fileId, level, items) => {
|
||||||
|
let file = original(draft)?.get(fileId);
|
||||||
|
if (file) {
|
||||||
|
let newFile = file;
|
||||||
|
if (level === ListLevel.FILE) {
|
||||||
|
newFile = file.clone();
|
||||||
|
newFile._data.id = ids[index++];
|
||||||
|
} else if (level === ListLevel.TRACK) {
|
||||||
|
for (let item of items) {
|
||||||
|
let trackIndex = (item as ListTrackItem).getTrackIndex();
|
||||||
|
newFile = newFile.replaceTracks(trackIndex + 1, trackIndex, [file.trk[trackIndex].clone()]);
|
||||||
|
}
|
||||||
|
} else if (level === ListLevel.SEGMENT) {
|
||||||
|
for (let item of items) {
|
||||||
|
let trackIndex = (item as ListTrackSegmentItem).getTrackIndex();
|
||||||
|
let segmentIndex = (item as ListTrackSegmentItem).getSegmentIndex();
|
||||||
|
newFile = newFile.replaceTrackSegments(trackIndex, segmentIndex + 1, segmentIndex, [file.trk[trackIndex].trkseg[segmentIndex].clone()]);
|
||||||
|
}
|
||||||
|
} else if (level === ListLevel.WAYPOINT) {
|
||||||
|
for (let item of items) {
|
||||||
|
let waypointIndex = (item as ListWaypointItem).getWaypointIndex();
|
||||||
|
newFile = newFile.replaceWaypoints(waypointIndex + 1, waypointIndex, [file.wpt[waypointIndex].clone()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
draft.set(newFile._data.id, freeze(newFile));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
reverseSelection: () => {
|
reverseSelection: () => {
|
||||||
if (!get(selection).hasAnyChildren(new ListRootItem(), true, ['waypoints'])) {
|
if (!get(selection).hasAnyChildren(new ListRootItem(), true, ['waypoints'])) {
|
||||||
return;
|
return;
|
||||||
|
@ -452,6 +488,10 @@ export const dbUtils = {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
selection.update(($selection) => {
|
||||||
|
$selection.clear();
|
||||||
|
return $selection;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
deleteAllFiles: () => {
|
deleteAllFiles: () => {
|
||||||
applyGlobal((draft) => {
|
applyGlobal((draft) => {
|
||||||
|
|
Loading…
Reference in a new issue