summaryrefslogtreecommitdiff
path: root/assets/js/src/Popover.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/src/Popover.js')
-rw-r--r--assets/js/src/Popover.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/assets/js/src/Popover.js b/assets/js/src/Popover.js
new file mode 100644
index 00000000..217ae55e
--- /dev/null
+++ b/assets/js/src/Popover.js
@@ -0,0 +1,50 @@
+function Popover(app) {
+ this.app = app;
+ this.router = new Router();
+ this.router.addRoute('screenshot-zone', Screenshot);
+ Mousetrap.bindGlobal("esc", this.close);
+}
+
+Popover.prototype.isOpen = function() {
+ return $('#popover-container').size() > 0;
+};
+
+Popover.prototype.open = function(link) {
+ var self = this;
+
+ $.get(link, function(content) {
+ $("body").append('<div id="popover-container"><div id="popover-content">' + content + '</div></div>');
+ self.router.dispatch();
+ self.app.listen();
+ });
+};
+
+Popover.prototype.close = function(e) {
+ if (e) {
+ e.preventDefault();
+ }
+
+ $('#popover-container').remove();
+};
+
+Popover.prototype.onClick = function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ var link = e.target.getAttribute("href");
+
+ if (! link) {
+ link = e.target.getAttribute("data-href");
+ }
+
+ if (link) {
+ this.open(link);
+ }
+};
+
+Popover.prototype.listen = function() {
+ $(document).on("click", ".popover", this.onClick.bind(this));
+ $(document).on("click", ".close-popover", this.close.bind(this));
+ $(document).on("click", "#popover-container", this.close.bind(this));
+ $(document).on("click", "#popover-content", function(e) { e.stopPropagation(); });
+};