summaryrefslogtreecommitdiffstats
path: root/public_html/data/js/application.js
diff options
context:
space:
mode:
Diffstat (limited to 'public_html/data/js/application.js')
-rw-r--r--public_html/data/js/application.js130
1 files changed, 130 insertions, 0 deletions
diff --git a/public_html/data/js/application.js b/public_html/data/js/application.js
new file mode 100644
index 000000000..d212ce04c
--- /dev/null
+++ b/public_html/data/js/application.js
@@ -0,0 +1,130 @@
+(function () {
+'use strict';
+define(
+ [
+ 'require',
+ 'util',
+ 'lexer-input',
+ 'tabwidth-input',
+ 'thumbnail-view',
+ 'multipaste',
+ 'uploader',
+ 'tablesorter',
+ 'jquery',
+ 'jquery.lazyload',
+ 'bootstrap',
+ 'jquery.checkboxes',
+ ],
+ function (
+ require,
+ Util,
+ LexerInput,
+ TabwidthInput,
+ ThumbnailView,
+ Multipaste,
+ Uploader,
+ TableSorter,
+ $
+ ) {
+ var ui = {
+ lazyLoadingImages: 'img.lazyload'
+ };
+
+ var App = {
+ // Gets called for every request (before page load)
+ initialize: function () {
+ this.setupLineHighlight();
+ },
+
+ /*
+ * Gets called for every request after page load
+ * config contains app config attributes passed from php
+ */
+ onPageLoaded: function () {
+ Util.highlightLineFromHash();
+ Util.setTabwidthFromLocalStorage();
+ TabwidthInput.initialize();
+ LexerInput.initialize();
+ ThumbnailView.initialize();
+ Multipaste.initialize();
+ Uploader.initialize();
+ TableSorter.initialize();
+ this.configureTooltips();
+ this.setupHistoryPopovers();
+ this.setupToggleSelectAllEvent();
+ this.setupLineWrapToggle();
+ this.setupLazyLoadingImages();
+ this.setupTableRangeSelect();
+ this.setupAsciinema();
+ this.focusLoginFormOnClick();
+ },
+
+ setupTableRangeSelect: function () {
+ $('#upload_history').checkboxes('range', true);
+ },
+
+ setupLineHighlight: function () {
+ $(window).on('hashchange', Util.highlightLineFromHash);
+ },
+
+ configureTooltips: function () {
+ $('[rel="tooltip"]').tooltip({
+ placement: 'bottom',
+ container: 'body',
+ });
+ },
+
+ setupHistoryPopovers: function () {
+ $('#upload_history a').popover({
+ trigger: 'hover',
+ placement: 'bottom',
+ html: true,
+ viewport: '#upload_history',
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><pre class="popover-content"></pre></div>'
+ });
+ },
+
+ setupToggleSelectAllEvent: function () {
+ $('#history-all').on('click', function(event) {
+ // Suppress click event on table heading
+ event.stopImmediatePropagation();
+ });
+ $('#history-all').on('change', function(event) {
+ var checked = $(event.target).prop('checked');
+ $('.delete-history').prop('checked', checked);
+ });
+ },
+
+ setupLineWrapToggle: function () {
+ var linesWrapped = localStorage.getItem('lines_wrapped') || 'true';
+ Util.setLineWrap(linesWrapped === 'true');
+
+ $('.linewrap-toggle').on('click', _.bind(Util.toggleLineWrap, Util));
+ },
+
+ setupLazyLoadingImages: function () {
+ if ($(ui.lazyLoadingImages).length > 0) {
+ $(ui.lazyLoadingImages).lazyload({treshold: 200});
+ }
+ },
+
+ setupAsciinema: function () {
+ _.each($('.asciinema_player'), function (item) {
+ item = $(item);
+ asciinema.player.js.CreatePlayer(item.attr("id"), item.data("url"));
+ });
+ },
+
+ focusLoginFormOnClick: function () {
+ $('.dropdown-toggle').on('click', function (e) {
+ setTimeout(function() {
+ $(e.target).parent().find(".dropdown-menu input.form-control").first().focus();
+ }, 0);
+ });
+ },
+ };
+
+ return App;
+ }
+);
+})();