Merge pull request #1238 from ZmagoD/zd_SCI_2511

fixes smart annotation serch queries/dropdown item picker [fixes SCI-…
This commit is contained in:
Luka Murn 2018-07-13 14:54:42 +02:00 committed by GitHub
commit 752fb8dcd8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 5 deletions

View file

@ -352,7 +352,23 @@ var SmartAnnotation = (function() {
}, },
beforeInsert: function(value, li) { beforeInsert: function(value, li) {
return _generateInputTag(value, li); return _generateInputTag(value, li);
} },
matcher:function(flag, subtext, should_startWithSpace, acceptSpaceBar) {
var _a, _y, match, regexp, space;
flag = flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
if (should_startWithSpace) {
flag = '(?:^|\\s)' + flag;
}
_a = decodeURI("%C3%80");
_y = decodeURI("%C3%BF");
regexp = new RegExp(flag + "([A-Za-z" + _a + "-" + _y + "0-9_\\s\+\-\]*)$|" + flag + "([^\\x00-\\xff]*)$", 'gi');
match = regexp.exec(subtext);
if (match) {
return match[2] || match[1];
} else {
return null;
}
},
}, },
headerTpl: generateFilterMenu(defaultFilterType), headerTpl: generateFilterMenu(defaultFilterType),
limit: <%= Constants::ATWHO_SEARCH_LIMIT %>, limit: <%= Constants::ATWHO_SEARCH_LIMIT %>,

View file

@ -21,17 +21,22 @@ module SearchableModel
end end
if options[:whole_word].to_s == 'true' || if options[:whole_word].to_s == 'true' ||
options[:whole_phrase].to_s == 'true' options[:whole_phrase].to_s == 'true' ||
options[:at_search].to_s == 'true'
unless attrs.empty? unless attrs.empty?
like = options[:match_case].to_s == 'true' ? '~' : '~*' like = options[:match_case].to_s == 'true' ? '~' : '~*'
like = 'SIMILAR TO' if options[:at_search].to_s == 'true'
if options[:whole_word].to_s == 'true' if options[:whole_word].to_s == 'true'
a_query = query.split a_query = query.split
.map { |a| Regexp.escape(a) } .map { |a| Regexp.escape(a) }
.join('|') .join('|')
elsif options[:at_search].to_s == 'true'
a_query = "%#{Regexp.escape(query).downcase}%"
else else
a_query = Regexp.escape(query) a_query = Regexp.escape(query)
end end
# quick fix to enable searching by repositoy_row id # quick fix to enable searching by repositoy_row id
id_index = { present: false } id_index = { present: false }
where_str = where_str =
@ -40,7 +45,8 @@ module SearchableModel
id_index = { present: true, val: i } id_index = { present: true, val: i }
"(#{a}) = :t#{i} OR " "(#{a}) = :t#{i} OR "
else else
"(trim_html_tags(#{a})) #{like} :t#{i} OR " col = options[:at_search].to_s == 'true' ? "lower(#{a})": a
"(trim_html_tags(#{col})) #{like} :t#{i} OR "
end end
end end
).join[0..-5] ).join[0..-5]
@ -53,7 +59,6 @@ module SearchableModel
end end
end end
).to_h ).to_h
return where(where_str, vals) return where(where_str, vals)
end end
end end

View file

@ -101,7 +101,7 @@ class SmartAnnotation
def repository_rows(repository) def repository_rows(repository)
res = RepositoryRow res = RepositoryRow
.where(repository: repository) .where(repository: repository)
.where_attributes_like('name', @query) .where_attributes_like('name', @query, at_search: true)
.limit(Constants::ATWHO_SEARCH_LIMIT) .limit(Constants::ATWHO_SEARCH_LIMIT)
rep_items_list = [] rep_items_list = []
splitted_name = repository.name.gsub(/[^0-9a-z ]/i, '').split splitted_name = repository.name.gsub(/[^0-9a-z ]/i, '').split