lobiboxing-rails 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +25 -0
- data/lib/lobiboxing/rails.rb +8 -0
- data/lib/lobiboxing/rails/version.rb +5 -0
- data/vendor/assets/javascripts/lobibox.js +1572 -0
- data/vendor/assets/javascripts/lobibox/messageboxes.js +1136 -0
- data/vendor/assets/javascripts/lobibox/notifications.js +435 -0
- data/vendor/assets/sounds/sound1.ogg +0 -0
- data/vendor/assets/sounds/sound2.ogg +0 -0
- data/vendor/assets/sounds/sound3.ogg +0 -0
- data/vendor/assets/sounds/sound4.ogg +0 -0
- data/vendor/assets/sounds/sound5.ogg +0 -0
- data/vendor/assets/sounds/sound6.ogg +0 -0
- data/vendor/assets/stylesheets/lobibox.css +1058 -0
- metadata +100 -0
|
@@ -0,0 +1,1136 @@
|
|
|
1
|
+
//Author : @arboshiki
|
|
2
|
+
//create lobibox object
|
|
3
|
+
var Lobibox = Lobibox || {};
|
|
4
|
+
(function () {
|
|
5
|
+
|
|
6
|
+
Lobibox.counter = 0;
|
|
7
|
+
//------------------------------------------------------------------------------
|
|
8
|
+
//------------------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
//User can set default properties for prompt in the following way
|
|
11
|
+
//Lobibox.prompt.DEFAULT_OPTIONS = object;
|
|
12
|
+
Lobibox.prompt = function (type, options) {
|
|
13
|
+
return new LobiboxPrompt(type, options);
|
|
14
|
+
};
|
|
15
|
+
//User can set default properties for confirm in the following way
|
|
16
|
+
//Lobibox.confirm.DEFAULT_OPTIONS = object;
|
|
17
|
+
Lobibox.confirm = function (options) {
|
|
18
|
+
return new LobiboxConfirm(options);
|
|
19
|
+
};
|
|
20
|
+
//User can set default properties for progress in the following way
|
|
21
|
+
//Lobibox.progress.DEFAULT_OPTIONS = object;
|
|
22
|
+
Lobibox.progress = function (options) {
|
|
23
|
+
return new LobiboxProgress(options);
|
|
24
|
+
};
|
|
25
|
+
//Create empty objects in order user to be able to set default options in the following way
|
|
26
|
+
//Lobibox.error.DEFAULT_OPTIONS = object;
|
|
27
|
+
//Lobibox.success.DEFAULT_OPTIONS = object;
|
|
28
|
+
//Lobibox.warning.DEFAULT_OPTIONS = object;
|
|
29
|
+
//Lobibox.info.DEFAULT_OPTIONS = object;
|
|
30
|
+
|
|
31
|
+
Lobibox.error = {};
|
|
32
|
+
Lobibox.success = {};
|
|
33
|
+
Lobibox.warning = {};
|
|
34
|
+
Lobibox.info = {};
|
|
35
|
+
|
|
36
|
+
//User can set default properties for alert in the following way
|
|
37
|
+
//Lobibox.alert.DEFAULT_OPTIONS = object;
|
|
38
|
+
Lobibox.alert = function (type, options) {
|
|
39
|
+
if (["success", "error", "warning", "info"].indexOf(type) > -1) {
|
|
40
|
+
return new LobiboxAlert(type, options);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
//User can set default properties for window in the following way
|
|
44
|
+
//Lobibox.window.DEFAULT_OPTIONS = object;
|
|
45
|
+
Lobibox.window = function (options) {
|
|
46
|
+
return new LobiboxWindow('window', options);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Base prototype for all messageboxes and window
|
|
52
|
+
*/
|
|
53
|
+
var LobiboxBase = {
|
|
54
|
+
$type: null,
|
|
55
|
+
$el: null,
|
|
56
|
+
$options: null,
|
|
57
|
+
debug: function () {
|
|
58
|
+
if (this.$options.debug) {
|
|
59
|
+
window.console.debug.apply(window.console, arguments);
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
_processInput: function (options) {
|
|
63
|
+
if ($.isArray(options.buttons)) {
|
|
64
|
+
var btns = {};
|
|
65
|
+
for (var i = 0; i < options.buttons.length; i++) {
|
|
66
|
+
btns[options.buttons[i]] = Lobibox.base.OPTIONS.buttons[options.buttons[i]];
|
|
67
|
+
}
|
|
68
|
+
options.buttons = btns;
|
|
69
|
+
}
|
|
70
|
+
options.customBtnClass = options.customBtnClass ? options.customBtnClass : Lobibox.base.DEFAULTS.customBtnClass;
|
|
71
|
+
for (var i in options.buttons) {
|
|
72
|
+
if (options.buttons.hasOwnProperty(i)) {
|
|
73
|
+
var btn = options.buttons[i];
|
|
74
|
+
btn = $.extend({}, Lobibox.base.OPTIONS.buttons[i], btn);
|
|
75
|
+
if (!btn['class']) {
|
|
76
|
+
btn['class'] = options.customBtnClass;
|
|
77
|
+
}
|
|
78
|
+
options.buttons[i] = btn;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
options = $.extend({}, Lobibox.base.DEFAULTS, options);
|
|
82
|
+
if (options.showClass === undefined) {
|
|
83
|
+
options.showClass = Lobibox.base.OPTIONS.showClass;
|
|
84
|
+
}
|
|
85
|
+
if (options.hideClass === undefined) {
|
|
86
|
+
options.hideClass = Lobibox.base.OPTIONS.hideClass;
|
|
87
|
+
}
|
|
88
|
+
if (options.baseClass === undefined) {
|
|
89
|
+
options.baseClass = Lobibox.base.OPTIONS.baseClass;
|
|
90
|
+
}
|
|
91
|
+
if (options.delayToRemove === undefined) {
|
|
92
|
+
options.delayToRemove = Lobibox.base.OPTIONS.delayToRemove;
|
|
93
|
+
}
|
|
94
|
+
if (!options.iconClass) {
|
|
95
|
+
options.iconClass = Lobibox.base.OPTIONS.icons[options.iconSource][this.$type];
|
|
96
|
+
}
|
|
97
|
+
return options;
|
|
98
|
+
},
|
|
99
|
+
_init: function () {
|
|
100
|
+
var me = this;
|
|
101
|
+
|
|
102
|
+
me._createMarkup();
|
|
103
|
+
me.setTitle(me.$options.title);
|
|
104
|
+
if (me.$options.draggable && !me._isMobileScreen()) {
|
|
105
|
+
me.$el.addClass('draggable');
|
|
106
|
+
me._enableDrag();
|
|
107
|
+
}
|
|
108
|
+
if (me.$options.closeButton) {
|
|
109
|
+
me._addCloseButton();
|
|
110
|
+
}
|
|
111
|
+
if (me.$options.closeOnEsc) {
|
|
112
|
+
$(document).on('keyup.lobibox', function (ev) {
|
|
113
|
+
if (ev.which === 27) {
|
|
114
|
+
me.destroy();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (me.$options.baseClass) {
|
|
119
|
+
me.$el.addClass(me.$options.baseClass);
|
|
120
|
+
}
|
|
121
|
+
if (me.$options.showClass) {
|
|
122
|
+
me.$el.removeClass(me.$options.hideClass);
|
|
123
|
+
me.$el.addClass(me.$options.showClass);
|
|
124
|
+
}
|
|
125
|
+
me.$el.data('lobibox', me);
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Calculate top, left position based on string keyword
|
|
130
|
+
*
|
|
131
|
+
* @param {string} position "'top', 'center', 'bottom'"
|
|
132
|
+
* @returns {{left: number, top: number}}
|
|
133
|
+
* @private
|
|
134
|
+
*/
|
|
135
|
+
_calculatePosition: function (position) {
|
|
136
|
+
var me = this;
|
|
137
|
+
var top;
|
|
138
|
+
if (position === 'top') {
|
|
139
|
+
top = 30;
|
|
140
|
+
} else if (position === 'bottom') {
|
|
141
|
+
top = $(window).outerHeight() - me.$el.outerHeight() - 30;
|
|
142
|
+
} else {
|
|
143
|
+
top = ($(window).outerHeight() - me.$el.outerHeight()) / 2;
|
|
144
|
+
}
|
|
145
|
+
var left = ($(window).outerWidth() - me.$el.outerWidth()) / 2;
|
|
146
|
+
return {
|
|
147
|
+
left: left,
|
|
148
|
+
top: top
|
|
149
|
+
};
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
_createButton: function (type, op) {
|
|
153
|
+
var me = this;
|
|
154
|
+
var btn = $('<button></button>')
|
|
155
|
+
.addClass(op['class'])
|
|
156
|
+
.attr('data-type', type)
|
|
157
|
+
.html(op.text);
|
|
158
|
+
if (me.$options.callback && typeof me.$options.callback === 'function') {
|
|
159
|
+
btn.on('click.lobibox', function (ev) {
|
|
160
|
+
var bt = $(this);
|
|
161
|
+
me._onButtonClick(me.$options.buttons[type], type);
|
|
162
|
+
me.$options.callback(me, bt.data('type'), ev);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
btn.click(function () {
|
|
166
|
+
me._onButtonClick(me.$options.buttons[type], type);
|
|
167
|
+
});
|
|
168
|
+
return btn;
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
_onButtonClick: function (buttonOptions, type) {
|
|
172
|
+
var me = this;
|
|
173
|
+
|
|
174
|
+
if ((type === 'ok' && me.$type === 'prompt' && me.isValid() || me.$type !== 'prompt' || type !== 'ok')
|
|
175
|
+
&& buttonOptions && buttonOptions.closeOnClick) {
|
|
176
|
+
me.destroy();
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
|
|
180
|
+
_generateButtons: function () {
|
|
181
|
+
var me = this;
|
|
182
|
+
var btns = [];
|
|
183
|
+
for (var i in me.$options.buttons) {
|
|
184
|
+
if (me.$options.buttons.hasOwnProperty(i)) {
|
|
185
|
+
var op = me.$options.buttons[i];
|
|
186
|
+
var btn = me._createButton(i, op);
|
|
187
|
+
btns.push(btn);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return btns;
|
|
191
|
+
},
|
|
192
|
+
_createMarkup: function () {
|
|
193
|
+
var me = this;
|
|
194
|
+
var lobibox = $('<div class="lobibox"></div>');
|
|
195
|
+
lobibox.attr('data-is-modal', me.$options.modal);
|
|
196
|
+
var header = $('<div class="lobibox-header"></div>')
|
|
197
|
+
.append('<span class="lobibox-title"></span>')
|
|
198
|
+
;
|
|
199
|
+
var body = $('<div class="lobibox-body"></div>');
|
|
200
|
+
lobibox.append(header);
|
|
201
|
+
lobibox.append(body);
|
|
202
|
+
if (me.$options.buttons && !$.isEmptyObject(me.$options.buttons)) {
|
|
203
|
+
var footer = $('<div class="lobibox-footer"></div>');
|
|
204
|
+
footer.append(me._generateButtons());
|
|
205
|
+
lobibox.append(footer);
|
|
206
|
+
if (Lobibox.base.OPTIONS.buttonsAlign.indexOf(me.$options.buttonsAlign) > -1) {
|
|
207
|
+
footer.addClass('text-' + me.$options.buttonsAlign);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
me.$el = lobibox
|
|
211
|
+
.addClass(Lobibox.base.OPTIONS.modalClasses[me.$type])
|
|
212
|
+
;
|
|
213
|
+
},
|
|
214
|
+
_setSize: function () {
|
|
215
|
+
var me = this;
|
|
216
|
+
me.setWidth(me.$options.width);
|
|
217
|
+
if (me.$options.height === 'auto') {
|
|
218
|
+
me.setHeight(me.$el.outerHeight());
|
|
219
|
+
} else {
|
|
220
|
+
me.setHeight(me.$options.height);
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
_calculateBodyHeight: function (height) {
|
|
224
|
+
var me = this;
|
|
225
|
+
var headerHeight = me.$el.find('.lobibox-header').outerHeight();
|
|
226
|
+
var footerHeight = me.$el.find('.lobibox-footer').outerHeight();
|
|
227
|
+
return height - (headerHeight ? headerHeight : 0) - (footerHeight ? footerHeight : 0);
|
|
228
|
+
|
|
229
|
+
},
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Add backdrop in case if backdrop does not exist
|
|
233
|
+
*
|
|
234
|
+
* @private
|
|
235
|
+
*/
|
|
236
|
+
_addBackdrop: function () {
|
|
237
|
+
if ($('.lobibox-backdrop').length === 0) {
|
|
238
|
+
$('body').append('<div class="lobibox-backdrop"></div>');
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
|
|
242
|
+
_triggerEvent: function (type) {
|
|
243
|
+
var me = this;
|
|
244
|
+
if (me.$options[type] && typeof me.$options[type] === 'function') {
|
|
245
|
+
me.$options[type](me);
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
|
|
249
|
+
_calculateWidth: function (width) {
|
|
250
|
+
var me = this;
|
|
251
|
+
width = Math.min(Math.max(width, me.$options.width), $(window).outerWidth());
|
|
252
|
+
if (width === $(window).outerWidth()) {
|
|
253
|
+
width -= 2 * me.$options.horizontalOffset;
|
|
254
|
+
}
|
|
255
|
+
return width;
|
|
256
|
+
},
|
|
257
|
+
|
|
258
|
+
_calculateHeight: function (height) {
|
|
259
|
+
var me = this;
|
|
260
|
+
console.log(me.$options.height);
|
|
261
|
+
height = Math.min(Math.max(height, me.$options.height), $(window).outerHeight());
|
|
262
|
+
if (height === $(window).outerHeight()) {
|
|
263
|
+
height -= 2 * me.$options.verticalOffset;
|
|
264
|
+
}
|
|
265
|
+
return height;
|
|
266
|
+
},
|
|
267
|
+
|
|
268
|
+
_addCloseButton: function () {
|
|
269
|
+
var me = this;
|
|
270
|
+
var closeBtn = $('<span class="btn-close">×</span>');
|
|
271
|
+
me.$el.find('.lobibox-header').append(closeBtn);
|
|
272
|
+
closeBtn.on('mousedown', function (ev) {
|
|
273
|
+
ev.stopPropagation();
|
|
274
|
+
});
|
|
275
|
+
closeBtn.on('click.lobibox', function () {
|
|
276
|
+
me.destroy();
|
|
277
|
+
});
|
|
278
|
+
},
|
|
279
|
+
_position: function () {
|
|
280
|
+
var me = this;
|
|
281
|
+
|
|
282
|
+
me._setSize();
|
|
283
|
+
var pos = me._calculatePosition();
|
|
284
|
+
me.setPosition(pos.left, pos.top);
|
|
285
|
+
},
|
|
286
|
+
_isMobileScreen: function () {
|
|
287
|
+
return $(window).outerWidth() < 768;
|
|
288
|
+
},
|
|
289
|
+
_enableDrag: function () {
|
|
290
|
+
var el = this.$el,
|
|
291
|
+
heading = el.find('.lobibox-header');
|
|
292
|
+
|
|
293
|
+
heading.on('mousedown.lobibox', function (ev) {
|
|
294
|
+
el.attr('offset-left', ev.offsetX);
|
|
295
|
+
el.attr('offset-top', ev.offsetY);
|
|
296
|
+
el.attr('allow-drag', 'true');
|
|
297
|
+
});
|
|
298
|
+
$(document).on('mouseup.lobibox', function () {
|
|
299
|
+
el.attr('allow-drag', 'false');
|
|
300
|
+
});
|
|
301
|
+
$(document).on('mousemove.lobibox', function (ev) {
|
|
302
|
+
if (el.attr('allow-drag') === 'true') {
|
|
303
|
+
var left = ev.clientX - parseInt(el.attr('offset-left'), 10) - parseInt(el.css('border-left-width'), 10);
|
|
304
|
+
var top = ev.clientY - parseInt(el.attr('offset-top'), 10) - parseInt(el.css('border-top-width'), 10);
|
|
305
|
+
el.css({
|
|
306
|
+
left: left,
|
|
307
|
+
top: top
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
},
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Set the message of messagebox
|
|
315
|
+
*
|
|
316
|
+
* @param {string} msg "new message of messagebox"
|
|
317
|
+
* @returns {LobiboxBase}
|
|
318
|
+
* @private
|
|
319
|
+
*/
|
|
320
|
+
_setContent: function (msg) {
|
|
321
|
+
var me = this;
|
|
322
|
+
me.$el.find('.lobibox-body').html(msg);
|
|
323
|
+
return me;
|
|
324
|
+
},
|
|
325
|
+
|
|
326
|
+
_beforeShow: function () {
|
|
327
|
+
var me = this;
|
|
328
|
+
me._triggerEvent('onShow');
|
|
329
|
+
},
|
|
330
|
+
|
|
331
|
+
_afterShow: function () {
|
|
332
|
+
var me = this;
|
|
333
|
+
Lobibox.counter++;
|
|
334
|
+
me.$el.attr('data-nth', Lobibox.counter);
|
|
335
|
+
if (!me.$options.draggable){
|
|
336
|
+
$(window).on('resize.lobibox-'+me.$el.attr('data-nth'), function(){
|
|
337
|
+
me.refreshWidth();
|
|
338
|
+
me.refreshHeight();
|
|
339
|
+
me.$el.css('left', '50%').css('margin-left', '-'+(me.$el.width()/2)+'px');
|
|
340
|
+
me.$el.css('top', '50%').css('margin-top', '-'+(me.$el.height()/2)+'px');
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
me._triggerEvent('shown');
|
|
345
|
+
},
|
|
346
|
+
|
|
347
|
+
_beforeClose: function () {
|
|
348
|
+
var me = this;
|
|
349
|
+
me._triggerEvent('beforeClose');
|
|
350
|
+
},
|
|
351
|
+
|
|
352
|
+
_afterClose: function () {
|
|
353
|
+
var me = this;
|
|
354
|
+
if (!me.$options.draggable){
|
|
355
|
+
$(window).off('resize.lobibox-'+me.$el.attr('data-nth'));
|
|
356
|
+
}
|
|
357
|
+
me._triggerEvent('closed');
|
|
358
|
+
},
|
|
359
|
+
//------------------------------------------------------------------------------
|
|
360
|
+
//--------------------------PUBLIC METHODS--------------------------------------
|
|
361
|
+
//------------------------------------------------------------------------------
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Hide the messagebox
|
|
365
|
+
*
|
|
366
|
+
* @returns {LobiboxBase}
|
|
367
|
+
*/
|
|
368
|
+
hide: function () {
|
|
369
|
+
var me = this;
|
|
370
|
+
if (me.$options.hideClass) {
|
|
371
|
+
me.$el.removeClass(me.$options.showClass);
|
|
372
|
+
me.$el.addClass(me.$options.hideClass);
|
|
373
|
+
setTimeout(function () {
|
|
374
|
+
callback();
|
|
375
|
+
}, me.$options.delayToRemove);
|
|
376
|
+
} else {
|
|
377
|
+
callback();
|
|
378
|
+
}
|
|
379
|
+
function callback() {
|
|
380
|
+
me.$el.addClass('lobibox-hidden');
|
|
381
|
+
if ($('.lobibox[data-is-modal=true]:not(.lobibox-hidden)').length === 0) {
|
|
382
|
+
$('.lobibox-backdrop').remove();
|
|
383
|
+
$('body').removeClass(Lobibox.base.OPTIONS.bodyClass);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
return this;
|
|
388
|
+
},
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Removes the messagebox from document
|
|
392
|
+
*
|
|
393
|
+
* @returns {LobiboxBase}
|
|
394
|
+
*/
|
|
395
|
+
destroy: function () {
|
|
396
|
+
var me = this;
|
|
397
|
+
me._beforeClose();
|
|
398
|
+
if (me.$options.hideClass) {
|
|
399
|
+
me.$el.removeClass(me.$options.showClass).addClass(me.$options.hideClass);
|
|
400
|
+
setTimeout(function () {
|
|
401
|
+
callback();
|
|
402
|
+
}, me.$options.delayToRemove);
|
|
403
|
+
} else {
|
|
404
|
+
callback();
|
|
405
|
+
}
|
|
406
|
+
function callback() {
|
|
407
|
+
me.$el.remove();
|
|
408
|
+
if ($('.lobibox[data-is-modal=true]').length === 0) {
|
|
409
|
+
$('.lobibox-backdrop').remove();
|
|
410
|
+
$('body').removeClass(Lobibox.base.OPTIONS.bodyClass);
|
|
411
|
+
}
|
|
412
|
+
me._afterClose();
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
return this;
|
|
416
|
+
},
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Set the width of messagebox
|
|
420
|
+
*
|
|
421
|
+
* @param {number} width "new width of messagebox"
|
|
422
|
+
* @returns {LobiboxBase}
|
|
423
|
+
*/
|
|
424
|
+
setWidth: function (width) {
|
|
425
|
+
var me = this;
|
|
426
|
+
me.$el.css('width', me._calculateWidth(width));
|
|
427
|
+
return me;
|
|
428
|
+
},
|
|
429
|
+
|
|
430
|
+
refreshWidth: function(){
|
|
431
|
+
this.setWidth(this.$el.width());
|
|
432
|
+
},
|
|
433
|
+
|
|
434
|
+
refreshHeight: function(){
|
|
435
|
+
this.setHeight(this.$el.height());
|
|
436
|
+
},
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Set the height of messagebox
|
|
440
|
+
*
|
|
441
|
+
* @param {number} height "new height of messagebox"
|
|
442
|
+
* @returns {LobiboxBase}
|
|
443
|
+
*/
|
|
444
|
+
setHeight: function (height) {
|
|
445
|
+
var me = this;
|
|
446
|
+
me.$el.css('height', me._calculateHeight(height))
|
|
447
|
+
.find('.lobibox-body')
|
|
448
|
+
.css('height', me._calculateBodyHeight(me.$el.innerHeight()));
|
|
449
|
+
return me;
|
|
450
|
+
},
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Set the width and height of messagebox
|
|
454
|
+
*
|
|
455
|
+
* @param {number} width "new width of messagebox"
|
|
456
|
+
* @param {number} height "new height of messagebox"
|
|
457
|
+
* @returns {LobiboxBase}
|
|
458
|
+
*/
|
|
459
|
+
setSize: function (width, height) {
|
|
460
|
+
var me = this;
|
|
461
|
+
me.setWidth(width);
|
|
462
|
+
me.setHeight(height);
|
|
463
|
+
return me;
|
|
464
|
+
},
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* Set position of messagebox
|
|
468
|
+
*
|
|
469
|
+
* @param {number|String} left "left coordinate of messsagebox or string representaing position. Available: ('top', 'center', 'bottom')"
|
|
470
|
+
* @param {number} top
|
|
471
|
+
* @returns {LobiboxBase}
|
|
472
|
+
*/
|
|
473
|
+
setPosition: function (left, top) {
|
|
474
|
+
var pos;
|
|
475
|
+
if (typeof left === 'number' && typeof top === 'number') {
|
|
476
|
+
pos = {
|
|
477
|
+
left: left,
|
|
478
|
+
top: top
|
|
479
|
+
};
|
|
480
|
+
} else if (typeof left === 'string') {
|
|
481
|
+
pos = this._calculatePosition(left);
|
|
482
|
+
}
|
|
483
|
+
this.$el.css(pos);
|
|
484
|
+
return this;
|
|
485
|
+
},
|
|
486
|
+
/**
|
|
487
|
+
* Set the title of messagebox
|
|
488
|
+
*
|
|
489
|
+
* @param {string} title "new title of messagebox"
|
|
490
|
+
* @returns {LobiboxBase}
|
|
491
|
+
*/
|
|
492
|
+
setTitle: function (title) {
|
|
493
|
+
return this.$el.find('.lobibox-title').html(title);
|
|
494
|
+
},
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* Get the title of messagebox
|
|
498
|
+
*
|
|
499
|
+
* @returns {string}
|
|
500
|
+
*/
|
|
501
|
+
getTitle: function () {
|
|
502
|
+
return this.$el.find('.lobibox-title').html();
|
|
503
|
+
},
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Show messagebox
|
|
507
|
+
*
|
|
508
|
+
* @returns {LobiboxBase}
|
|
509
|
+
*/
|
|
510
|
+
show: function () {
|
|
511
|
+
var me = this,
|
|
512
|
+
$body = $('body');
|
|
513
|
+
|
|
514
|
+
me._beforeShow();
|
|
515
|
+
|
|
516
|
+
me.$el.removeClass('lobibox-hidden');
|
|
517
|
+
$body.append(me.$el);
|
|
518
|
+
if (me.$options.buttons) {
|
|
519
|
+
var buttons = me.$el.find('.lobibox-footer').children();
|
|
520
|
+
buttons[0].focus();
|
|
521
|
+
}
|
|
522
|
+
if (me.$options.modal) {
|
|
523
|
+
$body.addClass(Lobibox.base.OPTIONS.bodyClass);
|
|
524
|
+
me._addBackdrop();
|
|
525
|
+
}
|
|
526
|
+
if (me.$options.delay !== false) {
|
|
527
|
+
setTimeout(function () {
|
|
528
|
+
me.destroy();
|
|
529
|
+
}, me.$options.delay);
|
|
530
|
+
}
|
|
531
|
+
me._afterShow();
|
|
532
|
+
return me;
|
|
533
|
+
}
|
|
534
|
+
};
|
|
535
|
+
//User can set default options by this variable
|
|
536
|
+
Lobibox.base = {};
|
|
537
|
+
Lobibox.base.OPTIONS = {
|
|
538
|
+
bodyClass: 'lobibox-open',
|
|
539
|
+
|
|
540
|
+
modalClasses: {
|
|
541
|
+
'error': 'lobibox-error',
|
|
542
|
+
'success': 'lobibox-success',
|
|
543
|
+
'info': 'lobibox-info',
|
|
544
|
+
'warning': 'lobibox-warning',
|
|
545
|
+
'confirm': 'lobibox-confirm',
|
|
546
|
+
'progress': 'lobibox-progress',
|
|
547
|
+
'prompt': 'lobibox-prompt',
|
|
548
|
+
'default': 'lobibox-default',
|
|
549
|
+
'window': 'lobibox-window'
|
|
550
|
+
},
|
|
551
|
+
buttonsAlign: ['left', 'center', 'right'],
|
|
552
|
+
buttons: {
|
|
553
|
+
ok: {
|
|
554
|
+
'class': 'lobibox-btn lobibox-btn-default',
|
|
555
|
+
text: 'OK',
|
|
556
|
+
closeOnClick: true
|
|
557
|
+
},
|
|
558
|
+
cancel: {
|
|
559
|
+
'class': 'lobibox-btn lobibox-btn-cancel',
|
|
560
|
+
text: 'Cancel',
|
|
561
|
+
closeOnClick: true
|
|
562
|
+
},
|
|
563
|
+
yes: {
|
|
564
|
+
'class': 'lobibox-btn lobibox-btn-yes',
|
|
565
|
+
text: 'Yes',
|
|
566
|
+
closeOnClick: true
|
|
567
|
+
},
|
|
568
|
+
no: {
|
|
569
|
+
'class': 'lobibox-btn lobibox-btn-no',
|
|
570
|
+
text: 'No',
|
|
571
|
+
closeOnClick: true
|
|
572
|
+
}
|
|
573
|
+
},
|
|
574
|
+
icons: {
|
|
575
|
+
bootstrap: {
|
|
576
|
+
confirm: 'glyphicon glyphicon-question-sign',
|
|
577
|
+
success: 'glyphicon glyphicon-ok-sign',
|
|
578
|
+
error: 'glyphicon glyphicon-remove-sign',
|
|
579
|
+
warning: 'glyphicon glyphicon-exclamation-sign',
|
|
580
|
+
info: 'glyphicon glyphicon-info-sign'
|
|
581
|
+
},
|
|
582
|
+
fontAwesome: {
|
|
583
|
+
confirm: 'fa fa-question-circle',
|
|
584
|
+
success: 'fa fa-check-circle',
|
|
585
|
+
error: 'fa fa-times-circle',
|
|
586
|
+
warning: 'fa fa-exclamation-circle',
|
|
587
|
+
info: 'fa fa-info-circle'
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
};
|
|
591
|
+
Lobibox.base.DEFAULTS = {
|
|
592
|
+
horizontalOffset: 5, //If the messagebox is larger (in width) than window's width. The messagebox's width is reduced to window width - 2 * horizontalOffset
|
|
593
|
+
verticalOffset: 5, //If the messagebox is larger (in height) than window's height. The messagebox's height is reduced to window height - 2 * verticalOffset
|
|
594
|
+
width: 600,
|
|
595
|
+
height: 'auto', // Height is automatically calculated by width
|
|
596
|
+
closeButton: true, // Show close button or not
|
|
597
|
+
draggable: false, // Make messagebox draggable
|
|
598
|
+
customBtnClass: 'lobibox-btn lobibox-btn-default', // Class for custom buttons
|
|
599
|
+
modal: true,
|
|
600
|
+
debug: false,
|
|
601
|
+
buttonsAlign: 'center', // Position where buttons should be aligned
|
|
602
|
+
closeOnEsc: true, // Close messagebox on Esc press
|
|
603
|
+
delayToRemove: 200, // Time after which lobibox will be removed after remove call. (This option is for hide animation to finish)
|
|
604
|
+
delay: false, // Time to remove lobibox after shown
|
|
605
|
+
baseClass: 'animated-super-fast', // Base class to add all messageboxes
|
|
606
|
+
showClass: 'zoomIn', // Show animation class
|
|
607
|
+
hideClass: 'zoomOut', // Hide animation class
|
|
608
|
+
iconSource: 'bootstrap', // "bootstrap" or "fontAwesome" the library which will be used for icons
|
|
609
|
+
|
|
610
|
+
//events
|
|
611
|
+
//When messagebox show is called but before it is actually shown
|
|
612
|
+
onShow: null,
|
|
613
|
+
//After messagebox is shown
|
|
614
|
+
shown: null,
|
|
615
|
+
//When messagebox remove method is called but before it is actually hidden
|
|
616
|
+
beforeClose: null,
|
|
617
|
+
//After messagebox is hidden
|
|
618
|
+
closed: null
|
|
619
|
+
};
|
|
620
|
+
//------------------------------------------------------------------------------
|
|
621
|
+
//-------------------------LobiboxPrompt----------------------------------------
|
|
622
|
+
//------------------------------------------------------------------------------
|
|
623
|
+
function LobiboxPrompt(type, options) {
|
|
624
|
+
this.$input = null;
|
|
625
|
+
this.$type = 'prompt';
|
|
626
|
+
this.$promptType = type;
|
|
627
|
+
|
|
628
|
+
options = $.extend({}, Lobibox.prompt.DEFAULT_OPTIONS, options);
|
|
629
|
+
|
|
630
|
+
this.$options = this._processInput(options);
|
|
631
|
+
|
|
632
|
+
this._init();
|
|
633
|
+
this.debug(this);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
LobiboxPrompt.prototype = $.extend({}, LobiboxBase, {
|
|
637
|
+
constructor: LobiboxPrompt,
|
|
638
|
+
|
|
639
|
+
_processInput: function (options) {
|
|
640
|
+
var me = this;
|
|
641
|
+
|
|
642
|
+
var mergedOptions = LobiboxBase._processInput.call(me, options);
|
|
643
|
+
mergedOptions.buttons = {
|
|
644
|
+
ok: Lobibox.base.OPTIONS.buttons.ok,
|
|
645
|
+
cancel: Lobibox.base.OPTIONS.buttons.cancel
|
|
646
|
+
};
|
|
647
|
+
options = $.extend({}, mergedOptions, LobiboxPrompt.DEFAULT_OPTIONS, options);
|
|
648
|
+
return options;
|
|
649
|
+
},
|
|
650
|
+
|
|
651
|
+
_init: function () {
|
|
652
|
+
var me = this;
|
|
653
|
+
LobiboxBase._init.call(me);
|
|
654
|
+
me.show();
|
|
655
|
+
},
|
|
656
|
+
|
|
657
|
+
_afterShow: function () {
|
|
658
|
+
var me = this;
|
|
659
|
+
me._setContent(me._createInput())._position();
|
|
660
|
+
me.$input.focus();
|
|
661
|
+
LobiboxBase._afterShow.call(me);
|
|
662
|
+
},
|
|
663
|
+
|
|
664
|
+
_createInput: function () {
|
|
665
|
+
var me = this,
|
|
666
|
+
label;
|
|
667
|
+
if (me.$options.multiline) {
|
|
668
|
+
me.$input = $('<textarea></textarea>').attr('rows', me.$options.lines);
|
|
669
|
+
} else {
|
|
670
|
+
me.$input = $('<input type="' + me.$promptType + '"/>');
|
|
671
|
+
}
|
|
672
|
+
me.$input.addClass('lobibox-input').attr(me.$options.attrs);
|
|
673
|
+
if (me.$options.value) {
|
|
674
|
+
me.setValue(me.$options.value);
|
|
675
|
+
}
|
|
676
|
+
if (me.$options.label) {
|
|
677
|
+
label = $('<label>' + me.$options.label + '</label>');
|
|
678
|
+
}
|
|
679
|
+
return $('<div></div>').append(label, me.$input);
|
|
680
|
+
},
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
* Set value of input
|
|
684
|
+
*
|
|
685
|
+
* @param {string} val "value of input"
|
|
686
|
+
* @returns {LobiboxPrompt}
|
|
687
|
+
*/
|
|
688
|
+
setValue: function (val) {
|
|
689
|
+
this.$input.val(val);
|
|
690
|
+
return this;
|
|
691
|
+
},
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* Get value of input
|
|
695
|
+
*
|
|
696
|
+
* @returns {String}
|
|
697
|
+
*/
|
|
698
|
+
getValue: function () {
|
|
699
|
+
return this.$input.val();
|
|
700
|
+
},
|
|
701
|
+
|
|
702
|
+
isValid: function () {
|
|
703
|
+
var me = this,
|
|
704
|
+
$error = me.$el.find('.lobibox-input-error-message');
|
|
705
|
+
|
|
706
|
+
if (me.$options.required && !me.getValue()){
|
|
707
|
+
me.$input.addClass('invalid');
|
|
708
|
+
if ($error.length === 0){
|
|
709
|
+
me.$el.find('.lobibox-body').append('<p class="lobibox-input-error-message">'+me.$options.errorMessage+'</p>');
|
|
710
|
+
me._position();
|
|
711
|
+
me.$input.focus();
|
|
712
|
+
}
|
|
713
|
+
return false;
|
|
714
|
+
}
|
|
715
|
+
me.$input.removeClass('invalid');
|
|
716
|
+
$error.remove();
|
|
717
|
+
me._position();
|
|
718
|
+
me.$input.focus();
|
|
719
|
+
|
|
720
|
+
return true;
|
|
721
|
+
}
|
|
722
|
+
});
|
|
723
|
+
|
|
724
|
+
LobiboxPrompt.DEFAULT_OPTIONS = {
|
|
725
|
+
width: 400,
|
|
726
|
+
attrs: {}, // Object of any valid attribute of input field
|
|
727
|
+
value: '', // Value which is given to textfield when messagebox is created
|
|
728
|
+
multiline: false, // Set this true for multiline prompt
|
|
729
|
+
lines: 3, // This works only for multiline prompt. Number of lines
|
|
730
|
+
type: 'text', // Prompt type. Available types (text|number|color)
|
|
731
|
+
label: '', // Set some text which will be shown exactly on top of textfield
|
|
732
|
+
required: true,
|
|
733
|
+
errorMessage: 'The field is required'
|
|
734
|
+
};
|
|
735
|
+
//------------------------------------------------------------------------------
|
|
736
|
+
//-------------------------LobiboxConfirm---------------------------------------
|
|
737
|
+
//------------------------------------------------------------------------------
|
|
738
|
+
function LobiboxConfirm(options) {
|
|
739
|
+
this.$type = 'confirm';
|
|
740
|
+
|
|
741
|
+
// options = $.extend({}, Lobibox.confirm.DEFAULT_OPTIONS, options);
|
|
742
|
+
|
|
743
|
+
this.$options = this._processInput(options);
|
|
744
|
+
this._init();
|
|
745
|
+
this.debug(this);
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
LobiboxConfirm.prototype = $.extend({}, LobiboxBase, {
|
|
749
|
+
constructor: LobiboxConfirm,
|
|
750
|
+
|
|
751
|
+
_processInput: function (options) {
|
|
752
|
+
var me = this;
|
|
753
|
+
|
|
754
|
+
var mergedOptions = LobiboxBase._processInput.call(me, options);
|
|
755
|
+
mergedOptions.buttons = {
|
|
756
|
+
yes: Lobibox.base.OPTIONS.buttons.yes,
|
|
757
|
+
no: Lobibox.base.OPTIONS.buttons.no
|
|
758
|
+
};
|
|
759
|
+
options = $.extend({}, mergedOptions, Lobibox.confirm.DEFAULTS, options);
|
|
760
|
+
return options;
|
|
761
|
+
},
|
|
762
|
+
|
|
763
|
+
_init: function () {
|
|
764
|
+
var me = this;
|
|
765
|
+
|
|
766
|
+
LobiboxBase._init.call(me);
|
|
767
|
+
me.show();
|
|
768
|
+
},
|
|
769
|
+
|
|
770
|
+
_afterShow: function () {
|
|
771
|
+
var me = this;
|
|
772
|
+
|
|
773
|
+
var d = $('<div></div>');
|
|
774
|
+
if (me.$options.iconClass) {
|
|
775
|
+
d.append($('<div class="lobibox-icon-wrapper"></div>')
|
|
776
|
+
.append('<i class="lobibox-icon ' + me.$options.iconClass + '"></i>'))
|
|
777
|
+
;
|
|
778
|
+
}
|
|
779
|
+
d.append('<div class="lobibox-body-text-wrapper"><span class="lobibox-body-text">' + me.$options.msg + '</span></div>');
|
|
780
|
+
me._setContent(d.html());
|
|
781
|
+
|
|
782
|
+
me._position();
|
|
783
|
+
|
|
784
|
+
LobiboxBase._afterShow.call(me);
|
|
785
|
+
}
|
|
786
|
+
});
|
|
787
|
+
|
|
788
|
+
Lobibox.confirm.DEFAULTS = {
|
|
789
|
+
title: 'Question',
|
|
790
|
+
width: 500
|
|
791
|
+
};
|
|
792
|
+
//------------------------------------------------------------------------------
|
|
793
|
+
//-------------------------LobiboxAlert------------------------------------------
|
|
794
|
+
//------------------------------------------------------------------------------
|
|
795
|
+
function LobiboxAlert(type, options) {
|
|
796
|
+
this.$type = type;
|
|
797
|
+
|
|
798
|
+
// options = $.extend({}, Lobibox.alert.DEFAULT_OPTIONS, Lobibox[type].DEFAULT_OPTIONS, options);
|
|
799
|
+
|
|
800
|
+
this.$options = this._processInput(options);
|
|
801
|
+
|
|
802
|
+
this._init();
|
|
803
|
+
this.debug(this);
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
LobiboxAlert.prototype = $.extend({}, LobiboxBase, {
|
|
807
|
+
constructor: LobiboxAlert,
|
|
808
|
+
|
|
809
|
+
_processInput: function (options) {
|
|
810
|
+
|
|
811
|
+
// ALERT_OPTIONS = $.extend({}, LobiboxAlert.OPTIONS, Lobibox.alert.DEFAULTS);
|
|
812
|
+
var me = this;
|
|
813
|
+
var mergedOptions = LobiboxBase._processInput.call(me, options);
|
|
814
|
+
mergedOptions.buttons = {
|
|
815
|
+
ok: Lobibox.base.OPTIONS.buttons.ok
|
|
816
|
+
};
|
|
817
|
+
|
|
818
|
+
options = $.extend({}, mergedOptions, Lobibox.alert.OPTIONS[me.$type], Lobibox.alert.DEFAULTS, options);
|
|
819
|
+
|
|
820
|
+
return options;
|
|
821
|
+
},
|
|
822
|
+
|
|
823
|
+
_init: function () {
|
|
824
|
+
var me = this;
|
|
825
|
+
LobiboxBase._init.call(me);
|
|
826
|
+
me.show();
|
|
827
|
+
},
|
|
828
|
+
|
|
829
|
+
_afterShow: function () {
|
|
830
|
+
var me = this;
|
|
831
|
+
|
|
832
|
+
var d = $('<div></div>');
|
|
833
|
+
if (me.$options.iconClass) {
|
|
834
|
+
d.append($('<div class="lobibox-icon-wrapper"></div>')
|
|
835
|
+
.append('<i class="lobibox-icon ' + me.$options.iconClass + '"></i>'))
|
|
836
|
+
;
|
|
837
|
+
}
|
|
838
|
+
d.append('<div class="lobibox-body-text-wrapper"><span class="lobibox-body-text">' + me.$options.msg + '</span></div>');
|
|
839
|
+
me._setContent(d.html());
|
|
840
|
+
me._position();
|
|
841
|
+
|
|
842
|
+
LobiboxBase._afterShow.call(me);
|
|
843
|
+
}
|
|
844
|
+
});
|
|
845
|
+
Lobibox.alert.OPTIONS = {
|
|
846
|
+
warning: {
|
|
847
|
+
title: 'Warning'
|
|
848
|
+
},
|
|
849
|
+
info: {
|
|
850
|
+
title: 'Information'
|
|
851
|
+
},
|
|
852
|
+
success: {
|
|
853
|
+
title: 'Success'
|
|
854
|
+
},
|
|
855
|
+
error: {
|
|
856
|
+
title: 'Error'
|
|
857
|
+
}
|
|
858
|
+
};
|
|
859
|
+
//User can set default options by this variable
|
|
860
|
+
Lobibox.alert.DEFAULTS = {};
|
|
861
|
+
//------------------------------------------------------------------------------
|
|
862
|
+
//-------------------------LobiboxProgress--------------------------------------
|
|
863
|
+
//------------------------------------------------------------------------------
|
|
864
|
+
function LobiboxProgress(options) {
|
|
865
|
+
this.$type = 'progress';
|
|
866
|
+
this.$progressBarElement = null;
|
|
867
|
+
this.$options = this._processInput(options);
|
|
868
|
+
this.$progress = 0;
|
|
869
|
+
|
|
870
|
+
this._init();
|
|
871
|
+
this.debug(this);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
LobiboxProgress.prototype = $.extend({}, LobiboxBase, {
|
|
875
|
+
constructor: LobiboxProgress,
|
|
876
|
+
|
|
877
|
+
_processInput: function (options) {
|
|
878
|
+
var me = this;
|
|
879
|
+
var mergedOptions = LobiboxBase._processInput.call(me, options);
|
|
880
|
+
|
|
881
|
+
options = $.extend({}, mergedOptions, Lobibox.progress.DEFAULTS, options);
|
|
882
|
+
return options;
|
|
883
|
+
},
|
|
884
|
+
|
|
885
|
+
_init: function () {
|
|
886
|
+
var me = this;
|
|
887
|
+
|
|
888
|
+
LobiboxBase._init.call(me);
|
|
889
|
+
me.show();
|
|
890
|
+
},
|
|
891
|
+
|
|
892
|
+
_afterShow: function () {
|
|
893
|
+
var me = this;
|
|
894
|
+
|
|
895
|
+
if (me.$options.progressTpl) {
|
|
896
|
+
me.$progressBarElement = $(me.$options.progressTpl);
|
|
897
|
+
} else {
|
|
898
|
+
me.$progressBarElement = me._createProgressbar();
|
|
899
|
+
}
|
|
900
|
+
var label;
|
|
901
|
+
if (me.$options.label) {
|
|
902
|
+
label = $('<label>' + me.$options.label + '</label>');
|
|
903
|
+
}
|
|
904
|
+
var innerHTML = $('<div></div>').append(label, me.$progressBarElement);
|
|
905
|
+
me._setContent(innerHTML);
|
|
906
|
+
me._position();
|
|
907
|
+
|
|
908
|
+
LobiboxBase._afterShow.call(me);
|
|
909
|
+
},
|
|
910
|
+
|
|
911
|
+
_createProgressbar: function () {
|
|
912
|
+
var me = this;
|
|
913
|
+
var outer = $('<div class="lobibox-progress-bar-wrapper lobibox-progress-outer"></div>')
|
|
914
|
+
.append('<div class="lobibox-progress-bar lobibox-progress-element"></div>')
|
|
915
|
+
;
|
|
916
|
+
if (me.$options.showProgressLabel) {
|
|
917
|
+
outer.append('<span class="lobibox-progress-text" data-role="progress-text"></span>');
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
return outer;
|
|
921
|
+
},
|
|
922
|
+
|
|
923
|
+
/**
|
|
924
|
+
* Set progress value
|
|
925
|
+
*
|
|
926
|
+
* @param {number} progress "progress value"
|
|
927
|
+
* @returns {LobiboxProgress}
|
|
928
|
+
*/
|
|
929
|
+
setProgress: function (progress) {
|
|
930
|
+
var me = this;
|
|
931
|
+
if (me.$progress === 100) {
|
|
932
|
+
return;
|
|
933
|
+
}
|
|
934
|
+
progress = Math.min(100, Math.max(0, progress));
|
|
935
|
+
me.$progress = progress;
|
|
936
|
+
me._triggerEvent('progressUpdated');
|
|
937
|
+
if (me.$progress === 100) {
|
|
938
|
+
me._triggerEvent('progressCompleted');
|
|
939
|
+
}
|
|
940
|
+
me.$el.find('.lobibox-progress-element').css('width', progress.toFixed(1) + "%");
|
|
941
|
+
me.$el.find('[data-role="progress-text"]').html(progress.toFixed(1) + "%");
|
|
942
|
+
return me;
|
|
943
|
+
},
|
|
944
|
+
|
|
945
|
+
/**
|
|
946
|
+
* Get progress value
|
|
947
|
+
*
|
|
948
|
+
* @returns {number}
|
|
949
|
+
*/
|
|
950
|
+
getProgress: function () {
|
|
951
|
+
return this.$progress;
|
|
952
|
+
}
|
|
953
|
+
});
|
|
954
|
+
|
|
955
|
+
Lobibox.progress.DEFAULTS = {
|
|
956
|
+
width: 500,
|
|
957
|
+
showProgressLabel: true, // Show percentage of progress
|
|
958
|
+
label: '', // Show progress label
|
|
959
|
+
progressTpl: false, //Template of progress bar
|
|
960
|
+
|
|
961
|
+
//Events
|
|
962
|
+
progressUpdated: null,
|
|
963
|
+
progressCompleted: null
|
|
964
|
+
};
|
|
965
|
+
//------------------------------------------------------------------------------
|
|
966
|
+
//-------------------------LobiboxWindow----------------------------------------
|
|
967
|
+
//------------------------------------------------------------------------------
|
|
968
|
+
function LobiboxWindow(type, options) {
|
|
969
|
+
this.$type = type;
|
|
970
|
+
|
|
971
|
+
this.$options = this._processInput(options);
|
|
972
|
+
|
|
973
|
+
this._init();
|
|
974
|
+
this.debug(this);
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
LobiboxWindow.prototype = $.extend({}, LobiboxBase, {
|
|
978
|
+
constructor: LobiboxWindow,
|
|
979
|
+
_processInput: function (options) {
|
|
980
|
+
var me = this;
|
|
981
|
+
var mergedOptions = LobiboxBase._processInput.call(me, options);
|
|
982
|
+
|
|
983
|
+
if (options.content && typeof options.content === 'function') {
|
|
984
|
+
options.content = options.content();
|
|
985
|
+
}
|
|
986
|
+
if (options.content instanceof jQuery) {
|
|
987
|
+
options.content = options.content.clone();
|
|
988
|
+
}
|
|
989
|
+
options = $.extend({}, mergedOptions, Lobibox.window.DEFAULTS, options);
|
|
990
|
+
return options;
|
|
991
|
+
},
|
|
992
|
+
|
|
993
|
+
_init: function () {
|
|
994
|
+
var me = this;
|
|
995
|
+
|
|
996
|
+
LobiboxBase._init.call(me);
|
|
997
|
+
me.setContent(me.$options.content);
|
|
998
|
+
if (me.$options.url && me.$options.autoload) {
|
|
999
|
+
if (!me.$options.showAfterLoad) {
|
|
1000
|
+
me.show();
|
|
1001
|
+
}
|
|
1002
|
+
me.load(function () {
|
|
1003
|
+
if (me.$options.showAfterLoad) {
|
|
1004
|
+
me.show();
|
|
1005
|
+
}
|
|
1006
|
+
});
|
|
1007
|
+
} else {
|
|
1008
|
+
me.show();
|
|
1009
|
+
}
|
|
1010
|
+
},
|
|
1011
|
+
|
|
1012
|
+
_afterShow: function () {
|
|
1013
|
+
var me = this;
|
|
1014
|
+
|
|
1015
|
+
me._position();
|
|
1016
|
+
|
|
1017
|
+
LobiboxBase._afterShow.call(me);
|
|
1018
|
+
},
|
|
1019
|
+
|
|
1020
|
+
/**
|
|
1021
|
+
* Setter method for <code>params</code> option
|
|
1022
|
+
*
|
|
1023
|
+
* @param {object} params "new params"
|
|
1024
|
+
* @returns {LobiboxWindow}
|
|
1025
|
+
*/
|
|
1026
|
+
setParams: function (params) {
|
|
1027
|
+
var me = this;
|
|
1028
|
+
me.$options.params = params;
|
|
1029
|
+
return me;
|
|
1030
|
+
},
|
|
1031
|
+
/**
|
|
1032
|
+
* Getter method for <code>params</code>
|
|
1033
|
+
*
|
|
1034
|
+
* @returns {object}
|
|
1035
|
+
*/
|
|
1036
|
+
getParams: function () {
|
|
1037
|
+
var me = this;
|
|
1038
|
+
return me.$options.params;
|
|
1039
|
+
},
|
|
1040
|
+
/**
|
|
1041
|
+
* Setter method of <code>loadMethod</code> option
|
|
1042
|
+
*
|
|
1043
|
+
* @param {string} method "new method"
|
|
1044
|
+
* @returns {LobiboxWindow}
|
|
1045
|
+
*/
|
|
1046
|
+
setLoadMethod: function (method) {
|
|
1047
|
+
var me = this;
|
|
1048
|
+
me.$options.loadMethod = method;
|
|
1049
|
+
return me;
|
|
1050
|
+
},
|
|
1051
|
+
/**
|
|
1052
|
+
* Getter method for <code>loadMethod</code> option
|
|
1053
|
+
*
|
|
1054
|
+
* @returns {string}
|
|
1055
|
+
*/
|
|
1056
|
+
getLoadMethod: function () {
|
|
1057
|
+
var me = this;
|
|
1058
|
+
return me.$options.loadMethod;
|
|
1059
|
+
},
|
|
1060
|
+
/**
|
|
1061
|
+
* Setter method of <code>content</code> option.
|
|
1062
|
+
* Change the content of window
|
|
1063
|
+
*
|
|
1064
|
+
* @param {string} content "new content"
|
|
1065
|
+
* @returns {LobiboxWindow}
|
|
1066
|
+
*/
|
|
1067
|
+
setContent: function (content) {
|
|
1068
|
+
var me = this;
|
|
1069
|
+
me.$options.content = content;
|
|
1070
|
+
me.$el.find('.lobibox-body').html('').append(content);
|
|
1071
|
+
return me;
|
|
1072
|
+
},
|
|
1073
|
+
/**
|
|
1074
|
+
* Getter method of <code>content</code> option
|
|
1075
|
+
*
|
|
1076
|
+
* @returns {string}
|
|
1077
|
+
*/
|
|
1078
|
+
getContent: function () {
|
|
1079
|
+
var me = this;
|
|
1080
|
+
return me.$options.content;
|
|
1081
|
+
},
|
|
1082
|
+
/**
|
|
1083
|
+
* Setter method of <code>url</code> option
|
|
1084
|
+
*
|
|
1085
|
+
* @param {string} url "new url"
|
|
1086
|
+
* @returns {LobiboxWindow}
|
|
1087
|
+
*/
|
|
1088
|
+
setUrl: function (url) {
|
|
1089
|
+
this.$options.url = url;
|
|
1090
|
+
return this;
|
|
1091
|
+
},
|
|
1092
|
+
/**
|
|
1093
|
+
* Getter method of <code>url</code> option
|
|
1094
|
+
*
|
|
1095
|
+
* @returns {String}
|
|
1096
|
+
*/
|
|
1097
|
+
getUrl: function () {
|
|
1098
|
+
return this.$options.url;
|
|
1099
|
+
},
|
|
1100
|
+
/**
|
|
1101
|
+
* Loads content to window by ajax from specific url
|
|
1102
|
+
*
|
|
1103
|
+
* @param {Function} callback "callback function"
|
|
1104
|
+
* @returns {LobiboxWindow}
|
|
1105
|
+
*/
|
|
1106
|
+
load: function (callback) {
|
|
1107
|
+
var me = this;
|
|
1108
|
+
if (!me.$options.url) {
|
|
1109
|
+
return me;
|
|
1110
|
+
}
|
|
1111
|
+
$.ajax(me.$options.url, {
|
|
1112
|
+
method: me.$options.loadMethod,
|
|
1113
|
+
data: me.$options.params
|
|
1114
|
+
}).done(function (res) {
|
|
1115
|
+
me.setContent(res);
|
|
1116
|
+
if (callback && typeof callback === 'function') {
|
|
1117
|
+
callback(res);
|
|
1118
|
+
}
|
|
1119
|
+
});
|
|
1120
|
+
return me;
|
|
1121
|
+
}
|
|
1122
|
+
});
|
|
1123
|
+
|
|
1124
|
+
Lobibox.window.DEFAULTS = {
|
|
1125
|
+
width: 480,
|
|
1126
|
+
height: 600,
|
|
1127
|
+
content: '', // HTML Content of window
|
|
1128
|
+
url: '', // URL which will be used to load content
|
|
1129
|
+
draggable: true, // Override default option
|
|
1130
|
+
autoload: true, // Auto load from given url when window is created
|
|
1131
|
+
loadMethod: 'GET', // Ajax method to load content
|
|
1132
|
+
showAfterLoad: true, // Show window after content is loaded or show and then load content
|
|
1133
|
+
params: {} // Parameters which will be send by ajax for loading content
|
|
1134
|
+
};
|
|
1135
|
+
|
|
1136
|
+
})();
|