summaryrefslogtreecommitdiffstats
path: root/public/js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/js/combined.js69
-rw-r--r--public/js/loader.js54
-rw-r--r--public/js/module.js19
3 files changed, 142 insertions, 0 deletions
diff --git a/public/js/combined.js b/public/js/combined.js
new file mode 100644
index 0000000..83b19a5
--- /dev/null
+++ b/public/js/combined.js
@@ -0,0 +1,69 @@
+(function(window, $) {
+ 'use strict';
+
+ var Web = function () {
+ };
+
+ Web.prototype = {
+ initialize: function (icinga) {
+ this.icinga = icinga;
+ $(document).on('focus', 'form.gipfl-form input, form.gipfl-form textarea, form.gipfl-form select', this.formElementFocus);
+ $(document).on('click', '.gipfl-collapsible-control', this.toggleCollapsible);
+ },
+
+ toggleCollapsible: function (ev) {
+ var $toggle = $(ev.currentTarget);
+ var $collapsible = $toggle.parent();
+ $collapsible.toggleClass('collapsed');
+ },
+
+ formElementFocus: function (ev) {
+ var $input = $(ev.currentTarget);
+ if ($input.closest('form.editor').length) {
+ return;
+ }
+ var $set = $input.closest('.extensible-set');
+ if ($set.length) {
+ var $textInputs = $('input[type=text]', $set);
+ if ($textInputs.length > 1) {
+ $textInputs.not(':first').attr('tabIndex', '-1');
+ }
+ }
+
+ var $dd = $input.closest('dd');
+ if ($dd.attr('id') && $dd.attr('id').match(/button/)) {
+ return;
+ }
+ var $li = $input.closest('li');
+ var $dt = $dd.prev();
+ var $form = $dd.closest('form');
+
+ $form.find('dt, dd, dl, li').removeClass('active');
+ $li.addClass('active');
+ $dt.addClass('active');
+ $dd.addClass('active');
+ $dt.closest('dl').addClass('active');
+ },
+
+ highlightFormErrors: function ($container) {
+ $container.find('dd ul.errors').each(function (idx, ul) {
+ var $ul = $(ul);
+ var $dd = $ul.closest('dd');
+ var $dt = $dd.prev();
+
+ $dt.addClass('errors');
+ $dd.addClass('errors');
+ });
+ },
+
+ toggleFieldset: function (ev) {
+ ev.stopPropagation();
+ var $fieldset = $(ev.currentTarget).closest('fieldset');
+ $fieldset.toggleClass('collapsed');
+ this.fixFieldsetInfo($fieldset);
+ this.openedFieldsets[$fieldset.attr('id')] = ! $fieldset.hasClass('collapsed');
+ }
+ };
+
+ window.incubatorComponentLoader.addComponent(new Web());
+})(window, jQuery);
diff --git a/public/js/loader.js b/public/js/loader.js
new file mode 100644
index 0000000..6cd3073
--- /dev/null
+++ b/public/js/loader.js
@@ -0,0 +1,54 @@
+(function(window, $) {
+ 'use strict';
+
+ var IncubatorComponentLoader = function () {
+ this.components = [];
+ };
+
+ IncubatorComponentLoader.prototype = {
+ initialize: function (icinga) {
+ this.icinga = icinga;
+ // Trigger module loading - always
+ icinga.module('incubator');
+ $.each(this.components, function (_, component) {
+ component.initialize(icinga);
+ });
+ icinga.logger.info('Incubator is ready');
+ },
+
+ addComponent: function (component) {
+ this.components.push(component);
+ },
+
+ destroy: function () {
+ // Eventually: this.unbindEventHandlers();
+
+ $.each(this.components, function (_, component) {
+ if (typeof component.destroy === 'function') {
+ component.destroy();
+ }
+ });
+
+ this.components = [];
+ this.icinga = null;
+ }
+ };
+
+ var startup;
+ var w = window;
+ function safeLaunch()
+ {
+ if (typeof(w.icinga) !== 'undefined' && w.icinga.initialized) {
+ clearInterval(startup);
+ w.incubatorComponentLoader.initialize(w.icinga);
+ } else {
+ console.log('Incubator module is still waiting for icinga');
+ }
+ }
+
+ $(document).ready(function () {
+ startup = setInterval(safeLaunch, 30);
+ safeLaunch();
+ });
+ w.incubatorComponentLoader = new IncubatorComponentLoader();
+})(window, jQuery);
diff --git a/public/js/module.js b/public/js/module.js
new file mode 100644
index 0000000..ff4086f
--- /dev/null
+++ b/public/js/module.js
@@ -0,0 +1,19 @@
+(function(window, $) {
+ 'use strict';
+
+ var Incubator = function (icinga) {
+ this.icinga = icinga;
+ };
+
+ Incubator.prototype = {
+ initialize: function (icinga) {
+ },
+
+ destroy: function () {
+ window.incubatorComponentLoader.destroy();
+ this.icinga = null;
+ }
+ };
+
+ Icinga.availableModules.incubator = Incubator;
+})(window, jQuery);