sonarr-repo-only/UI/jQuery/RouteBinder.js

56 lines
1.4 KiB
JavaScript
Raw Normal View History

2013-06-22 06:24:24 +00:00
'use strict';
define(['Shared/StringHelpers'],function (StringHelpers) {
//This module will automatically route all relative links through backbone router rather than
//causing links to reload pages.
var routeBinder = {
2013-06-21 01:43:58 +00:00
bind: function (router) {
2013-06-21 05:19:41 +00:00
var self = this;
$(document).on('click', 'a[href]', function (event) {
self._handleClick(event, router);
});
},
2013-06-21 05:19:41 +00:00
_handleClick: function (event, router) {
var $target = $(event.target);
//check if tab nav
if ($target.parents('.nav-tabs').length) {
return;
}
if ($target.hasClass('no-router')) {
return;
}
event.preventDefault();
var href = event.target.getAttribute('href');
if (!href && $target.parent('a') && $target.parent('a')[0]) {
var linkElement = $target.parent('a')[0];
href = linkElement.getAttribute('href');
}
if (!href) {
throw 'couldn\'t find route target';
}
if (!StringHelpers.startsWith(href, 'http')) {
2013-06-21 05:19:41 +00:00
router.navigate(href, { trigger: true });
}
else {
//Open in new tab
window.open(href, '_blank');
}
}
};
return routeBinder;
});