omf_web 0.9.7 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.md +1 -1
- data/bin/omf_web_demo +3 -0
- data/bin/omf_web_demo.sh +0 -0
- data/doc/tutorial/tut01/hello_world.rb +27 -0
- data/doc/tutorial/tut02/hello_graph.rb +85 -0
- data/doc/tutorial/tut03/hello_database.rb +69 -0
- data/doc/tutorial/tut03/nmetric.sq3 +0 -0
- data/example/bridge/config.ru +2 -1
- data/example/demo/data_sources/downloads.csv +96 -1
- data/example/demo/demo_viz_server.rb +46 -28
- data/example/openflow-gec15/README.md +2 -0
- data/example/openflow-gec15/doc/gec15_topo.png +0 -0
- data/example/openflow-gec15/exp_source.rb +48 -9
- data/example/openflow-gec15/of_viz_server.rb +1 -1
- data/example/openflow-gec15/repository/of-exp.rb +117 -12
- data/example/openflow-gec15/repository/trema-ctl6.rb +2 -2
- data/example/simple/README.md +29 -1
- data/example/simple/data_sources/ping_source.rb +2 -2
- data/lib/irods4r/directory.rb +49 -0
- data/lib/irods4r/file.rb +53 -0
- data/lib/irods4r/icommands.rb +63 -0
- data/lib/irods4r.rb +34 -0
- data/lib/omf-web/content/content_proxy.rb +14 -5
- data/lib/omf-web/content/file_repository.rb +36 -75
- data/lib/omf-web/content/git_repository.rb +39 -35
- data/lib/omf-web/content/irods_repository.rb +191 -0
- data/lib/omf-web/content/repository.rb +84 -21
- data/lib/omf-web/content/static_repository.rb +61 -0
- data/lib/omf-web/data_source_proxy.rb +3 -3
- data/lib/omf-web/rack/session_authenticator.rb +67 -35
- data/lib/omf-web/rack/tab_mapper.rb +2 -1
- data/lib/omf-web/rack/websocket_handler.rb +49 -10
- data/lib/omf-web/session_store.rb +9 -8
- data/lib/omf-web/theme/bright/page.rb +1 -1
- data/lib/omf-web/thin/runner.rb +18 -5
- data/lib/omf-web/version.rb +1 -1
- data/lib/omf-web/widget/text/maruku/output/to_html.rb +8 -2
- data/lib/omf_web.rb +17 -2
- data/omf_web.gemspec +0 -1
- data/share/htdocs/graph/js/abstract_widget.js +3 -1
- data/share/htdocs/graph/js/barchart_brush.js +240 -0
- data/share/htdocs/js/data_source2.js +4 -1
- data/share/htdocs/js/mustache.js +17 -11
- data/share/htdocs/theme/bright/css/bright.css +1 -1
- data/share/htdocs/vendor/{bootstrap-2.1.1 → bootstrap-2.3.1}/css/bootstrap-responsive.css +56 -5
- data/share/htdocs/vendor/bootstrap-2.3.1/css/bootstrap-responsive.min.css +9 -0
- data/share/htdocs/vendor/{bootstrap-2.1.1 → bootstrap-2.3.1}/css/bootstrap.css +856 -472
- data/share/htdocs/vendor/bootstrap-2.3.1/css/bootstrap.min.css +9 -0
- data/share/htdocs/vendor/{bootstrap-2.1.1 → bootstrap-2.3.1}/img/glyphicons-halflings-white.png +0 -0
- data/share/htdocs/vendor/{bootstrap-2.1.1 → bootstrap-2.3.1}/img/glyphicons-halflings.png +0 -0
- data/share/htdocs/vendor/{bootstrap-2.1.1 → bootstrap-2.3.1}/js/bootstrap.js +427 -178
- data/share/htdocs/vendor/bootstrap-2.3.1/js/bootstrap.min.js +6 -0
- data/share/htdocs/vendor/jquery-tipsy/css/tipsy.css +25 -0
- data/share/htdocs/vendor/jquery-tipsy/js/jquery.tipsy.js +258 -0
- metadata +27 -14
- data/bin/omf-web-basic +0 -235
- data/share/htdocs/vendor/.DS_Store +0 -0
- data/share/htdocs/vendor/bootstrap-2.1.1/css/bootstrap-responsive.min.css +0 -9
- data/share/htdocs/vendor/bootstrap-2.1.1/css/bootstrap.min.css +0 -9
- data/share/htdocs/vendor/bootstrap-2.1.1/js/bootstrap.min.js +0 -6
- data/share/htdocs/vendor/jquery-ui-1.8.23/index.html +0 -383
@@ -1,5 +1,5 @@
|
|
1
1
|
/* ===================================================
|
2
|
-
* bootstrap-transition.js v2.
|
2
|
+
* bootstrap-transition.js v2.3.1
|
3
3
|
* http://twitter.github.com/bootstrap/javascript.html#transitions
|
4
4
|
* ===================================================
|
5
5
|
* Copyright 2012 Twitter, Inc.
|
@@ -20,13 +20,13 @@
|
|
20
20
|
|
21
21
|
!function ($) {
|
22
22
|
|
23
|
-
|
23
|
+
"use strict"; // jshint ;_;
|
24
24
|
|
25
|
-
"use strict"; // jshint ;_;
|
26
25
|
|
26
|
+
/* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
|
27
|
+
* ======================================================= */
|
27
28
|
|
28
|
-
|
29
|
-
* ======================================================= */
|
29
|
+
$(function () {
|
30
30
|
|
31
31
|
$.support.transition = (function () {
|
32
32
|
|
@@ -58,7 +58,7 @@
|
|
58
58
|
})
|
59
59
|
|
60
60
|
}(window.jQuery);/* ==========================================================
|
61
|
-
* bootstrap-alert.js v2.
|
61
|
+
* bootstrap-alert.js v2.3.1
|
62
62
|
* http://twitter.github.com/bootstrap/javascript.html#alerts
|
63
63
|
* ==========================================================
|
64
64
|
* Copyright 2012 Twitter, Inc.
|
@@ -127,6 +127,8 @@
|
|
127
127
|
/* ALERT PLUGIN DEFINITION
|
128
128
|
* ======================= */
|
129
129
|
|
130
|
+
var old = $.fn.alert
|
131
|
+
|
130
132
|
$.fn.alert = function (option) {
|
131
133
|
return this.each(function () {
|
132
134
|
var $this = $(this)
|
@@ -139,15 +141,22 @@
|
|
139
141
|
$.fn.alert.Constructor = Alert
|
140
142
|
|
141
143
|
|
144
|
+
/* ALERT NO CONFLICT
|
145
|
+
* ================= */
|
146
|
+
|
147
|
+
$.fn.alert.noConflict = function () {
|
148
|
+
$.fn.alert = old
|
149
|
+
return this
|
150
|
+
}
|
151
|
+
|
152
|
+
|
142
153
|
/* ALERT DATA-API
|
143
154
|
* ============== */
|
144
155
|
|
145
|
-
$(
|
146
|
-
$('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
|
147
|
-
})
|
156
|
+
$(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
|
148
157
|
|
149
158
|
}(window.jQuery);/* ============================================================
|
150
|
-
* bootstrap-button.js v2.
|
159
|
+
* bootstrap-button.js v2.3.1
|
151
160
|
* http://twitter.github.com/bootstrap/javascript.html#buttons
|
152
161
|
* ============================================================
|
153
162
|
* Copyright 2012 Twitter, Inc.
|
@@ -212,6 +221,8 @@
|
|
212
221
|
/* BUTTON PLUGIN DEFINITION
|
213
222
|
* ======================== */
|
214
223
|
|
224
|
+
var old = $.fn.button
|
225
|
+
|
215
226
|
$.fn.button = function (option) {
|
216
227
|
return this.each(function () {
|
217
228
|
var $this = $(this)
|
@@ -230,19 +241,26 @@
|
|
230
241
|
$.fn.button.Constructor = Button
|
231
242
|
|
232
243
|
|
244
|
+
/* BUTTON NO CONFLICT
|
245
|
+
* ================== */
|
246
|
+
|
247
|
+
$.fn.button.noConflict = function () {
|
248
|
+
$.fn.button = old
|
249
|
+
return this
|
250
|
+
}
|
251
|
+
|
252
|
+
|
233
253
|
/* BUTTON DATA-API
|
234
254
|
* =============== */
|
235
255
|
|
236
|
-
$(function () {
|
237
|
-
$
|
238
|
-
|
239
|
-
|
240
|
-
$btn.button('toggle')
|
241
|
-
})
|
256
|
+
$(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
|
257
|
+
var $btn = $(e.target)
|
258
|
+
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
|
259
|
+
$btn.button('toggle')
|
242
260
|
})
|
243
261
|
|
244
262
|
}(window.jQuery);/* ==========================================================
|
245
|
-
* bootstrap-carousel.js v2.
|
263
|
+
* bootstrap-carousel.js v2.3.1
|
246
264
|
* http://twitter.github.com/bootstrap/javascript.html#carousel
|
247
265
|
* ==========================================================
|
248
266
|
* Copyright 2012 Twitter, Inc.
|
@@ -271,8 +289,8 @@
|
|
271
289
|
|
272
290
|
var Carousel = function (element, options) {
|
273
291
|
this.$element = $(element)
|
292
|
+
this.$indicators = this.$element.find('.carousel-indicators')
|
274
293
|
this.options = options
|
275
|
-
this.options.slide && this.slide(this.options.slide)
|
276
294
|
this.options.pause == 'hover' && this.$element
|
277
295
|
.on('mouseenter', $.proxy(this.pause, this))
|
278
296
|
.on('mouseleave', $.proxy(this.cycle, this))
|
@@ -282,19 +300,24 @@
|
|
282
300
|
|
283
301
|
cycle: function (e) {
|
284
302
|
if (!e) this.paused = false
|
303
|
+
if (this.interval) clearInterval(this.interval);
|
285
304
|
this.options.interval
|
286
305
|
&& !this.paused
|
287
306
|
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
|
288
307
|
return this
|
289
308
|
}
|
290
309
|
|
310
|
+
, getActiveIndex: function () {
|
311
|
+
this.$active = this.$element.find('.item.active')
|
312
|
+
this.$items = this.$active.parent().children()
|
313
|
+
return this.$items.index(this.$active)
|
314
|
+
}
|
315
|
+
|
291
316
|
, to: function (pos) {
|
292
|
-
var
|
293
|
-
, children = $active.parent().children()
|
294
|
-
, activePos = children.index($active)
|
317
|
+
var activeIndex = this.getActiveIndex()
|
295
318
|
, that = this
|
296
319
|
|
297
|
-
if (pos > (
|
320
|
+
if (pos > (this.$items.length - 1) || pos < 0) return
|
298
321
|
|
299
322
|
if (this.sliding) {
|
300
323
|
return this.$element.one('slid', function () {
|
@@ -302,18 +325,18 @@
|
|
302
325
|
})
|
303
326
|
}
|
304
327
|
|
305
|
-
if (
|
328
|
+
if (activeIndex == pos) {
|
306
329
|
return this.pause().cycle()
|
307
330
|
}
|
308
331
|
|
309
|
-
return this.slide(pos >
|
332
|
+
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
|
310
333
|
}
|
311
334
|
|
312
335
|
, pause: function (e) {
|
313
336
|
if (!e) this.paused = true
|
314
337
|
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
|
315
338
|
this.$element.trigger($.support.transition.end)
|
316
|
-
this.cycle()
|
339
|
+
this.cycle(true)
|
317
340
|
}
|
318
341
|
clearInterval(this.interval)
|
319
342
|
this.interval = null
|
@@ -337,9 +360,7 @@
|
|
337
360
|
, direction = type == 'next' ? 'left' : 'right'
|
338
361
|
, fallback = type == 'next' ? 'first' : 'last'
|
339
362
|
, that = this
|
340
|
-
, e
|
341
|
-
relatedTarget: $next[0]
|
342
|
-
})
|
363
|
+
, e
|
343
364
|
|
344
365
|
this.sliding = true
|
345
366
|
|
@@ -347,8 +368,21 @@
|
|
347
368
|
|
348
369
|
$next = $next.length ? $next : this.$element.find('.item')[fallback]()
|
349
370
|
|
371
|
+
e = $.Event('slide', {
|
372
|
+
relatedTarget: $next[0]
|
373
|
+
, direction: direction
|
374
|
+
})
|
375
|
+
|
350
376
|
if ($next.hasClass('active')) return
|
351
377
|
|
378
|
+
if (this.$indicators.length) {
|
379
|
+
this.$indicators.find('.active').removeClass('active')
|
380
|
+
this.$element.one('slid', function () {
|
381
|
+
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
|
382
|
+
$nextIndicator && $nextIndicator.addClass('active')
|
383
|
+
})
|
384
|
+
}
|
385
|
+
|
352
386
|
if ($.support.transition && this.$element.hasClass('slide')) {
|
353
387
|
this.$element.trigger(e)
|
354
388
|
if (e.isDefaultPrevented()) return
|
@@ -382,6 +416,8 @@
|
|
382
416
|
/* CAROUSEL PLUGIN DEFINITION
|
383
417
|
* ========================== */
|
384
418
|
|
419
|
+
var old = $.fn.carousel
|
420
|
+
|
385
421
|
$.fn.carousel = function (option) {
|
386
422
|
return this.each(function () {
|
387
423
|
var $this = $(this)
|
@@ -391,7 +427,7 @@
|
|
391
427
|
if (!data) $this.data('carousel', (data = new Carousel(this, options)))
|
392
428
|
if (typeof option == 'number') data.to(option)
|
393
429
|
else if (action) data[action]()
|
394
|
-
else if (options.interval) data.cycle()
|
430
|
+
else if (options.interval) data.pause().cycle()
|
395
431
|
})
|
396
432
|
}
|
397
433
|
|
@@ -403,21 +439,34 @@
|
|
403
439
|
$.fn.carousel.Constructor = Carousel
|
404
440
|
|
405
441
|
|
442
|
+
/* CAROUSEL NO CONFLICT
|
443
|
+
* ==================== */
|
444
|
+
|
445
|
+
$.fn.carousel.noConflict = function () {
|
446
|
+
$.fn.carousel = old
|
447
|
+
return this
|
448
|
+
}
|
449
|
+
|
406
450
|
/* CAROUSEL DATA-API
|
407
451
|
* ================= */
|
408
452
|
|
409
|
-
$(function () {
|
410
|
-
$
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
453
|
+
$(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
|
454
|
+
var $this = $(this), href
|
455
|
+
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
456
|
+
, options = $.extend({}, $target.data(), $this.data())
|
457
|
+
, slideIndex
|
458
|
+
|
459
|
+
$target.carousel(options)
|
460
|
+
|
461
|
+
if (slideIndex = $this.attr('data-slide-to')) {
|
462
|
+
$target.data('carousel').pause().to(slideIndex).cycle()
|
463
|
+
}
|
464
|
+
|
465
|
+
e.preventDefault()
|
417
466
|
})
|
418
467
|
|
419
468
|
}(window.jQuery);/* =============================================================
|
420
|
-
* bootstrap-collapse.js v2.
|
469
|
+
* bootstrap-collapse.js v2.3.1
|
421
470
|
* http://twitter.github.com/bootstrap/javascript.html#collapse
|
422
471
|
* =============================================================
|
423
472
|
* Copyright 2012 Twitter, Inc.
|
@@ -470,7 +519,7 @@
|
|
470
519
|
, actives
|
471
520
|
, hasData
|
472
521
|
|
473
|
-
if (this.transitioning) return
|
522
|
+
if (this.transitioning || this.$element.hasClass('in')) return
|
474
523
|
|
475
524
|
dimension = this.dimension()
|
476
525
|
scroll = $.camelCase(['scroll', dimension].join('-'))
|
@@ -490,7 +539,7 @@
|
|
490
539
|
|
491
540
|
, hide: function () {
|
492
541
|
var dimension
|
493
|
-
if (this.transitioning) return
|
542
|
+
if (this.transitioning || !this.$element.hasClass('in')) return
|
494
543
|
dimension = this.dimension()
|
495
544
|
this.reset(this.$element[dimension]())
|
496
545
|
this.transition('removeClass', $.Event('hide'), 'hidden')
|
@@ -538,14 +587,16 @@
|
|
538
587
|
}
|
539
588
|
|
540
589
|
|
541
|
-
/*
|
542
|
-
*
|
590
|
+
/* COLLAPSE PLUGIN DEFINITION
|
591
|
+
* ========================== */
|
592
|
+
|
593
|
+
var old = $.fn.collapse
|
543
594
|
|
544
595
|
$.fn.collapse = function (option) {
|
545
596
|
return this.each(function () {
|
546
597
|
var $this = $(this)
|
547
598
|
, data = $this.data('collapse')
|
548
|
-
, options = typeof option == 'object' && option
|
599
|
+
, options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
|
549
600
|
if (!data) $this.data('collapse', (data = new Collapse(this, options)))
|
550
601
|
if (typeof option == 'string') data[option]()
|
551
602
|
})
|
@@ -558,23 +609,30 @@
|
|
558
609
|
$.fn.collapse.Constructor = Collapse
|
559
610
|
|
560
611
|
|
561
|
-
/*
|
612
|
+
/* COLLAPSE NO CONFLICT
|
562
613
|
* ==================== */
|
563
614
|
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
615
|
+
$.fn.collapse.noConflict = function () {
|
616
|
+
$.fn.collapse = old
|
617
|
+
return this
|
618
|
+
}
|
619
|
+
|
620
|
+
|
621
|
+
/* COLLAPSE DATA-API
|
622
|
+
* ================= */
|
623
|
+
|
624
|
+
$(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
|
625
|
+
var $this = $(this), href
|
626
|
+
, target = $this.attr('data-target')
|
627
|
+
|| e.preventDefault()
|
628
|
+
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
|
629
|
+
, option = $(target).data('collapse') ? 'toggle' : $this.data()
|
630
|
+
$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
|
631
|
+
$(target).collapse(option)
|
574
632
|
})
|
575
633
|
|
576
634
|
}(window.jQuery);/* ============================================================
|
577
|
-
* bootstrap-dropdown.js v2.
|
635
|
+
* bootstrap-dropdown.js v2.3.1
|
578
636
|
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
|
579
637
|
* ============================================================
|
580
638
|
* Copyright 2012 Twitter, Inc.
|
@@ -628,9 +686,10 @@
|
|
628
686
|
|
629
687
|
if (!isActive) {
|
630
688
|
$parent.toggleClass('open')
|
631
|
-
$this.focus()
|
632
689
|
}
|
633
690
|
|
691
|
+
$this.focus()
|
692
|
+
|
634
693
|
return false
|
635
694
|
}
|
636
695
|
|
@@ -655,9 +714,12 @@
|
|
655
714
|
|
656
715
|
isActive = $parent.hasClass('open')
|
657
716
|
|
658
|
-
if (!isActive || (isActive && e.keyCode == 27))
|
717
|
+
if (!isActive || (isActive && e.keyCode == 27)) {
|
718
|
+
if (e.which == 27) $parent.find(toggle).focus()
|
719
|
+
return $this.click()
|
720
|
+
}
|
659
721
|
|
660
|
-
$items = $('[role=menu] li:not(.divider) a', $parent)
|
722
|
+
$items = $('[role=menu] li:not(.divider):visible a', $parent)
|
661
723
|
|
662
724
|
if (!$items.length) return
|
663
725
|
|
@@ -675,8 +737,9 @@
|
|
675
737
|
}
|
676
738
|
|
677
739
|
function clearMenus() {
|
678
|
-
|
679
|
-
.removeClass('open')
|
740
|
+
$(toggle).each(function () {
|
741
|
+
getParent($(this)).removeClass('open')
|
742
|
+
})
|
680
743
|
}
|
681
744
|
|
682
745
|
function getParent($this) {
|
@@ -688,8 +751,9 @@
|
|
688
751
|
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
689
752
|
}
|
690
753
|
|
691
|
-
$parent = $(selector)
|
692
|
-
|
754
|
+
$parent = selector && $(selector)
|
755
|
+
|
756
|
+
if (!$parent || !$parent.length) $parent = $this.parent()
|
693
757
|
|
694
758
|
return $parent
|
695
759
|
}
|
@@ -698,6 +762,8 @@
|
|
698
762
|
/* DROPDOWN PLUGIN DEFINITION
|
699
763
|
* ========================== */
|
700
764
|
|
765
|
+
var old = $.fn.dropdown
|
766
|
+
|
701
767
|
$.fn.dropdown = function (option) {
|
702
768
|
return this.each(function () {
|
703
769
|
var $this = $(this)
|
@@ -710,20 +776,28 @@
|
|
710
776
|
$.fn.dropdown.Constructor = Dropdown
|
711
777
|
|
712
778
|
|
779
|
+
/* DROPDOWN NO CONFLICT
|
780
|
+
* ==================== */
|
781
|
+
|
782
|
+
$.fn.dropdown.noConflict = function () {
|
783
|
+
$.fn.dropdown = old
|
784
|
+
return this
|
785
|
+
}
|
786
|
+
|
787
|
+
|
713
788
|
/* APPLY TO STANDARD DROPDOWN ELEMENTS
|
714
789
|
* =================================== */
|
715
790
|
|
716
|
-
$(
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
.on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
|
723
|
-
})
|
791
|
+
$(document)
|
792
|
+
.on('click.dropdown.data-api', clearMenus)
|
793
|
+
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
|
794
|
+
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
|
795
|
+
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
|
796
|
+
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
|
724
797
|
|
725
|
-
}(window.jQuery)
|
726
|
-
|
798
|
+
}(window.jQuery);
|
799
|
+
/* =========================================================
|
800
|
+
* bootstrap-modal.js v2.3.1
|
727
801
|
* http://twitter.github.com/bootstrap/javascript.html#modals
|
728
802
|
* =========================================================
|
729
803
|
* Copyright 2012 Twitter, Inc.
|
@@ -773,8 +847,6 @@
|
|
773
847
|
|
774
848
|
if (this.isShown || e.isDefaultPrevented()) return
|
775
849
|
|
776
|
-
$('body').addClass('modal-open')
|
777
|
-
|
778
850
|
this.isShown = true
|
779
851
|
|
780
852
|
this.escape()
|
@@ -786,8 +858,7 @@
|
|
786
858
|
that.$element.appendTo(document.body) //don't move modals dom position
|
787
859
|
}
|
788
860
|
|
789
|
-
that.$element
|
790
|
-
.show()
|
861
|
+
that.$element.show()
|
791
862
|
|
792
863
|
if (transition) {
|
793
864
|
that.$element[0].offsetWidth // force reflow
|
@@ -796,13 +867,12 @@
|
|
796
867
|
that.$element
|
797
868
|
.addClass('in')
|
798
869
|
.attr('aria-hidden', false)
|
799
|
-
.focus()
|
800
870
|
|
801
871
|
that.enforceFocus()
|
802
872
|
|
803
873
|
transition ?
|
804
|
-
that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
|
805
|
-
that.$element.trigger('shown')
|
874
|
+
that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
|
875
|
+
that.$element.focus().trigger('shown')
|
806
876
|
|
807
877
|
})
|
808
878
|
}
|
@@ -820,8 +890,6 @@
|
|
820
890
|
|
821
891
|
this.isShown = false
|
822
892
|
|
823
|
-
$('body').removeClass('modal-open')
|
824
|
-
|
825
893
|
this.escape()
|
826
894
|
|
827
895
|
$(document).off('focusin.modal')
|
@@ -868,16 +936,17 @@
|
|
868
936
|
})
|
869
937
|
}
|
870
938
|
|
871
|
-
, hideModal: function (
|
872
|
-
this
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
939
|
+
, hideModal: function () {
|
940
|
+
var that = this
|
941
|
+
this.$element.hide()
|
942
|
+
this.backdrop(function () {
|
943
|
+
that.removeBackdrop()
|
944
|
+
that.$element.trigger('hidden')
|
945
|
+
})
|
877
946
|
}
|
878
947
|
|
879
948
|
, removeBackdrop: function () {
|
880
|
-
this.$backdrop.remove()
|
949
|
+
this.$backdrop && this.$backdrop.remove()
|
881
950
|
this.$backdrop = null
|
882
951
|
}
|
883
952
|
|
@@ -891,14 +960,18 @@
|
|
891
960
|
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
|
892
961
|
.appendTo(document.body)
|
893
962
|
|
894
|
-
|
895
|
-
this
|
896
|
-
|
963
|
+
this.$backdrop.click(
|
964
|
+
this.options.backdrop == 'static' ?
|
965
|
+
$.proxy(this.$element[0].focus, this.$element[0])
|
966
|
+
: $.proxy(this.hide, this)
|
967
|
+
)
|
897
968
|
|
898
969
|
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
899
970
|
|
900
971
|
this.$backdrop.addClass('in')
|
901
972
|
|
973
|
+
if (!callback) return
|
974
|
+
|
902
975
|
doAnimate ?
|
903
976
|
this.$backdrop.one($.support.transition.end, callback) :
|
904
977
|
callback()
|
@@ -907,8 +980,8 @@
|
|
907
980
|
this.$backdrop.removeClass('in')
|
908
981
|
|
909
982
|
$.support.transition && this.$element.hasClass('fade')?
|
910
|
-
this.$backdrop.one($.support.transition.end,
|
911
|
-
|
983
|
+
this.$backdrop.one($.support.transition.end, callback) :
|
984
|
+
callback()
|
912
985
|
|
913
986
|
} else if (callback) {
|
914
987
|
callback()
|
@@ -920,6 +993,8 @@
|
|
920
993
|
/* MODAL PLUGIN DEFINITION
|
921
994
|
* ======================= */
|
922
995
|
|
996
|
+
var old = $.fn.modal
|
997
|
+
|
923
998
|
$.fn.modal = function (option) {
|
924
999
|
return this.each(function () {
|
925
1000
|
var $this = $(this)
|
@@ -940,28 +1015,36 @@
|
|
940
1015
|
$.fn.modal.Constructor = Modal
|
941
1016
|
|
942
1017
|
|
1018
|
+
/* MODAL NO CONFLICT
|
1019
|
+
* ================= */
|
1020
|
+
|
1021
|
+
$.fn.modal.noConflict = function () {
|
1022
|
+
$.fn.modal = old
|
1023
|
+
return this
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
|
943
1027
|
/* MODAL DATA-API
|
944
1028
|
* ============== */
|
945
1029
|
|
946
|
-
$(function () {
|
947
|
-
$
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
, option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
|
1030
|
+
$(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
|
1031
|
+
var $this = $(this)
|
1032
|
+
, href = $this.attr('href')
|
1033
|
+
, $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
|
1034
|
+
, option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
|
952
1035
|
|
953
|
-
|
1036
|
+
e.preventDefault()
|
954
1037
|
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
})
|
1038
|
+
$target
|
1039
|
+
.modal(option)
|
1040
|
+
.one('hide', function () {
|
1041
|
+
$this.focus()
|
1042
|
+
})
|
961
1043
|
})
|
962
1044
|
|
963
|
-
}(window.jQuery)
|
964
|
-
|
1045
|
+
}(window.jQuery);
|
1046
|
+
/* ===========================================================
|
1047
|
+
* bootstrap-tooltip.js v2.3.1
|
965
1048
|
* http://twitter.github.com/bootstrap/javascript.html#tooltips
|
966
1049
|
* Inspired by the original jQuery.tipsy by Jason Frame
|
967
1050
|
* ===========================================================
|
@@ -1000,19 +1083,27 @@
|
|
1000
1083
|
, init: function (type, element, options) {
|
1001
1084
|
var eventIn
|
1002
1085
|
, eventOut
|
1086
|
+
, triggers
|
1087
|
+
, trigger
|
1088
|
+
, i
|
1003
1089
|
|
1004
1090
|
this.type = type
|
1005
1091
|
this.$element = $(element)
|
1006
1092
|
this.options = this.getOptions(options)
|
1007
1093
|
this.enabled = true
|
1008
1094
|
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1095
|
+
triggers = this.options.trigger.split(' ')
|
1096
|
+
|
1097
|
+
for (i = triggers.length; i--;) {
|
1098
|
+
trigger = triggers[i]
|
1099
|
+
if (trigger == 'click') {
|
1100
|
+
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
|
1101
|
+
} else if (trigger != 'manual') {
|
1102
|
+
eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
|
1103
|
+
eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
|
1104
|
+
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
|
1105
|
+
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
|
1106
|
+
}
|
1016
1107
|
}
|
1017
1108
|
|
1018
1109
|
this.options.selector ?
|
@@ -1021,7 +1112,7 @@
|
|
1021
1112
|
}
|
1022
1113
|
|
1023
1114
|
, getOptions: function (options) {
|
1024
|
-
options = $.extend({}, $.fn[this.type].defaults,
|
1115
|
+
options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
|
1025
1116
|
|
1026
1117
|
if (options.delay && typeof options.delay == 'number') {
|
1027
1118
|
options.delay = {
|
@@ -1034,7 +1125,15 @@
|
|
1034
1125
|
}
|
1035
1126
|
|
1036
1127
|
, enter: function (e) {
|
1037
|
-
var
|
1128
|
+
var defaults = $.fn[this.type].defaults
|
1129
|
+
, options = {}
|
1130
|
+
, self
|
1131
|
+
|
1132
|
+
this._options && $.each(this._options, function (key, value) {
|
1133
|
+
if (defaults[key] != value) options[key] = value
|
1134
|
+
}, this)
|
1135
|
+
|
1136
|
+
self = $(e.currentTarget)[this.type](options).data(this.type)
|
1038
1137
|
|
1039
1138
|
if (!self.options.delay || !self.options.delay.show) return self.show()
|
1040
1139
|
|
@@ -1059,14 +1158,16 @@
|
|
1059
1158
|
|
1060
1159
|
, show: function () {
|
1061
1160
|
var $tip
|
1062
|
-
, inside
|
1063
1161
|
, pos
|
1064
1162
|
, actualWidth
|
1065
1163
|
, actualHeight
|
1066
1164
|
, placement
|
1067
1165
|
, tp
|
1166
|
+
, e = $.Event('show')
|
1068
1167
|
|
1069
1168
|
if (this.hasContent() && this.enabled) {
|
1169
|
+
this.$element.trigger(e)
|
1170
|
+
if (e.isDefaultPrevented()) return
|
1070
1171
|
$tip = this.tip()
|
1071
1172
|
this.setContent()
|
1072
1173
|
|
@@ -1078,19 +1179,18 @@
|
|
1078
1179
|
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
1079
1180
|
this.options.placement
|
1080
1181
|
|
1081
|
-
inside = /in/.test(placement)
|
1082
|
-
|
1083
1182
|
$tip
|
1084
|
-
.
|
1183
|
+
.detach()
|
1085
1184
|
.css({ top: 0, left: 0, display: 'block' })
|
1086
|
-
.appendTo(inside ? this.$element : document.body)
|
1087
1185
|
|
1088
|
-
|
1186
|
+
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
1187
|
+
|
1188
|
+
pos = this.getPosition()
|
1089
1189
|
|
1090
1190
|
actualWidth = $tip[0].offsetWidth
|
1091
1191
|
actualHeight = $tip[0].offsetHeight
|
1092
1192
|
|
1093
|
-
switch (
|
1193
|
+
switch (placement) {
|
1094
1194
|
case 'bottom':
|
1095
1195
|
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
1096
1196
|
break
|
@@ -1105,11 +1205,56 @@
|
|
1105
1205
|
break
|
1106
1206
|
}
|
1107
1207
|
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1208
|
+
this.applyPlacement(tp, placement)
|
1209
|
+
this.$element.trigger('shown')
|
1210
|
+
}
|
1211
|
+
}
|
1212
|
+
|
1213
|
+
, applyPlacement: function(offset, placement){
|
1214
|
+
var $tip = this.tip()
|
1215
|
+
, width = $tip[0].offsetWidth
|
1216
|
+
, height = $tip[0].offsetHeight
|
1217
|
+
, actualWidth
|
1218
|
+
, actualHeight
|
1219
|
+
, delta
|
1220
|
+
, replace
|
1221
|
+
|
1222
|
+
$tip
|
1223
|
+
.offset(offset)
|
1224
|
+
.addClass(placement)
|
1225
|
+
.addClass('in')
|
1226
|
+
|
1227
|
+
actualWidth = $tip[0].offsetWidth
|
1228
|
+
actualHeight = $tip[0].offsetHeight
|
1229
|
+
|
1230
|
+
if (placement == 'top' && actualHeight != height) {
|
1231
|
+
offset.top = offset.top + height - actualHeight
|
1232
|
+
replace = true
|
1233
|
+
}
|
1234
|
+
|
1235
|
+
if (placement == 'bottom' || placement == 'top') {
|
1236
|
+
delta = 0
|
1237
|
+
|
1238
|
+
if (offset.left < 0){
|
1239
|
+
delta = offset.left * -2
|
1240
|
+
offset.left = 0
|
1241
|
+
$tip.offset(offset)
|
1242
|
+
actualWidth = $tip[0].offsetWidth
|
1243
|
+
actualHeight = $tip[0].offsetHeight
|
1244
|
+
}
|
1245
|
+
|
1246
|
+
this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
|
1247
|
+
} else {
|
1248
|
+
this.replaceArrow(actualHeight - height, actualHeight, 'top')
|
1112
1249
|
}
|
1250
|
+
|
1251
|
+
if (replace) $tip.offset(offset)
|
1252
|
+
}
|
1253
|
+
|
1254
|
+
, replaceArrow: function(delta, dimension, position){
|
1255
|
+
this
|
1256
|
+
.arrow()
|
1257
|
+
.css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
|
1113
1258
|
}
|
1114
1259
|
|
1115
1260
|
, setContent: function () {
|
@@ -1123,23 +1268,29 @@
|
|
1123
1268
|
, hide: function () {
|
1124
1269
|
var that = this
|
1125
1270
|
, $tip = this.tip()
|
1271
|
+
, e = $.Event('hide')
|
1272
|
+
|
1273
|
+
this.$element.trigger(e)
|
1274
|
+
if (e.isDefaultPrevented()) return
|
1126
1275
|
|
1127
1276
|
$tip.removeClass('in')
|
1128
1277
|
|
1129
1278
|
function removeWithAnimation() {
|
1130
1279
|
var timeout = setTimeout(function () {
|
1131
|
-
$tip.off($.support.transition.end).
|
1280
|
+
$tip.off($.support.transition.end).detach()
|
1132
1281
|
}, 500)
|
1133
1282
|
|
1134
1283
|
$tip.one($.support.transition.end, function () {
|
1135
1284
|
clearTimeout(timeout)
|
1136
|
-
$tip.
|
1285
|
+
$tip.detach()
|
1137
1286
|
})
|
1138
1287
|
}
|
1139
1288
|
|
1140
1289
|
$.support.transition && this.$tip.hasClass('fade') ?
|
1141
1290
|
removeWithAnimation() :
|
1142
|
-
$tip.
|
1291
|
+
$tip.detach()
|
1292
|
+
|
1293
|
+
this.$element.trigger('hidden')
|
1143
1294
|
|
1144
1295
|
return this
|
1145
1296
|
}
|
@@ -1147,7 +1298,7 @@
|
|
1147
1298
|
, fixTitle: function () {
|
1148
1299
|
var $e = this.$element
|
1149
1300
|
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
|
1150
|
-
$e.attr('data-original-title', $e.attr('title') || '').
|
1301
|
+
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
1151
1302
|
}
|
1152
1303
|
}
|
1153
1304
|
|
@@ -1155,11 +1306,12 @@
|
|
1155
1306
|
return this.getTitle()
|
1156
1307
|
}
|
1157
1308
|
|
1158
|
-
, getPosition: function (
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1309
|
+
, getPosition: function () {
|
1310
|
+
var el = this.$element[0]
|
1311
|
+
return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
|
1312
|
+
width: el.offsetWidth
|
1313
|
+
, height: el.offsetHeight
|
1314
|
+
}, this.$element.offset())
|
1163
1315
|
}
|
1164
1316
|
|
1165
1317
|
, getTitle: function () {
|
@@ -1177,6 +1329,10 @@
|
|
1177
1329
|
return this.$tip = this.$tip || $(this.options.template)
|
1178
1330
|
}
|
1179
1331
|
|
1332
|
+
, arrow: function(){
|
1333
|
+
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
|
1334
|
+
}
|
1335
|
+
|
1180
1336
|
, validate: function () {
|
1181
1337
|
if (!this.$element[0].parentNode) {
|
1182
1338
|
this.hide()
|
@@ -1197,8 +1353,9 @@
|
|
1197
1353
|
this.enabled = !this.enabled
|
1198
1354
|
}
|
1199
1355
|
|
1200
|
-
, toggle: function () {
|
1201
|
-
|
1356
|
+
, toggle: function (e) {
|
1357
|
+
var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
|
1358
|
+
self.tip().hasClass('in') ? self.hide() : self.show()
|
1202
1359
|
}
|
1203
1360
|
|
1204
1361
|
, destroy: function () {
|
@@ -1211,6 +1368,8 @@
|
|
1211
1368
|
/* TOOLTIP PLUGIN DEFINITION
|
1212
1369
|
* ========================= */
|
1213
1370
|
|
1371
|
+
var old = $.fn.tooltip
|
1372
|
+
|
1214
1373
|
$.fn.tooltip = function ( option ) {
|
1215
1374
|
return this.each(function () {
|
1216
1375
|
var $this = $(this)
|
@@ -1228,15 +1387,25 @@
|
|
1228
1387
|
, placement: 'top'
|
1229
1388
|
, selector: false
|
1230
1389
|
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
|
1231
|
-
, trigger: 'hover'
|
1390
|
+
, trigger: 'hover focus'
|
1232
1391
|
, title: ''
|
1233
1392
|
, delay: 0
|
1234
|
-
, html:
|
1393
|
+
, html: false
|
1394
|
+
, container: false
|
1395
|
+
}
|
1396
|
+
|
1397
|
+
|
1398
|
+
/* TOOLTIP NO CONFLICT
|
1399
|
+
* =================== */
|
1400
|
+
|
1401
|
+
$.fn.tooltip.noConflict = function () {
|
1402
|
+
$.fn.tooltip = old
|
1403
|
+
return this
|
1235
1404
|
}
|
1236
1405
|
|
1237
1406
|
}(window.jQuery);
|
1238
1407
|
/* ===========================================================
|
1239
|
-
* bootstrap-popover.js v2.
|
1408
|
+
* bootstrap-popover.js v2.3.1
|
1240
1409
|
* http://twitter.github.com/bootstrap/javascript.html#popovers
|
1241
1410
|
* ===========================================================
|
1242
1411
|
* Copyright 2012 Twitter, Inc.
|
@@ -1281,7 +1450,7 @@
|
|
1281
1450
|
, content = this.getContent()
|
1282
1451
|
|
1283
1452
|
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
1284
|
-
$tip.find('.popover-content
|
1453
|
+
$tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
|
1285
1454
|
|
1286
1455
|
$tip.removeClass('fade top bottom left right in')
|
1287
1456
|
}
|
@@ -1295,8 +1464,8 @@
|
|
1295
1464
|
, $e = this.$element
|
1296
1465
|
, o = this.options
|
1297
1466
|
|
1298
|
-
content = $e.
|
1299
|
-
||
|
1467
|
+
content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
|
1468
|
+
|| $e.attr('data-content')
|
1300
1469
|
|
1301
1470
|
return content
|
1302
1471
|
}
|
@@ -1318,6 +1487,8 @@
|
|
1318
1487
|
/* POPOVER PLUGIN DEFINITION
|
1319
1488
|
* ======================= */
|
1320
1489
|
|
1490
|
+
var old = $.fn.popover
|
1491
|
+
|
1321
1492
|
$.fn.popover = function (option) {
|
1322
1493
|
return this.each(function () {
|
1323
1494
|
var $this = $(this)
|
@@ -1334,11 +1505,21 @@
|
|
1334
1505
|
placement: 'right'
|
1335
1506
|
, trigger: 'click'
|
1336
1507
|
, content: ''
|
1337
|
-
, template: '<div class="popover"><div class="arrow"></div><
|
1508
|
+
, template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
|
1338
1509
|
})
|
1339
1510
|
|
1340
|
-
|
1341
|
-
|
1511
|
+
|
1512
|
+
/* POPOVER NO CONFLICT
|
1513
|
+
* =================== */
|
1514
|
+
|
1515
|
+
$.fn.popover.noConflict = function () {
|
1516
|
+
$.fn.popover = old
|
1517
|
+
return this
|
1518
|
+
}
|
1519
|
+
|
1520
|
+
}(window.jQuery);
|
1521
|
+
/* =============================================================
|
1522
|
+
* bootstrap-scrollspy.js v2.3.1
|
1342
1523
|
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
|
1343
1524
|
* =============================================================
|
1344
1525
|
* Copyright 2012 Twitter, Inc.
|
@@ -1398,7 +1579,7 @@
|
|
1398
1579
|
, $href = /^#\w/.test(href) && $(href)
|
1399
1580
|
return ( $href
|
1400
1581
|
&& $href.length
|
1401
|
-
&& [[ $href.position().top, href ]] ) || null
|
1582
|
+
&& [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
|
1402
1583
|
})
|
1403
1584
|
.sort(function (a, b) { return a[0] - b[0] })
|
1404
1585
|
.each(function () {
|
@@ -1460,6 +1641,8 @@
|
|
1460
1641
|
/* SCROLLSPY PLUGIN DEFINITION
|
1461
1642
|
* =========================== */
|
1462
1643
|
|
1644
|
+
var old = $.fn.scrollspy
|
1645
|
+
|
1463
1646
|
$.fn.scrollspy = function (option) {
|
1464
1647
|
return this.each(function () {
|
1465
1648
|
var $this = $(this)
|
@@ -1477,6 +1660,15 @@
|
|
1477
1660
|
}
|
1478
1661
|
|
1479
1662
|
|
1663
|
+
/* SCROLLSPY NO CONFLICT
|
1664
|
+
* ===================== */
|
1665
|
+
|
1666
|
+
$.fn.scrollspy.noConflict = function () {
|
1667
|
+
$.fn.scrollspy = old
|
1668
|
+
return this
|
1669
|
+
}
|
1670
|
+
|
1671
|
+
|
1480
1672
|
/* SCROLLSPY DATA-API
|
1481
1673
|
* ================== */
|
1482
1674
|
|
@@ -1488,7 +1680,7 @@
|
|
1488
1680
|
})
|
1489
1681
|
|
1490
1682
|
}(window.jQuery);/* ========================================================
|
1491
|
-
* bootstrap-tab.js v2.
|
1683
|
+
* bootstrap-tab.js v2.3.1
|
1492
1684
|
* http://twitter.github.com/bootstrap/javascript.html#tabs
|
1493
1685
|
* ========================================================
|
1494
1686
|
* Copyright 2012 Twitter, Inc.
|
@@ -1538,7 +1730,7 @@
|
|
1538
1730
|
|
1539
1731
|
if ( $this.parent('li').hasClass('active') ) return
|
1540
1732
|
|
1541
|
-
previous = $ul.find('.active a')
|
1733
|
+
previous = $ul.find('.active:last a')[0]
|
1542
1734
|
|
1543
1735
|
e = $.Event('show', {
|
1544
1736
|
relatedTarget: previous
|
@@ -1599,6 +1791,8 @@
|
|
1599
1791
|
/* TAB PLUGIN DEFINITION
|
1600
1792
|
* ===================== */
|
1601
1793
|
|
1794
|
+
var old = $.fn.tab
|
1795
|
+
|
1602
1796
|
$.fn.tab = function ( option ) {
|
1603
1797
|
return this.each(function () {
|
1604
1798
|
var $this = $(this)
|
@@ -1611,18 +1805,25 @@
|
|
1611
1805
|
$.fn.tab.Constructor = Tab
|
1612
1806
|
|
1613
1807
|
|
1808
|
+
/* TAB NO CONFLICT
|
1809
|
+
* =============== */
|
1810
|
+
|
1811
|
+
$.fn.tab.noConflict = function () {
|
1812
|
+
$.fn.tab = old
|
1813
|
+
return this
|
1814
|
+
}
|
1815
|
+
|
1816
|
+
|
1614
1817
|
/* TAB DATA-API
|
1615
1818
|
* ============ */
|
1616
1819
|
|
1617
|
-
$(function () {
|
1618
|
-
|
1619
|
-
|
1620
|
-
$(this).tab('show')
|
1621
|
-
})
|
1820
|
+
$(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
|
1821
|
+
e.preventDefault()
|
1822
|
+
$(this).tab('show')
|
1622
1823
|
})
|
1623
1824
|
|
1624
1825
|
}(window.jQuery);/* =============================================================
|
1625
|
-
* bootstrap-typeahead.js v2.
|
1826
|
+
* bootstrap-typeahead.js v2.3.1
|
1626
1827
|
* http://twitter.github.com/bootstrap/javascript.html#typeahead
|
1627
1828
|
* =============================================================
|
1628
1829
|
* Copyright 2012 Twitter, Inc.
|
@@ -1656,8 +1857,8 @@
|
|
1656
1857
|
this.sorter = this.options.sorter || this.sorter
|
1657
1858
|
this.highlighter = this.options.highlighter || this.highlighter
|
1658
1859
|
this.updater = this.options.updater || this.updater
|
1659
|
-
this.$menu = $(this.options.menu).appendTo('body')
|
1660
1860
|
this.source = this.options.source
|
1861
|
+
this.$menu = $(this.options.menu)
|
1661
1862
|
this.shown = false
|
1662
1863
|
this.listen()
|
1663
1864
|
}
|
@@ -1679,16 +1880,18 @@
|
|
1679
1880
|
}
|
1680
1881
|
|
1681
1882
|
, show: function () {
|
1682
|
-
var pos = $.extend({}, this.$element.
|
1883
|
+
var pos = $.extend({}, this.$element.position(), {
|
1683
1884
|
height: this.$element[0].offsetHeight
|
1684
1885
|
})
|
1685
1886
|
|
1686
|
-
this.$menu
|
1687
|
-
|
1688
|
-
|
1689
|
-
|
1887
|
+
this.$menu
|
1888
|
+
.insertAfter(this.$element)
|
1889
|
+
.css({
|
1890
|
+
top: pos.top + pos.height
|
1891
|
+
, left: pos.left
|
1892
|
+
})
|
1893
|
+
.show()
|
1690
1894
|
|
1691
|
-
this.$menu.show()
|
1692
1895
|
this.shown = true
|
1693
1896
|
return this
|
1694
1897
|
}
|
@@ -1793,17 +1996,28 @@
|
|
1793
1996
|
|
1794
1997
|
, listen: function () {
|
1795
1998
|
this.$element
|
1999
|
+
.on('focus', $.proxy(this.focus, this))
|
1796
2000
|
.on('blur', $.proxy(this.blur, this))
|
1797
2001
|
.on('keypress', $.proxy(this.keypress, this))
|
1798
2002
|
.on('keyup', $.proxy(this.keyup, this))
|
1799
2003
|
|
1800
|
-
if (
|
2004
|
+
if (this.eventSupported('keydown')) {
|
1801
2005
|
this.$element.on('keydown', $.proxy(this.keydown, this))
|
1802
2006
|
}
|
1803
2007
|
|
1804
2008
|
this.$menu
|
1805
2009
|
.on('click', $.proxy(this.click, this))
|
1806
2010
|
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
2011
|
+
.on('mouseleave', 'li', $.proxy(this.mouseleave, this))
|
2012
|
+
}
|
2013
|
+
|
2014
|
+
, eventSupported: function(eventName) {
|
2015
|
+
var isSupported = eventName in this.$element
|
2016
|
+
if (!isSupported) {
|
2017
|
+
this.$element.setAttribute(eventName, 'return;')
|
2018
|
+
isSupported = typeof this.$element[eventName] === 'function'
|
2019
|
+
}
|
2020
|
+
return isSupported
|
1807
2021
|
}
|
1808
2022
|
|
1809
2023
|
, move: function (e) {
|
@@ -1831,7 +2045,7 @@
|
|
1831
2045
|
}
|
1832
2046
|
|
1833
2047
|
, keydown: function (e) {
|
1834
|
-
this.suppressKeyPressRepeat =
|
2048
|
+
this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
|
1835
2049
|
this.move(e)
|
1836
2050
|
}
|
1837
2051
|
|
@@ -1844,6 +2058,9 @@
|
|
1844
2058
|
switch(e.keyCode) {
|
1845
2059
|
case 40: // down arrow
|
1846
2060
|
case 38: // up arrow
|
2061
|
+
case 16: // shift
|
2062
|
+
case 17: // ctrl
|
2063
|
+
case 18: // alt
|
1847
2064
|
break
|
1848
2065
|
|
1849
2066
|
case 9: // tab
|
@@ -1865,28 +2082,41 @@
|
|
1865
2082
|
e.preventDefault()
|
1866
2083
|
}
|
1867
2084
|
|
2085
|
+
, focus: function (e) {
|
2086
|
+
this.focused = true
|
2087
|
+
}
|
2088
|
+
|
1868
2089
|
, blur: function (e) {
|
1869
|
-
|
1870
|
-
|
2090
|
+
this.focused = false
|
2091
|
+
if (!this.mousedover && this.shown) this.hide()
|
1871
2092
|
}
|
1872
2093
|
|
1873
2094
|
, click: function (e) {
|
1874
2095
|
e.stopPropagation()
|
1875
2096
|
e.preventDefault()
|
1876
2097
|
this.select()
|
2098
|
+
this.$element.focus()
|
1877
2099
|
}
|
1878
2100
|
|
1879
2101
|
, mouseenter: function (e) {
|
2102
|
+
this.mousedover = true
|
1880
2103
|
this.$menu.find('.active').removeClass('active')
|
1881
2104
|
$(e.currentTarget).addClass('active')
|
1882
2105
|
}
|
1883
2106
|
|
2107
|
+
, mouseleave: function (e) {
|
2108
|
+
this.mousedover = false
|
2109
|
+
if (!this.focused && this.shown) this.hide()
|
2110
|
+
}
|
2111
|
+
|
1884
2112
|
}
|
1885
2113
|
|
1886
2114
|
|
1887
2115
|
/* TYPEAHEAD PLUGIN DEFINITION
|
1888
2116
|
* =========================== */
|
1889
2117
|
|
2118
|
+
var old = $.fn.typeahead
|
2119
|
+
|
1890
2120
|
$.fn.typeahead = function (option) {
|
1891
2121
|
return this.each(function () {
|
1892
2122
|
var $this = $(this)
|
@@ -1908,21 +2138,27 @@
|
|
1908
2138
|
$.fn.typeahead.Constructor = Typeahead
|
1909
2139
|
|
1910
2140
|
|
1911
|
-
/*
|
2141
|
+
/* TYPEAHEAD NO CONFLICT
|
2142
|
+
* =================== */
|
2143
|
+
|
2144
|
+
$.fn.typeahead.noConflict = function () {
|
2145
|
+
$.fn.typeahead = old
|
2146
|
+
return this
|
2147
|
+
}
|
2148
|
+
|
2149
|
+
|
2150
|
+
/* TYPEAHEAD DATA-API
|
1912
2151
|
* ================== */
|
1913
2152
|
|
1914
|
-
$(function () {
|
1915
|
-
$
|
1916
|
-
|
1917
|
-
|
1918
|
-
e.preventDefault()
|
1919
|
-
$this.typeahead($this.data())
|
1920
|
-
})
|
2153
|
+
$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
|
2154
|
+
var $this = $(this)
|
2155
|
+
if ($this.data('typeahead')) return
|
2156
|
+
$this.typeahead($this.data())
|
1921
2157
|
})
|
1922
2158
|
|
1923
2159
|
}(window.jQuery);
|
1924
2160
|
/* ==========================================================
|
1925
|
-
* bootstrap-affix.js v2.
|
2161
|
+
* bootstrap-affix.js v2.3.1
|
1926
2162
|
* http://twitter.github.com/bootstrap/javascript.html#affix
|
1927
2163
|
* ==========================================================
|
1928
2164
|
* Copyright 2012 Twitter, Inc.
|
@@ -1951,7 +2187,9 @@
|
|
1951
2187
|
|
1952
2188
|
var Affix = function (element, options) {
|
1953
2189
|
this.options = $.extend({}, $.fn.affix.defaults, options)
|
1954
|
-
this.$window = $(window)
|
2190
|
+
this.$window = $(window)
|
2191
|
+
.on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
|
2192
|
+
.on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
|
1955
2193
|
this.$element = $(element)
|
1956
2194
|
this.checkPosition()
|
1957
2195
|
}
|
@@ -1989,6 +2227,8 @@
|
|
1989
2227
|
/* AFFIX PLUGIN DEFINITION
|
1990
2228
|
* ======================= */
|
1991
2229
|
|
2230
|
+
var old = $.fn.affix
|
2231
|
+
|
1992
2232
|
$.fn.affix = function (option) {
|
1993
2233
|
return this.each(function () {
|
1994
2234
|
var $this = $(this)
|
@@ -2006,6 +2246,15 @@
|
|
2006
2246
|
}
|
2007
2247
|
|
2008
2248
|
|
2249
|
+
/* AFFIX NO CONFLICT
|
2250
|
+
* ================= */
|
2251
|
+
|
2252
|
+
$.fn.affix.noConflict = function () {
|
2253
|
+
$.fn.affix = old
|
2254
|
+
return this
|
2255
|
+
}
|
2256
|
+
|
2257
|
+
|
2009
2258
|
/* AFFIX DATA-API
|
2010
2259
|
* ============== */
|
2011
2260
|
|