Make suggest items clickable with the middle button.

Clicking on an item with the middle button leads the user to the page
for this item. This lets users inspect items without selecting them.
Closes #1934.
This commit is contained in:
Antonin Delpeuch 2019-02-19 14:37:11 +00:00
parent fea1efba41
commit b068e18ada
3 changed files with 20 additions and 0 deletions

View File

@ -1299,6 +1299,20 @@
name.append($("<span></span>").text(data.description));
}
// If we know of a view URL for this suggest service,
// clicking with the middle button sends the user to
// the view page.
if('view_url' in this.options && data.id) {
var view_url = this.options.view_url.replace('{{id}}', data.id);
li.on('mousedown', function(e) {
if (e.which == 2) {
var win = window.open(view_url, '_blank');
win.focus();
e.preventDefault();
}
});
}
//console.log("create_item", li);
return li;
},

View File

@ -200,6 +200,9 @@ DataTableCellUI.prototype._render = function() {
var addSuggest = false;
if ((service) && (service.suggest) && (service.suggest.entity)) {
suggestOptions = service.suggest.entity;
if ('view' in service && 'url' in service.view && !('view_url' in suggestOptions)) {
suggestOptions.view_url = service.view.url;
}
addSuggest = true;
}

View File

@ -85,6 +85,9 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) {
if (service && service.suggest && service.suggest.entity) {
suggestOptions = $.extend({}, service.suggest.entity);
suggestOptions.query_param_name = "prefix";
if ('view' in service && 'url' in service.view && !('view_url' in suggestOptions)) {
suggestOptions.formatter_url = service.view.url;
}
}
var frame = DialogSystem.createDialog();