mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-14 17:52:55 +00:00
Make recent presets reorder-able in the ribbon
This commit is contained in:
@@ -365,7 +365,7 @@ export function presetIndex(context) {
|
||||
|
||||
all.toggleFavorite = function(preset, geometry) {
|
||||
var favs = all.getFavorites();
|
||||
var favorite = all.isFavorite(preset, geometry);
|
||||
var favorite = all.favoriteMatching(preset, geometry);
|
||||
if (favorite) {
|
||||
favs.splice(favs.indexOf(favorite), 1);
|
||||
} else {
|
||||
@@ -380,23 +380,23 @@ export function presetIndex(context) {
|
||||
setFavorites(favs);
|
||||
};
|
||||
|
||||
all.isFavorite = function(preset, geometry) {
|
||||
all.favoriteMatching = function(preset, geometry) {
|
||||
var favs = all.getFavorites();
|
||||
for (var index in favs) {
|
||||
if (favs[index].matches(preset, geometry)) {
|
||||
return favs[index];
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return null;
|
||||
};
|
||||
all.isRecent = function(preset, geometry) {
|
||||
all.recentMatching = function(preset, geometry) {
|
||||
var items = all.getRecents();
|
||||
for (var index in items) {
|
||||
if (items[index].matches(preset, geometry)) {
|
||||
return items[index];
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return null;
|
||||
};
|
||||
|
||||
all.moveItem = function(items, fromIndex, toIndex) {
|
||||
@@ -412,8 +412,11 @@ export function presetIndex(context) {
|
||||
if (items) setFavorites(items);
|
||||
};
|
||||
|
||||
all.moveRecent = function(fromIndex, toIndex) {
|
||||
var items = all.moveItem(all.getRecents(), fromIndex, toIndex);
|
||||
all.moveRecent = function(item, beforeItem) {
|
||||
var recents = all.getRecents();
|
||||
var fromIndex = recents.indexOf(item);
|
||||
var toIndex = recents.indexOf(beforeItem);
|
||||
var items = all.moveItem(recents, fromIndex, toIndex);
|
||||
if (items) setRecents(items);
|
||||
};
|
||||
|
||||
@@ -421,7 +424,7 @@ export function presetIndex(context) {
|
||||
if (preset.searchable === false) return;
|
||||
|
||||
var items = all.getRecents();
|
||||
var item = all.isRecent(preset, geometry);
|
||||
var item = all.recentMatching(preset, geometry);
|
||||
if (item) {
|
||||
items.splice(items.indexOf(item), 1);
|
||||
} else {
|
||||
@@ -437,7 +440,7 @@ export function presetIndex(context) {
|
||||
setRecents(items);
|
||||
};
|
||||
all.removeRecent = function(preset, geometry) {
|
||||
var item = all.isRecent(preset, geometry);
|
||||
var item = all.recentMatching(preset, geometry);
|
||||
if (item) {
|
||||
var items = all.getRecents();
|
||||
items.splice(items.indexOf(item), 1);
|
||||
|
||||
@@ -212,7 +212,7 @@ export function uiModes(context) {
|
||||
}
|
||||
});
|
||||
|
||||
var dragOrigin, targetIndex;
|
||||
var dragOrigin, targetIndex, targetData;
|
||||
|
||||
buttonsEnter.call(d3_drag()
|
||||
.on('start', function() {
|
||||
@@ -221,6 +221,7 @@ export function uiModes(context) {
|
||||
y: d3_event.y
|
||||
};
|
||||
targetIndex = null;
|
||||
targetData = null;
|
||||
})
|
||||
.on('drag', function(d, index) {
|
||||
var x = d3_event.x - dragOrigin.x,
|
||||
@@ -231,6 +232,7 @@ export function uiModes(context) {
|
||||
.classed('removing', y > 50);
|
||||
|
||||
targetIndex = null;
|
||||
targetData = null;
|
||||
|
||||
selection.selectAll('button.add-preset')
|
||||
.style('transform', function(d2, index2) {
|
||||
@@ -241,13 +243,14 @@ export function uiModes(context) {
|
||||
if (index2 > index) {
|
||||
return 'translateX(' + (textDirection === 'rtl' ? '' : '-') + '100%)';
|
||||
}
|
||||
} else if (d.source === 'favorite' && d.source === d2.source) {
|
||||
} else if (d.source === d2.source) {
|
||||
if (index2 > index && (
|
||||
(d3_event.x > node.offsetLeft && textDirection === 'ltr') ||
|
||||
(d3_event.x < node.offsetLeft + node.offsetWidth && textDirection === 'rtl')
|
||||
)) {
|
||||
if (targetIndex === null || index2 > targetIndex) {
|
||||
targetIndex = index2;
|
||||
targetData = d2;
|
||||
}
|
||||
return 'translateX(' + (textDirection === 'rtl' ? '' : '-') + '100%)';
|
||||
} else if (index2 < index && (
|
||||
@@ -256,6 +259,7 @@ export function uiModes(context) {
|
||||
)) {
|
||||
if (targetIndex === null || index2 < targetIndex) {
|
||||
targetIndex = index2;
|
||||
targetData = d2;
|
||||
}
|
||||
return 'translateX(' + (textDirection === 'rtl' ? '-' : '') + '100%)';
|
||||
}
|
||||
@@ -285,7 +289,9 @@ export function uiModes(context) {
|
||||
if (d.isFavorite()) {
|
||||
context.presets().moveFavorite(index, targetIndex);
|
||||
} else if (d.isRecent()) {
|
||||
//context.presets().moveRecent(index - favoritesCount, targetIndex - favoritesCount);
|
||||
var item = context.presets().recentMatching(d.preset, d.geometry);
|
||||
var beforeItem = context.presets().recentMatching(targetData.preset, targetData.geometry);
|
||||
context.presets().moveRecent(item, beforeItem);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -45,7 +45,7 @@ export function uiPresetFavorite(preset, geom, context, klass) {
|
||||
|
||||
function update() {
|
||||
_button
|
||||
.classed('active', context.presets().isFavorite(preset, geom));
|
||||
.classed('active', context.presets().favoriteMatching(preset, geom));
|
||||
}
|
||||
|
||||
context.presets().on('favoritePreset.button-' + preset.id.replace(/[^a-zA-Z\d:]/g, '-') + '-' + geom, update);
|
||||
|
||||
Reference in New Issue
Block a user