comparison 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
comparison
equal deleted inserted replaced
1:bca68066a957 2:a64ece32a01a
1 /*! Bootstrap integration for DataTables' Editor
2 * ©2015 SpryMedia Ltd - datatables.net/license
3 */
4
5 (function( factory ){
6 if ( typeof define === 'function' && define.amd ) {
7 // AMD
8 define( ['jquery', 'datatables.net-bs', 'datatables.net-editor'], function ( $ ) {
9 return factory( $, window, document );
10 } );
11 }
12 else if ( typeof exports === 'object' ) {
13 // CommonJS
14 module.exports = function (root, $) {
15 if ( ! root ) {
16 root = window;
17 }
18
19 if ( ! $ || ! $.fn.dataTable ) {
20 $ = require('datatables.net-bs')(root, $).$;
21 }
22
23 if ( ! $.fn.dataTable.Editor ) {
24 require('datatables.net-editor')(root, $);
25 }
26
27 return factory( $, root, root.document );
28 };
29 }
30 else {
31 // Browser
32 factory( jQuery, window, document );
33 }
34 }(function( $, window, document, undefined ) {
35 'use strict';
36 var DataTable = $.fn.dataTable;
37
38
39 /*
40 * Set the default display controller to be our bootstrap control
41 */
42 DataTable.Editor.defaults.display = "bootstrap";
43
44
45 /*
46 * Alter the buttons that Editor adds to TableTools so they are suitable for bootstrap
47 */
48 var i18nDefaults = DataTable.Editor.defaults.i18n;
49 i18nDefaults.create.title = "<h3>"+i18nDefaults.create.title+"</h3>";
50 i18nDefaults.edit.title = "<h3>"+i18nDefaults.edit.title+"</h3>";
51 i18nDefaults.remove.title = "<h3>"+i18nDefaults.remove.title+"</h3>";
52
53 var tt = DataTable.TableTools;
54 if ( tt ) {
55 tt.BUTTONS.editor_create.formButtons[0].className = "btn btn-primary";
56 tt.BUTTONS.editor_edit.formButtons[0].className = "btn btn-primary";
57 tt.BUTTONS.editor_remove.formButtons[0].className = "btn btn-danger";
58 }
59
60
61 /*
62 * Change the default classes from Editor to be classes for Bootstrap
63 */
64 $.extend( true, $.fn.dataTable.Editor.classes, {
65 "header": {
66 "wrapper": "DTE_Header modal-header"
67 },
68 "body": {
69 "wrapper": "DTE_Body modal-body"
70 },
71 "footer": {
72 "wrapper": "DTE_Footer modal-footer"
73 },
74 "form": {
75 "tag": "form-horizontal",
76 "button": "btn btn-default"
77 },
78 "field": {
79 "wrapper": "DTE_Field",
80 "label": "col-lg-4 control-label",
81 "input": "col-lg-8 controls",
82 "error": "error has-error",
83 "msg-labelInfo": "help-block",
84 "msg-info": "help-block",
85 "msg-message": "help-block",
86 "msg-error": "help-block",
87 "multiValue": "well well-sm multi-value",
88 "multiInfo": "small",
89 "multiRestore": "well well-sm multi-restore"
90 }
91 } );
92
93
94 /*
95 * Bootstrap display controller - this is effectively a proxy to the Bootstrap
96 * modal control.
97 */
98
99 var self;
100
101 DataTable.Editor.display.bootstrap = $.extend( true, {}, DataTable.Editor.models.displayController, {
102 /*
103 * API methods
104 */
105 "init": function ( dte ) {
106 // init can be called multiple times (one for each Editor instance), but
107 // we only support a single construct here (shared between all Editor
108 // instances)
109 if ( ! self._dom.content ) {
110 self._dom.content = $(
111 '<div class="modal fade">'+
112 '<div class="modal-dialog">'+
113 '<div class="modal-content"/>'+
114 '</div>'+
115 '</div>'
116 );
117
118 self._dom.close = $('<button class="close">&times;</div>');
119
120 self._dom.close.click( function () {
121 self._dte.close('icon');
122 } );
123
124 $(document).on('click', 'div.modal', function (e) {
125 if ( $(e.target).hasClass('modal') && self._shown ) {
126 self._dte.background();
127 }
128 } );
129
130 dte.on( 'open.dtebs', function ( e, type ) {
131 if ( type === 'inline' || type === 'bubble' ) {
132 $('div.DTE input[type=text], div.DTE select, div.DTE textarea').addClass( 'form-control' );
133 }
134 } );
135 }
136
137 return self;
138 },
139
140 "open": function ( dte, append, callback ) {
141 if ( self._shown ) {
142 if ( callback ) {
143 callback();
144 }
145 return;
146 }
147
148 self._dte = dte;
149 self._shown = true;
150
151 var content = self._dom.content.find('div.modal-content');
152 content.children().detach();
153 content.append( append );
154
155 $('div.modal-header', append).prepend( self._dom.close );
156
157 $(self._dom.content)
158 .one('shown.bs.modal', function () {
159 // Can only give elements focus when shown
160 if ( self._dte.s.setFocus ) {
161 self._dte.s.setFocus.focus();
162 }
163
164 if ( callback ) {
165 callback();
166 }
167 })
168 .one('hidden', function () {
169 self._shown = false;
170 })
171 .appendTo( 'body' )
172 .modal( {
173 backdrop: "static",
174 keyboard: false
175 } );
176
177 $('input:not([type=checkbox]):not([type=radio]), select, textarea', self._dom.content)
178 .addClass( 'form-control' );
179 },
180
181 "close": function ( dte, callback ) {
182 if ( !self._shown ) {
183 if ( callback ) {
184 callback();
185 }
186 return;
187 }
188
189 $(self._dom.content)
190 .one( 'hidden.bs.modal', function () {
191 $(this).detach();
192 } )
193 .modal('hide');
194
195 self._dte = dte;
196 self._shown = false;
197
198 if ( callback ) {
199 callback();
200 }
201 },
202
203 node: function ( dte ) {
204 return self._dom.content[0];
205 },
206
207
208 /*
209 * Private properties
210 */
211 "_shown": false,
212 "_dte": null,
213 "_dom": {}
214 } );
215
216 self = DataTable.Editor.display.bootstrap;
217
218
219 return DataTable.Editor;
220 }));