fix multiple id selection in VideoAnnotationPanel chain

This commit is contained in:
j 2025-01-25 10:27:45 +05:30
parent 8e760c3959
commit 01596fa174
2 changed files with 32 additions and 26 deletions

View file

@ -581,26 +581,40 @@ Ox.AnnotationFolder = function(options, self) {
function selectAnnotation(data) {
if (self.loaded) {
var item = Ox.getObjectById(self.options.items, data.id);
self.options.selected = item ? data.id : '';
if (self.widget) {
if (self.options.type == 'event') {
self.$calendar.options({
selected: item && isDefined(item) ? item.event.id : ''
})
.panToEvent();
} else {
self.$map.options({
selected: item && isDefined(item) ? item.place.id : ''
})
.panToPlace();
var extendedData;
if (Ox.isArray(data.id) && data.id.length) {
var items = data.id.map(id => {
return Ox.getObjectById(self.options.items, id);
})
self.options.selected = data.id;
extendedData = Ox.extend(data, {
'in': Ox.min(items.map(item => { return item["in"]; })),
out: Ox.max(items.map(item => { return item["out"]; })),
layer: self.options.id
});
} else {
var item = Ox.getObjectById(self.options.items, data.id)
self.options.selected = item ? data.id : '';
if (self.widget) {
if (self.options.type == 'event') {
self.$calendar.options({
selected: item && isDefined(item) ? item.event.id : ''
})
.panToEvent();
} else {
self.$map.options({
selected: item && isDefined(item) ? item.place.id : ''
})
.panToPlace();
}
}
extendedData = Ox.extend(data, item ? {
'in': item['in'],
out: item.out,
layer: self.options.id
} : {});
}
that.triggerEvent('select', Ox.extend(data, item ? {
'in': item['in'],
out: item.out,
layer: self.options.id
} : {}));
that.triggerEvent('select', extendedData)
}
}

View file

@ -1357,14 +1357,6 @@ Ox.VideoAnnotationPanel = function(options, self) {
if (Ox.isUndefined(data)) {
// doubleclick on small timeline
data = getAnnotation();
} else if (Ox.isArray(data.id)) {
var range = data.id.map(id => {
return Ox.getObjectById(self.annotations, id)
})
data['in'] = Ox.min(range.map(annotation => { return annotation["in"]; }))
data['out'] = Ox.max(range.map(annotation => { return annotation["out"]; }))
setPoint('in', data['in'], true);
setPoint('out', data.out, true);
} else if (!data.id && Ox.$elements[that.oxid]) {
// focus only if in the dom
that.gainFocus();