mirror of https://github.com/Kozea/pygal.git
Python to generate nice looking SVG graph
http://pygal.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.1 KiB
104 lines
3.1 KiB
/* ========================================================== |
|
* bootstrap-affix.js v2.1.1 |
|
* http://twitter.github.com/bootstrap/javascript.html#affix |
|
* ========================================================== |
|
* Copyright 2012 Twitter, Inc. |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
* ========================================================== */ |
|
|
|
|
|
!function ($) { |
|
|
|
"use strict"; // jshint ;_; |
|
|
|
|
|
/* AFFIX CLASS DEFINITION |
|
* ====================== */ |
|
|
|
var Affix = function (element, options) { |
|
this.options = $.extend({}, $.fn.affix.defaults, options) |
|
this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) |
|
this.$element = $(element) |
|
this.checkPosition() |
|
} |
|
|
|
Affix.prototype.checkPosition = function () { |
|
if (!this.$element.is(':visible')) return |
|
|
|
var scrollHeight = $(document).height() |
|
, scrollTop = this.$window.scrollTop() |
|
, position = this.$element.offset() |
|
, offset = this.options.offset |
|
, offsetBottom = offset.bottom |
|
, offsetTop = offset.top |
|
, reset = 'affix affix-top affix-bottom' |
|
, affix |
|
|
|
if (typeof offset != 'object') offsetBottom = offsetTop = offset |
|
if (typeof offsetTop == 'function') offsetTop = offset.top() |
|
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() |
|
|
|
affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? |
|
false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? |
|
'bottom' : offsetTop != null && scrollTop <= offsetTop ? |
|
'top' : false |
|
|
|
if (this.affixed === affix) return |
|
|
|
this.affixed = affix |
|
this.unpin = affix == 'bottom' ? position.top - scrollTop : null |
|
|
|
this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) |
|
} |
|
|
|
|
|
/* AFFIX PLUGIN DEFINITION |
|
* ======================= */ |
|
|
|
$.fn.affix = function (option) { |
|
return this.each(function () { |
|
var $this = $(this) |
|
, data = $this.data('affix') |
|
, options = typeof option == 'object' && option |
|
if (!data) $this.data('affix', (data = new Affix(this, options))) |
|
if (typeof option == 'string') data[option]() |
|
}) |
|
} |
|
|
|
$.fn.affix.Constructor = Affix |
|
|
|
$.fn.affix.defaults = { |
|
offset: 0 |
|
} |
|
|
|
|
|
/* AFFIX DATA-API |
|
* ============== */ |
|
|
|
$(window).on('load', function () { |
|
$('[data-spy="affix"]').each(function () { |
|
var $spy = $(this) |
|
, data = $spy.data() |
|
|
|
data.offset = data.offset || {} |
|
|
|
data.offsetBottom && (data.offset.bottom = data.offsetBottom) |
|
data.offsetTop && (data.offset.top = data.offsetTop) |
|
|
|
$spy.affix(data) |
|
}) |
|
}) |
|
|
|
|
|
}(window.jQuery); |