| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- if (typeof Object.create !== "function") {
- Object.create = function (e) {
- function t() {}
- t.prototype = e;
- return new t
- }
- }
- (function (e, t, n, r) {
- var i = {
- init : function (t, n) {
- var r = this;
- r.elem = n;
- r.$elem = e(n);
- r.newsTagName = r.$elem.find(":first-child").prop("tagName");
- r.newsClassName = r.$elem.find(":first-child").attr("class");
- r.timer = null;
- r.resizeTimer = null;
- r.animationStarted = false;
- r.isHovered = false;
- if (typeof t === "string") {
- if (console) {
- console.error("String property override is not supported")
- }
- throw "String property override is not supported"
- } else {
- r.options = e.extend({}, e.fn.bootstrapNews.options, t);
- r.prepareLayout();
- if (r.options.autoplay) {
- r.animate()
- }
- if (r.options.navigation) {
- r.buildNavigation()
- }
- if (typeof r.options.onToDo === "function") {
- r.options.onToDo.apply(r, arguments)
- }
- }
- },
- prepareLayout : function () {
- var n = this;
- e(n.elem).find("." + n.newsClassName).on("mouseenter", function () {
- n.onReset(true)
- });
- e(n.elem).find("." + n.newsClassName).on("mouseout", function () {
- n.onReset(false)
- });
- e.map(n.$elem.find(n.newsTagName), function (t, r) {
- if (r > n.options.newsPerPage - 1) {
- e(t).hide()
- } else {
- e(t).show()
- }
- });
- if (n.$elem.find(n.newsTagName).length < n.options.newsPerPage) {
- n.options.newsPerPage = n.$elem.find(n.newsTagName).length
- }
- var r = 0;
- e.map(n.$elem.find(n.newsTagName), function (t, i) {
- if (i < n.options.newsPerPage) {
- r = parseInt(r) + parseInt(e(t).outerHeight()) + 0
- }
- });
- e(n.elem).css({
- "overflow-y" : "hidden",
- height : r
- });
- e(t).resize(function () {
- if (n.resizeTimer !== null) {
- clearTimeout(n.resizeTimer)
- }
- n.resizeTimer = setTimeout(function () {
- n.prepareLayout()
- }, 200)
- })
- },
- findPanelObject : function () {
- var e = this.$elem;
- while (e.parent() !== r) {
- e = e.parent();
- if (e.parent().hasClass("panel")) {
- return e.parent()
- }
- }
- return r
- },
- buildNavigation : function () {
- var t = this.findPanelObject();
- if (t) {
- var n = '<ul class="pagination pull-right" style="margin: 0px;">' + '<li><a href="#" class="prev"><span class="glyphicon glyphicon-chevron-down"></span></a></li>' + '<li><a href="#" class="next"><span class="glyphicon glyphicon-chevron-up"></span></a></li>' + '</ul><div class="clearfix"></div>';
- var r = e(t).find(".panel-footer")[0];
- if (r) {
- e(r).append(n)
- } else {
- e(t).append('<div class="panel-footer">' + n + "</div>")
- }
- var i = this;
- e(t).find(".prev").on("click", function (e) {
- e.preventDefault();
- i.onPrev()
- });
- e(t).find(".next").on("click", function (e) {
- e.preventDefault();
- i.onNext()
- })
- }
- },
- onStop : function () {},
- onPause : function () {
- var e = this;
- e.isHovered = true;
- if (this.options.autoplay && e.timer) {
- clearTimeout(e.timer)
- }
- },
- onReset : function (e) {
- var t = this;
- if (t.timer) {
- clearTimeout(t.timer)
- }
- if (t.options.autoplay) {
- t.isHovered = e;
- t.animate()
- }
- },
- animate : function () {
- var e = this;
- e.timer = setTimeout(function () {
- if (!e.options.pauseOnHover) {
- e.isHovered = false
- }
- if (!e.isHovered) {
- if (e.options.direction === "up") {
- e.onNext()
- } else {
- e.onPrev()
- }
- }
- }, e.options.newsTickerInterval)
- },
- onPrev : function () {
- var t = this;
- if (t.animationStarted) {
- return false
- }
- t.animationStarted = true;
- var n = "<" + t.newsTagName + ' style="display:none;" class="' + t.newsClassName + '">' + e(t.$elem).find(t.newsTagName).last().html() + "</" + t.newsTagName + ">";
- e(t.$elem).prepend(n);
- e(t.$elem).find(t.newsTagName).first().slideDown(t.options.animationSpeed, function () {
- e(t.$elem).find(t.newsTagName).last().remove()
- });
- e(t.$elem).find(t.newsTagName + ":nth-child(" + parseInt(t.options.newsPerPage + 1) + ")").slideUp(t.options.animationSpeed, function () {
- t.animationStarted = false;
- t.onReset(t.isHovered)
- });
- e(t.elem).find("." + t.newsClassName).on("mouseenter", function () {
- t.onReset(true)
- });
- e(t.elem).find("." + t.newsClassName).on("mouseout", function () {
- t.onReset(false)
- })
- },
- onNext : function () {
- var t = this;
- if (t.animationStarted) {
- return false
- }
- t.animationStarted = true;
- var n = "<" + t.newsTagName + ' style="display:none;" class=' + t.newsClassName + ">" + e(t.$elem).find(t.newsTagName).first().html() + "</" + t.newsTagName + ">";
- e(t.$elem).append(n);
- e(t.$elem).find(t.newsTagName).first().slideUp(t.options.animationSpeed, function () {
- e(this).remove()
- });
- e(t.$elem).find(t.newsTagName + ":nth-child(" + parseInt(t.options.newsPerPage + 1) + ")").slideDown(t.options.animationSpeed, function () {
- t.animationStarted = false;
- t.onReset(t.isHovered)
- });
- e(t.elem).find("." + t.newsClassName).on("mouseenter", function () {
- t.onReset(true)
- });
- e(t.elem).find("." + t.newsClassName).on("mouseout", function () {
- t.onReset(false)
- })
- }
- };
- e.fn.bootstrapNews = function (e) {
- return this.each(function () {
- var t = Object.create(i);
- t.init(e, this)
- })
- };
- e.fn.bootstrapNews.options = {
- newsPerPage : 4,
- navigation : false,
- autoplay : true,
- direction : "up",
- animationSpeed : "normal",
- newsTickerInterval : 4e3,
- pauseOnHover : true,
- onStop : null,
- onPause : null,
- onReset : null,
- onPrev : null,
- onNext : null,
- onToDo : null
- }
- })(jQuery, window, document)
|