Mercurial > repos > immport-devteam > cs_overview
diff js/Editor-1.5.6/js/editor.bootstrap.js @ 2:a64ece32a01a draft default tip
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/cs_overview commit a46097db0b6056e1125237393eb6974cfd51eb41"
author | azomics |
---|---|
date | Tue, 28 Jul 2020 08:32:36 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/Editor-1.5.6/js/editor.bootstrap.js Tue Jul 28 08:32:36 2020 -0400 @@ -0,0 +1,220 @@ +/*! Bootstrap integration for DataTables' Editor + * ©2015 SpryMedia Ltd - datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net-bs', 'datatables.net-editor'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + root = window; + } + + if ( ! $ || ! $.fn.dataTable ) { + $ = require('datatables.net-bs')(root, $).$; + } + + if ( ! $.fn.dataTable.Editor ) { + require('datatables.net-editor')(root, $); + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +/* + * Set the default display controller to be our bootstrap control + */ +DataTable.Editor.defaults.display = "bootstrap"; + + +/* + * Alter the buttons that Editor adds to TableTools so they are suitable for bootstrap + */ +var i18nDefaults = DataTable.Editor.defaults.i18n; +i18nDefaults.create.title = "<h3>"+i18nDefaults.create.title+"</h3>"; +i18nDefaults.edit.title = "<h3>"+i18nDefaults.edit.title+"</h3>"; +i18nDefaults.remove.title = "<h3>"+i18nDefaults.remove.title+"</h3>"; + +var tt = DataTable.TableTools; +if ( tt ) { + tt.BUTTONS.editor_create.formButtons[0].className = "btn btn-primary"; + tt.BUTTONS.editor_edit.formButtons[0].className = "btn btn-primary"; + tt.BUTTONS.editor_remove.formButtons[0].className = "btn btn-danger"; +} + + +/* + * Change the default classes from Editor to be classes for Bootstrap + */ +$.extend( true, $.fn.dataTable.Editor.classes, { + "header": { + "wrapper": "DTE_Header modal-header" + }, + "body": { + "wrapper": "DTE_Body modal-body" + }, + "footer": { + "wrapper": "DTE_Footer modal-footer" + }, + "form": { + "tag": "form-horizontal", + "button": "btn btn-default" + }, + "field": { + "wrapper": "DTE_Field", + "label": "col-lg-4 control-label", + "input": "col-lg-8 controls", + "error": "error has-error", + "msg-labelInfo": "help-block", + "msg-info": "help-block", + "msg-message": "help-block", + "msg-error": "help-block", + "multiValue": "well well-sm multi-value", + "multiInfo": "small", + "multiRestore": "well well-sm multi-restore" + } +} ); + + +/* + * Bootstrap display controller - this is effectively a proxy to the Bootstrap + * modal control. + */ + +var self; + +DataTable.Editor.display.bootstrap = $.extend( true, {}, DataTable.Editor.models.displayController, { + /* + * API methods + */ + "init": function ( dte ) { + // init can be called multiple times (one for each Editor instance), but + // we only support a single construct here (shared between all Editor + // instances) + if ( ! self._dom.content ) { + self._dom.content = $( + '<div class="modal fade">'+ + '<div class="modal-dialog">'+ + '<div class="modal-content"/>'+ + '</div>'+ + '</div>' + ); + + self._dom.close = $('<button class="close">×</div>'); + + self._dom.close.click( function () { + self._dte.close('icon'); + } ); + + $(document).on('click', 'div.modal', function (e) { + if ( $(e.target).hasClass('modal') && self._shown ) { + self._dte.background(); + } + } ); + + dte.on( 'open.dtebs', function ( e, type ) { + if ( type === 'inline' || type === 'bubble' ) { + $('div.DTE input[type=text], div.DTE select, div.DTE textarea').addClass( 'form-control' ); + } + } ); + } + + return self; + }, + + "open": function ( dte, append, callback ) { + if ( self._shown ) { + if ( callback ) { + callback(); + } + return; + } + + self._dte = dte; + self._shown = true; + + var content = self._dom.content.find('div.modal-content'); + content.children().detach(); + content.append( append ); + + $('div.modal-header', append).prepend( self._dom.close ); + + $(self._dom.content) + .one('shown.bs.modal', function () { + // Can only give elements focus when shown + if ( self._dte.s.setFocus ) { + self._dte.s.setFocus.focus(); + } + + if ( callback ) { + callback(); + } + }) + .one('hidden', function () { + self._shown = false; + }) + .appendTo( 'body' ) + .modal( { + backdrop: "static", + keyboard: false + } ); + + $('input:not([type=checkbox]):not([type=radio]), select, textarea', self._dom.content) + .addClass( 'form-control' ); + }, + + "close": function ( dte, callback ) { + if ( !self._shown ) { + if ( callback ) { + callback(); + } + return; + } + + $(self._dom.content) + .one( 'hidden.bs.modal', function () { + $(this).detach(); + } ) + .modal('hide'); + + self._dte = dte; + self._shown = false; + + if ( callback ) { + callback(); + } + }, + + node: function ( dte ) { + return self._dom.content[0]; + }, + + + /* + * Private properties + */ + "_shown": false, + "_dte": null, + "_dom": {} +} ); + +self = DataTable.Editor.display.bootstrap; + + +return DataTable.Editor; +}));