mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-10 00:11:22 +08:00
Refactored smart annotation JS. [SCI-884]
This commit is contained in:
parent
2877126dc6
commit
d3c33c9dca
1 changed files with 71 additions and 173 deletions
|
|
@ -27,7 +27,9 @@ var SmartAnnotation = (function() {
|
||||||
dataProjectUrl,
|
dataProjectUrl,
|
||||||
dataExperimentUrl,
|
dataExperimentUrl,
|
||||||
dataSampleUrl,
|
dataSampleUrl,
|
||||||
dataMenuItemsUrl;
|
dataMenuItemsUrl,
|
||||||
|
prevAt,
|
||||||
|
DEFAULT_SEARCH_FILTER;
|
||||||
|
|
||||||
dataUserUrl = $(document.body).attr('data-atwho-users-url');
|
dataUserUrl = $(document.body).attr('data-atwho-users-url');
|
||||||
dataTaskUrl = $(document.body).attr('data-atwho-task-url');
|
dataTaskUrl = $(document.body).attr('data-atwho-task-url');
|
||||||
|
|
@ -35,6 +37,8 @@ var SmartAnnotation = (function() {
|
||||||
dataExperimentUrl = $(document.body).attr('data-atwho-experiment-url');
|
dataExperimentUrl = $(document.body).attr('data-atwho-experiment-url');
|
||||||
dataSampleUrl = $(document.body).attr('data-atwho-sample-url');
|
dataSampleUrl = $(document.body).attr('data-atwho-sample-url');
|
||||||
dataMenuItemsUrl = $(document.body).attr('data-atwho-menu-items');
|
dataMenuItemsUrl = $(document.body).attr('data-atwho-menu-items');
|
||||||
|
// Default selected filter when using '#'
|
||||||
|
DEFAULT_SEARCH_FILTER = 'sam';
|
||||||
|
|
||||||
// helper methods for AtWho callback
|
// helper methods for AtWho callback
|
||||||
function _templateEval(_tpl, map) {
|
function _templateEval(_tpl, map) {
|
||||||
|
|
@ -134,9 +138,6 @@ var SmartAnnotation = (function() {
|
||||||
|
|
||||||
$('.atwho-header-res .title button').off();
|
$('.atwho-header-res .title button').off();
|
||||||
$('.atwho-header-res .title button').on('click', function(e) {
|
$('.atwho-header-res .title button').on('click', function(e) {
|
||||||
e.stopPropagation();
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
// Update the selected filter button
|
// Update the selected filter button
|
||||||
var $selectedBtn = $(this);
|
var $selectedBtn = $(this);
|
||||||
var $prevBtn = $selectedBtn.closest('.title').children('.btn-primary');
|
var $prevBtn = $selectedBtn.closest('.title').children('.btn-primary');
|
||||||
|
|
@ -232,10 +233,68 @@ var SmartAnnotation = (function() {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function atWhoSettings(at, defaultSearchFilter) {
|
||||||
// Default selected filter when using '#'
|
return {
|
||||||
var DEFAULT_SEARCH_FILTER = 'sam';
|
at: at,
|
||||||
|
callbacks: {
|
||||||
|
remoteFilter: function(query, callback) {
|
||||||
|
var searchFilter = $('.atwho-view[style] .btn-primary')
|
||||||
|
.data('filter');
|
||||||
|
|
||||||
|
if (_.isUndefined(searchFilter)) {
|
||||||
|
searchFilter = DEFAULT_SEARCH_FILTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(prevAt != at) {
|
||||||
|
prevAt = at;
|
||||||
|
$('.atwho-view[style]').removeAttr("style");
|
||||||
|
searchFilter = defaultSearchFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
var dataUrl;
|
||||||
|
switch(searchFilter) {
|
||||||
|
case 'tsk':
|
||||||
|
dataUrl = dataTaskUrl;
|
||||||
|
break;
|
||||||
|
case 'prj':
|
||||||
|
dataUrl = dataProjectUrl;
|
||||||
|
break;
|
||||||
|
case 'exp':
|
||||||
|
dataUrl = dataExperimentUrl;
|
||||||
|
break;
|
||||||
|
case 'sam':
|
||||||
|
dataUrl = dataSampleUrl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$.getJSON(
|
||||||
|
dataUrl,
|
||||||
|
{query: query},
|
||||||
|
function(data) {
|
||||||
|
callback(data.res);
|
||||||
|
initButtons(query, searchFilter);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
tplEval: function(_tpl, map) {
|
||||||
|
return _templateEval(_tpl, map);
|
||||||
|
},
|
||||||
|
highlighter: function(li, query) {
|
||||||
|
return _matchHighlighter(li, query, true);
|
||||||
|
},
|
||||||
|
beforeInsert: function(value, li) {
|
||||||
|
return _generateInputTag(value, li);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
headerTpl: generateFilterMenu(DEFAULT_SEARCH_FILTER),
|
||||||
|
limit: <%= Constants::ATWHO_SEARCH_LIMIT %>,
|
||||||
|
startWithSpace: true,
|
||||||
|
acceptSpaceBar: true,
|
||||||
|
displayTimeout: 120000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
$(field)
|
$(field)
|
||||||
.atwho({
|
.atwho({
|
||||||
at: '@',
|
at: '@',
|
||||||
|
|
@ -315,172 +374,11 @@ var SmartAnnotation = (function() {
|
||||||
acceptSpaceBar: true,
|
acceptSpaceBar: true,
|
||||||
displayTimeout: 120000
|
displayTimeout: 120000
|
||||||
})
|
})
|
||||||
.atwho({
|
.atwho(atWhoSettings('#', DEFAULT_SEARCH_FILTER))
|
||||||
at: '#',
|
.atwho(atWhoSettings('task#', 'tsk'))
|
||||||
callbacks: {
|
.atwho(atWhoSettings('project#', 'prj'))
|
||||||
remoteFilter: function(query, callback) {
|
.atwho(atWhoSettings('experiment#', 'exp'))
|
||||||
var searchFilter = $('.atwho-view[style] .btn-primary').data('filter');
|
.atwho(atWhoSettings('sample#', 'sam'));
|
||||||
if (_.isUndefined(searchFilter)) {
|
|
||||||
searchFilter = DEFAULT_SEARCH_FILTER;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dataUrl;
|
|
||||||
switch(searchFilter) {
|
|
||||||
case 'tsk':
|
|
||||||
dataUrl = dataTaskUrl;
|
|
||||||
break;
|
|
||||||
case 'prj':
|
|
||||||
dataUrl = dataProjectUrl;
|
|
||||||
break;
|
|
||||||
case 'exp':
|
|
||||||
dataUrl = dataExperimentUrl;
|
|
||||||
break;
|
|
||||||
case 'sam':
|
|
||||||
dataUrl = dataSampleUrl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$.getJSON(
|
|
||||||
dataUrl,
|
|
||||||
{query: query},
|
|
||||||
function(data) {
|
|
||||||
callback(data.res);
|
|
||||||
initButtons(query, searchFilter);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
tplEval: function(_tpl, map) {
|
|
||||||
return _templateEval(_tpl, map);
|
|
||||||
},
|
|
||||||
highlighter: function(li, query) {
|
|
||||||
return _matchHighlighter(li, query, true);
|
|
||||||
},
|
|
||||||
beforeInsert: function(value, li) {
|
|
||||||
return _generateInputTag(value, li);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
headerTpl: generateFilterMenu(DEFAULT_SEARCH_FILTER),
|
|
||||||
limit: <%= Constants::ATWHO_SEARCH_LIMIT %>,
|
|
||||||
startWithSpace: true,
|
|
||||||
acceptSpaceBar: true,
|
|
||||||
displayTimeout: 120000
|
|
||||||
})
|
|
||||||
.atwho({
|
|
||||||
at: 'task#',
|
|
||||||
callbacks: {
|
|
||||||
remoteFilter: function(query, callback) {
|
|
||||||
$.getJSON(
|
|
||||||
dataTaskUrl,
|
|
||||||
{query: query},
|
|
||||||
function(data) {
|
|
||||||
callback(data.res);
|
|
||||||
initButtons(query, 'tsk');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
tplEval: function(_tpl, map) {
|
|
||||||
return _templateEval(_tpl, map);
|
|
||||||
},
|
|
||||||
highlighter: function(li, query) {
|
|
||||||
return _matchHighlighter(li, query, true);
|
|
||||||
},
|
|
||||||
beforeInsert: function(value, li) {
|
|
||||||
return _generateInputTag(value, li);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
headerTpl: generateFilterMenu('tsk'),
|
|
||||||
limit: <%= Constants::ATWHO_SEARCH_LIMIT %>,
|
|
||||||
startWithSpace: true,
|
|
||||||
acceptSpaceBar: true,
|
|
||||||
displayTimeout: 120000
|
|
||||||
})
|
|
||||||
.atwho({
|
|
||||||
at: 'project#',
|
|
||||||
callbacks: {
|
|
||||||
remoteFilter: function(query, callback) {
|
|
||||||
$.getJSON(
|
|
||||||
dataProjectUrl,
|
|
||||||
{query: query},
|
|
||||||
function(data) {
|
|
||||||
callback(data.res);
|
|
||||||
initButtons(query, 'prj');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
tplEval: function(_tpl, map) {
|
|
||||||
return _templateEval(_tpl, map);
|
|
||||||
},
|
|
||||||
highlighter: function(li, query) {
|
|
||||||
return _matchHighlighter(li, query, true);
|
|
||||||
},
|
|
||||||
beforeInsert: function(value, li) {
|
|
||||||
return _generateInputTag(value, li);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
headerTpl: generateFilterMenu('prj'),
|
|
||||||
limit: <%= Constants::ATWHO_SEARCH_LIMIT %>,
|
|
||||||
startWithSpace: true,
|
|
||||||
acceptSpaceBar: true,
|
|
||||||
displayTimeout: 120000
|
|
||||||
})
|
|
||||||
.atwho({
|
|
||||||
at: 'experiment#',
|
|
||||||
callbacks: {
|
|
||||||
remoteFilter: function(query, callback) {
|
|
||||||
$.getJSON(
|
|
||||||
dataExperimentUrl,
|
|
||||||
{query: query},
|
|
||||||
function(data) {
|
|
||||||
callback(data.res);
|
|
||||||
initButtons(query, 'exp');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
tplEval: function(_tpl, map) {
|
|
||||||
return _templateEval(_tpl, map);
|
|
||||||
},
|
|
||||||
highlighter: function(li, query) {
|
|
||||||
return _matchHighlighter(li, query, true);
|
|
||||||
},
|
|
||||||
beforeInsert: function(value, li) {
|
|
||||||
return _generateInputTag(value, li);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
headerTpl: generateFilterMenu('exp'),
|
|
||||||
limit: <%= Constants::ATWHO_SEARCH_LIMIT %>,
|
|
||||||
startWithSpace: true,
|
|
||||||
acceptSpaceBar: true,
|
|
||||||
displayTimeout: 120000
|
|
||||||
})
|
|
||||||
.atwho({
|
|
||||||
at: 'sample#',
|
|
||||||
callbacks: {
|
|
||||||
remoteFilter: function(query, callback) {
|
|
||||||
$.getJSON(
|
|
||||||
dataSampleUrl,
|
|
||||||
{query: query},
|
|
||||||
function(data) {
|
|
||||||
callback(data.res);
|
|
||||||
initButtons(query, 'sam');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
tplEval: function(_tpl, map) {
|
|
||||||
return _templateEval(_tpl, map);
|
|
||||||
},
|
|
||||||
highlighter: function(li, query) {
|
|
||||||
return _matchHighlighter(li, query, true);
|
|
||||||
},
|
|
||||||
beforeInsert: function(value, li) {
|
|
||||||
return _generateInputTag(value, li);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
headerTpl: generateFilterMenu('sam'),
|
|
||||||
limit: <%= Constants::ATWHO_SEARCH_LIMIT %>,
|
|
||||||
startWithSpace: true,
|
|
||||||
acceptSpaceBar: true,
|
|
||||||
displayTimeout: 120000
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue