mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-11 17:00:41 +08:00
Preventing splitting of the words in the lookup query for # smart annotations. Query on the # is now performed on every character input, before it sometimes just filtered out the old (results count limited) query. Some refactoring of samrt annotations JS. [SCI-884, SCI-889]
This commit is contained in:
parent
e6a8f46139
commit
15d7944302
5 changed files with 35 additions and 113 deletions
|
|
@ -97,7 +97,8 @@ var SmartAnnotation = (function() {
|
||||||
src_btn = 'exp';
|
src_btn = 'exp';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
src_btn = 'sam';
|
var $type = $('.atwho-view[style] .btn-primary').data('filter');
|
||||||
|
src_btn = _.isUndefined($type) ? 'sam' : $type;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,19 +134,6 @@ var SmartAnnotation = (function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset the dropdown
|
|
||||||
function reinitializeOnListHide() {
|
|
||||||
Util.showHideBinding();
|
|
||||||
|
|
||||||
_.map($('.atwho-view'), function(el) {
|
|
||||||
$(el).off('hide');
|
|
||||||
$(el).on('hide', function() {
|
|
||||||
$(field).atwho('destroy');
|
|
||||||
init();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// initialise dropdown dismiss button
|
// initialise dropdown dismiss button
|
||||||
function initDismissButton() {
|
function initDismissButton() {
|
||||||
$('.atwho-header-res .dismiss').off('click');
|
$('.atwho-header-res .dismiss').off('click');
|
||||||
|
|
@ -155,95 +143,27 @@ var SmartAnnotation = (function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize filter buttons
|
// Initialize or update filter buttons
|
||||||
function initButtons(query, search_filter) {
|
function initButtons(query, search_filter) {
|
||||||
$('.atwho-header-res .title button').off();
|
|
||||||
$('.atwho-header-res .dismiss').off('click');
|
|
||||||
|
|
||||||
initDismissButton();
|
initDismissButton();
|
||||||
|
|
||||||
resourcesChecker(query, search_filter);
|
resourcesChecker(query, search_filter);
|
||||||
|
|
||||||
|
$('.atwho-header-res .title button').off();
|
||||||
$('.atwho-header-res .title button').on('click', function(e) {
|
$('.atwho-header-res .title button').on('click', function(e) {
|
||||||
var $button, $prevButton;
|
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
$button = $(this);
|
// Update the selected filter button
|
||||||
$prevButton = $button.closest('.title').children('.btn-primary');
|
var $selectedBtn = $(this);
|
||||||
|
var $prevBtn = $selectedBtn.closest('.title').children('.btn-primary');
|
||||||
|
$selectedBtn.removeClass('btn-default').addClass('btn-primary');
|
||||||
|
$prevBtn.removeClass('btn-primary').addClass('btn-default');
|
||||||
|
|
||||||
switch ($button.attr('data-filter')) {
|
// Updates query and dropdown elements; focuses input
|
||||||
case 'prj':
|
$(field).click().focus();
|
||||||
generateNewQuery(dataProjectUrl,
|
|
||||||
$prevButton,
|
|
||||||
$button);
|
|
||||||
break;
|
|
||||||
case 'exp':
|
|
||||||
generateNewQuery(dataExperimentUrl,
|
|
||||||
$prevButton,
|
|
||||||
$button);
|
|
||||||
break;
|
|
||||||
case 'tsk':
|
|
||||||
generateNewQuery(dataTaskUrl,
|
|
||||||
$prevButton,
|
|
||||||
$button);
|
|
||||||
break;
|
|
||||||
case 'sam':
|
|
||||||
generateNewQuery(dataSampleUrl,
|
|
||||||
$prevButton,
|
|
||||||
$button);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generates new query when user filters the results
|
|
||||||
function generateNewQuery(link, prevBtn, selectedBtn) {
|
|
||||||
var regexp, _a, _y, new_query, query_obj, field_selected;
|
|
||||||
_a = decodeURI("%C3%80");
|
|
||||||
_y = decodeURI("%C3%BF");
|
|
||||||
regexp = new RegExp("(#|task#|project#|sample#|experiment#)([A-Za-z" +
|
|
||||||
_a + "-" + _y + "0-9_ \'\.\+\-]*)$|" +
|
|
||||||
"(#|task#|project#|sample#|experiment#)([^\\x00-\\xff]*)$", 'gi');
|
|
||||||
// filters field if multiple input fields on the page
|
|
||||||
_.each($(field), function(e) {
|
|
||||||
if($(e).atwho('isSelecting')){
|
|
||||||
field_selected = e;
|
|
||||||
}});
|
|
||||||
|
|
||||||
if(field_selected) {
|
|
||||||
query_obj = regexp.exec($(field_selected).val());
|
|
||||||
|
|
||||||
if(query_obj) {
|
|
||||||
$.getJSON(
|
|
||||||
link,
|
|
||||||
{query: query_obj[2]},
|
|
||||||
function(data) {
|
|
||||||
if(data.res.length > 0 && field_selected) {
|
|
||||||
$(field_selected)
|
|
||||||
.atwho('load', query_obj[0], data.res)
|
|
||||||
.atwho('run');
|
|
||||||
|
|
||||||
prevBtn
|
|
||||||
.removeClass('btn-primary')
|
|
||||||
.addClass('btn-default');
|
|
||||||
selectedBtn
|
|
||||||
.removeClass('btn-default')
|
|
||||||
.addClass('btn-primary');
|
|
||||||
|
|
||||||
reinitializeOnListHide();
|
|
||||||
initButtons(query_obj[2],
|
|
||||||
selectedBtn.html());
|
|
||||||
} else {
|
|
||||||
$(field).atwho('destroy');
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generates suggestion dropdown filter
|
// Generates suggestion dropdown filter
|
||||||
function generateFilterMenu(active, res_data) {
|
function generateFilterMenu(active, res_data) {
|
||||||
var header = '<div class="atwho-header-res">' +
|
var header = '<div class="atwho-header-res">' +
|
||||||
|
|
@ -412,8 +332,26 @@ var SmartAnnotation = (function() {
|
||||||
at: '#',
|
at: '#',
|
||||||
callbacks: {
|
callbacks: {
|
||||||
remoteFilter: function(query, callback) {
|
remoteFilter: function(query, callback) {
|
||||||
|
var $type = $('.atwho-view[style] .btn-primary').data('filter');
|
||||||
|
|
||||||
|
switch($type) {
|
||||||
|
case 'tsk':
|
||||||
|
$type = dataTaskUrl;
|
||||||
|
break;
|
||||||
|
case 'prj':
|
||||||
|
$type = dataProjectUrl;
|
||||||
|
break;
|
||||||
|
case 'exp':
|
||||||
|
$type = dataExperimentUrl;
|
||||||
|
break;
|
||||||
|
case 'sam':
|
||||||
|
default:
|
||||||
|
$type = dataSampleUrl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
$.getJSON(
|
$.getJSON(
|
||||||
dataSampleUrl,
|
$type,
|
||||||
{query: query},
|
{query: query},
|
||||||
function(data) {
|
function(data) {
|
||||||
callback(data.res);
|
callback(data.res);
|
||||||
|
|
|
||||||
|
|
@ -46,11 +46,7 @@ class Experiment < ActiveRecord::Base
|
||||||
.select('id')
|
.select('id')
|
||||||
|
|
||||||
if query
|
if query
|
||||||
a_query = query.strip
|
a_query = '%' + query.strip.gsub("_","\\_").gsub("%","\\%") + '%'
|
||||||
.gsub("_","\\_")
|
|
||||||
.gsub("%","\\%")
|
|
||||||
.split(/\s+/)
|
|
||||||
.map {|t| "%" + t + "%" }
|
|
||||||
else
|
else
|
||||||
a_query = query
|
a_query = query
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -54,11 +54,7 @@ class MyModule < ActiveRecord::Base
|
||||||
.select("id")
|
.select("id")
|
||||||
|
|
||||||
if query
|
if query
|
||||||
a_query = query.strip
|
a_query = '%' + query.strip.gsub("_","\\_").gsub("%","\\%") + '%'
|
||||||
.gsub("_","\\_")
|
|
||||||
.gsub("%","\\%")
|
|
||||||
.split(/\s+/)
|
|
||||||
.map {|t| "%" + t + "%" }
|
|
||||||
else
|
else
|
||||||
a_query = query
|
a_query = query
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,7 @@ class Project < ActiveRecord::Base
|
||||||
)
|
)
|
||||||
|
|
||||||
if query
|
if query
|
||||||
a_query = query.strip
|
a_query = '%' + query.strip.gsub("_","\\_").gsub("%","\\%") + '%'
|
||||||
.gsub("_","\\_")
|
|
||||||
.gsub("%","\\%")
|
|
||||||
.split(/\s+/)
|
|
||||||
.map {|t| "%" + t + "%" }
|
|
||||||
else
|
else
|
||||||
a_query = query
|
a_query = query
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -34,11 +34,7 @@ class Sample < ActiveRecord::Base
|
||||||
.distinct
|
.distinct
|
||||||
|
|
||||||
if query
|
if query
|
||||||
a_query = query.strip
|
a_query = '%' + query.strip.gsub("_","\\_").gsub("%","\\%") + '%'
|
||||||
.gsub("_","\\_")
|
|
||||||
.gsub("%","\\%")
|
|
||||||
.split(/\s+/)
|
|
||||||
.map {|t| "%" + t + "%" }
|
|
||||||
else
|
else
|
||||||
a_query = query
|
a_query = query
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue