diff --git a/app/assets/javascripts/sitewide/atwho_res.js b/app/assets/javascripts/sitewide/atwho_res.js.erb similarity index 64% rename from app/assets/javascripts/sitewide/atwho_res.js rename to app/assets/javascripts/sitewide/atwho_res.js.erb index 838333c2d..18aa86d96 100644 --- a/app/assets/javascripts/sitewide/atwho_res.js +++ b/app/assets/javascripts/sitewide/atwho_res.js.erb @@ -22,6 +22,19 @@ var SmartAnnotation = (function() { })(); function setAtWho(field) { + var dataUserUrl, + dataTaskUrl, + dataProjectUrl, + dataExperimentUrl, + dataSampleUrl, + dataMenuItemsUrl; + + dataUserUrl = $(document.body).attr('data-atwho-users-url'); + dataTaskUrl = $(document.body).attr('data-atwho-task-url'); + dataProjectUrl = $(document.body).attr('data-atwho-project-url'); + dataExperimentUrl = $(document.body).attr('data-atwho-experiment-url'); + dataSampleUrl = $(document.body).attr('data-atwho-sample-url'); + dataMenuItemsUrl = $(document.body).attr('data-atwho-menu-items').freeze; // helper methods for AtWho callback function _templateEval(_tpl, map) { @@ -84,11 +97,11 @@ var SmartAnnotation = (function() { break; } $.getJSON( - '/organizations/1/atwho_menu_items', + dataMenuItemsUrl, {query: query}, function(data){ if(data) { - _.each($('.atwho-header .btn'), function(el) { + _.each($('.atwho-header-res .title .btn'), function(el) { $element = $(el); if(data[$element.data('filter')].length === 0) { $element.prop('disabled', true); @@ -130,45 +143,42 @@ var SmartAnnotation = (function() { // Initialize filter buttons function initButtons(query, search_filter) { - $('.atwho-header button').off(); + $('.atwho-header-res query_obj button').off(); + $('.atwho-header-res .dismiss').off('click'); + + $('.atwho-header-res .dismiss').on('click', function() { + $(field).atwho('destroy'); + init(); + }); resourcesChecker(query, search_filter); - $('.atwho-header button').on('click', function(e) { + $('.atwho-header-res .title button').on('click', function(e) { var $button, $prevButton; e.stopPropagation(); - $('.atwho-header button').off(); $button = $(this); - $prevButton = $button.closest('.atwho-header').children('.btn-primary'); + $prevButton = $button.closest('.title').children('.btn-primary'); switch ($button.attr('data-filter')) { case 'prj': - setTimeout(function() { - generateNewQuery('/organizations/1/atwho_projects.json', + generateNewQuery(dataProjectUrl, $prevButton, $button); - }, 300); break; case 'exp': - setTimeout(function() { - generateNewQuery('/organizations/1/atwho_experiments.json', + generateNewQuery(dataExperimentUrl, $prevButton, $button); - }, 300); break; case 'tsk': - setTimeout(function() { - generateNewQuery('/organizations/1/atwho_my_modules.json', + generateNewQuery(dataTaskUrl, $prevButton, $button); - }, 300); break; case 'sam': - setTimeout(function() { - generateNewQuery('/organizations/1/atwho_samples.json', + generateNewQuery(dataSampleUrl, $prevButton, $button); - }, 300); break; } }); @@ -190,50 +200,49 @@ var SmartAnnotation = (function() { if(field_selected) { query_obj = regexp.exec($(field_selected).val()); - new_query = query_obj.input.replace(query_obj[1], ''); - } else { - query_obj = ['']; - new_query = ''; + + 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(); + } + }); + } } - - - $.getJSON( - link, - {query: new_query}, - 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(new_query, - selectedBtn.html()); - } else { - $(field).atwho('destroy'); - init(); - } - }); } // Generates suggestion dropdown filter function generateFilterMenu(active, res_data) { - var header = '