2706 lines
1.1 MiB
HTML
2706 lines
1.1 MiB
HTML
|
<!DOCTYPE html>
|
||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
|
<head>
|
||
|
|
||
|
<meta charset="utf-8">
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
<meta name="generator" content="pandoc" />
|
||
|
|
||
|
|
||
|
|
||
|
<title>Zbiory danych</title>
|
||
|
|
||
|
<meta property="og:title" content="Zbiory danych" />
|
||
|
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||
|
|
||
|
<link href="data:image/x-icon;" rel="icon" type="image/x-icon">
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
window.FlexDashboardComponents = [];
|
||
|
</script>
|
||
|
|
||
|
<script>/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
|
||
|
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each(
|
||
|
|
||
|
return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</tex
|
||
|
return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h
|
||
|
</script>
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
<style type="text/css">@font-face {
|
||
|
font-family: 'Source Sans Pro';
|
||
|
font-style: normal;
|
||
|
font-weight: 300;
|
||
|
src: url(data:application/x-font-truetype;base64,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
|
||
|
}
|
||
|
@font-face {
|
||
|
font-family: 'Source Sans Pro';
|
||
|
font-style: normal;
|
||
|
font-weight: 400;
|
||
|
src: url(data:application/x-font-truetype;base64,AAEAAAARAQAABAAQR0RFRgNEA3IAAG5oAAAAQEdQT1PUveN5AABuqAAAGXBHU1VC8WfWVwAAiBgAAADgT1MvMlq0lFsAAGUsAAAAYGNtYXDzMPm1AABljAAAAeZjdnQgDZkA+gAAaTQAAAAoZnBnbQZZnDcAAGd0AAABc2dhc3D//wADAABuYAAAAAhnbHlmIymUiAAAARwAAF3saGVhZP4Us+IAAGEMAAAANmhoZWEHowOhAABlCAAAACRobXR4pqgmOgAAYUQAAAPEbG9jYTiIUNQAAF8oAAAB5G1heHADCwJAAABfCAAAACBuYW1lIro8MAAAaVwAAAHGcG9zdGxQSG8AAGskAAADOXByZXCWBPrrAABo6AAAAEsABQBZAAACNQKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETJxEhEQcTLwEjDwETPwEjHwFZAdz+JMB/AVh+Ukk0BDZKhDFC60IyApT9bAFU6P4yAc7o/uaEZ2eEAUled3deAAAAAAIAAwAAAh0CkAAJABEAVAC4AABFWLgADi8buQAOABA+WbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAUADAAOERI5ugALAAwADhESObgACy+5AAkAAfQwMQEnLgEnIw4BDwEXIwcjEzMTIwFxHxIgEAQPIBIf2u8/Vd5e3lkBC2Q3bTk5bTdkQ8gCkP1wAAAAAAMAWgAAAiQCkAATABwAJQBbALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABMvG7kAEwAEPlm6ACMAAAATERI5uAAjL7oACgAjABQREjm4AAAQuQAbAAH0uAAjELkAHAAB9LgAExC5ACUAAfQwMRMzMh4CFRQGBxUeARUUDgIrARMyNjU0JisBFRMyNjU0JisBFVrDMlM7ITg6SFAkQlw30bRVSU1NZXJVXlxXcgKQEiY9KzFPDwQLTkQwSDAYAXg6NzYv1v7KP0M9OfgAAAEANP/0AhsCnAAhADkAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAHS8buQAdAAQ+WbgABRC5AAwAAfS4AB0QuQAWAAH0MDETND4CMzIWFwcuASMiDgIVFB4CMzI2NxcOASMiLgI0LE5rPzxaHS8aPyovTDYeHTRLLzBHIC8nYj8+aU0rAUhPflgvMSA1HCElRWI9PmNGJiYjMy0yLld/AAACAFoAAAI0ApAACgATADUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACi8buQAKAAQ+WbkACwAB9LgAABC5ABEAAfQwMRMzMhYVFA4CKwE3MjY1NCYrARFapJieKE5ySqiec3Nzc0sCkKidTntVLUSKfX2E/fgAAAABAFoAAAHeApAACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy+5AAUAAfS4AAsQuQAIAAH0MDETIRUhFTMVIxUhFSFaAXr+2fn5ATH+fAKQRs5H7kcAAAAAAQBaAAAB1AKQAAkAQwC4AABFWLgAAC8buQAAABA+WbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhFTMVIxEjWgF6/tn6+lMCkEbeRv7aAAAAAQA0//QCJgKcACUATQC4AABFWLgABS8buQAFABA+WbgAAEVYuAAhLxu5ACEABD5ZuAAFELkADAAB9LgAIRC5ABYAAfS6AB0ABQAhERI5uAAdL7kAGwAB9DAxEzQ+AjMyFhcHLgEjIg4CFRQeAjMyNjc1IzUzEQ4BIyIuAjQtUW5CRFsdLxlBMjJQOB8dN1E1Iz8Ui9cgaUJBbE4sAUhPflgvMx41GiMlRWI9PmNGJhUSq0X+7CErLld/AAABAFoAAAIyApAACwBJALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm6AAkAAAALERI5uAAJL7kAAwAB9LgAABC4AATQuAALELgAB9AwMRMzESERMxEjESERI1pTATFUVP7PUwKQ/u0BE/1wATX+ywABAFoAAACtApAAAwAlALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAMvG7kAAwAEPlkwMRMzESNaU1MCkP1wAAAAAQAf//QBiQKQABAAKwC4AABFWLgABy8buQAHABA+WbgAAEVYuAAOLxu5AA4ABD5ZuQADAAH0MDE3HgEzMjY1ETMRFA4CIyInWxY4IzU0VBUrRTB7OocnI0FLAcf+MSpLOCBpAAEAWgAAAj8CkAAMAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABC8buQAEABA+WbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAQACBESOTAxEzMRMwEzBxMjAwcVI1pTAwERXs3tXcRxUwKQ/rcBSfr+agFVhdAAAAEAWgAAAcwCkAAFACsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABS8buQAFAAQ+WbkAAgAB9DAxEzMRIRUhWlMBH/6OApD9t0cAAAABAFoAAAJ9ApAAGQBvALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAYvG7kABgAQPlm4AABFWLgAGS8buQAZAAQ+WbgAAEVYuAAJLxu5AAkABD5ZugADAAYACRESOboADgAGAAkREjm6ABEAGQAGERI5ugAUAAAAGRESOTAxEzMTFzM3EzMRIxE0NjcjBwMjAycjHgEVESNaYn8wBC5+Yk8HBAQ1fi9/NAQDCE0CkP6ghoYBYP1wAWksaiyS/qkBV5Isaiz+lwAAAAEAWgAAAi0CkAATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA+WbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzMuATURMxEjAycjHgEVESNaVu1HBAMHT1buRwQEB08CkP5kiDJrNAFT/XABnYcyZzT+qQACADT/9AJlApwAEwAnADUAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ+WbkAFAAB9LgAChC5AB4AAfQwMQUiLgI1ND4CMzIeAhUUDgInMj4CNTQuAiMiDgIVFB4CAUw+Z0opKUpnPj5nSykpS2c+LEczHBwzRywsRzMcHDNHDDBZf09PfVcuL1d9Tk9/WTBJJkdjPj1iRCUlRGI9PmNHJgACAFoAAAIVApAADgAXAEMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOAAQ+WboADAAAAA4REjm4AAwvuQAPAAH0uAAAELkAFgAB9DAxEzMyHgIVFA4CKwERIxMyNjU0JisBEVrJNlo/IyNAWTZ2U79WU1RVbAKQFC1KNjRMMhn+/AFIQUZHN/77AAACADT/XAJzApwAEwA0AEsAuAAARVi4ACQvG7kAJAAQPlm4AABFWLgAGi8buQAaAAQ+WbsAMQABABcABCu4ABoQuQAFAAH0uAAkELkADwAB9LgAGhC4AC7QMDETFB4CMzI+AjU0LgIjIg4CAQ4BIyImJy4DNTQ+AjMyHgIVFA4CBx4BMzI2N4ocM0csLEczHBwzRywsRzMcAekPMh1beh02WD8iKUpnPj5nSykhPVY0F1Q2FiEOAUs/ZUgmJkhlPz1iRCUlRGL94wUKV0QHNlh3SE99Vy4vV31OR3VXNwksKgYEAAACAFoAAAIgApAACAAYAFQAuAAARVi4AA4vG7kADgAQPlm4AABFWLgADC8buQAMAAQ+WbgAAEVYuAAJLxu5AAkABD5ZuwABAAEACgAEK7gADhC5AAgAAfS6AB
|
||
|
}
|
||
|
@font-face {
|
||
|
font-family: 'Source Sans Pro';
|
||
|
font-style: normal;
|
||
|
font-weight: 700;
|
||
|
src: url(data:application/x-font-truetype;base64,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
|
||
|
}
|
||
|
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url(data:application/vnd.ms-fontobject;base64,n04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ/LAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM/SEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ+pexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h/v4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs+LWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy+pRYVKGVS/1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr/Cm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB+lSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX+VSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G+KspT/FupEGGa
|
||
|
</style>
|
||
|
<script>/*!
|
||
|
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
||
|
* Copyright 2011-2015 Twitter, Inc.
|
||
|
* Licensed under the MIT license
|
||
|
*/
|
||
|
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==type
|
||
|
d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affi
|
||
|
<script>/**
|
||
|
* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||
|
*/
|
||
|
// Only run this code in IE 8
|
||
|
if (!!window.navigator.userAgent.match("MSIE 8")) {
|
||
|
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document);
|
||
|
};
|
||
|
</script>
|
||
|
<script>/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
|
||
|
* Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
|
||
|
* */
|
||
|
|
||
|
// Only run this code in IE 8
|
||
|
if (!!window.navigator.userAgent.match("MSIE 8")) {
|
||
|
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmVal
|
||
|
};
|
||
|
</script>
|
||
|
<script>!function(a,b){"use strict";function c(c,g){var h=this;h.$el=a(c),h.el=c,h.id=e++,h.$el.bind("destroyed",a.proxy(h.teardown,h)),h.$clonedHeader=null,h.$originalHeader=null,h.cachedHeaderHeight=null,h.isSticky=!1,h.hasBeenSticky=!1,h.leftOffset=null,h.topOffset=null,h.init=function(){h.setOptions(g),h.$el.each(function(){var b=a(this);b.css("padding",0),h.$originalHeader=a("thead:first",this),h.$clonedHeader=h.$originalHeader.clone(),b.trigger("clonedHeader."+d,[h.$clonedHeader]),h.$clonedHeader.addClass("tableFloatingHeader"),h.$clonedHeader.css({display:"none",opacity:0}),h.$originalHeader.addClass("tableFloatingHeaderOriginal"),h.$originalHeader.after(h.$clonedHeader),h.$printStyle=a('<style type="text/css" media="print">.tableFloatingHeader{display:none !important;}.tableFloatingHeaderOriginal{position:static !important;}</style>'),h.$head.append(h.$printStyle)}),h.updateWidth(),h.toggleHeaders(),h.bind()},h.destroy=function(){h.$el.unbind("destroyed",h.teardown),h.teardown()},h.teardown=function(){h.isSticky&&h.$originalHeader.css("position","static"),a.removeData(h.el,"plugin_"+d),h.unbind(),h.$clonedHeader.remove(),h.$originalHeader.removeClass("tableFloatingHeaderOriginal"),h.$originalHeader.css("visibility","visible"),h.$printStyle.remove(),h.el=null,h.$el=null},h.bind=function(){h.$scrollableArea.on("scroll."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.on("scroll."+d+h.id,h.setPositionValues),h.$window.on("resize."+d+h.id,h.toggleHeaders)),h.$scrollableArea.on("resize."+d,h.toggleHeaders),h.$scrollableArea.on("resize."+d,h.updateWidth)},h.unbind=function(){h.$scrollableArea.off("."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.off("."+d+h.id,h.setPositionValues),h.$window.off("."+d+h.id,h.toggleHeaders)),h.$scrollableArea.off("."+d,h.updateWidth)},h.debounce=function(a,b){var c=null;return function(){var d=this,e=arguments;clearTimeout(c),c=setTimeout(function(){a.apply(d,e)},b)}},h.toggleHeaders=h.debounce(function(){h.$el&&h.$el.each(function(){var b,c=a(this),e=h.isWindowScrolling?isNaN(h.options.fixedOffset)?h.options.fixedOffset.outerHeight():h.options.fixedOffset:h.$scrollableArea.offset().top+(isNaN(h.options.fixedOffset)?0:h.options.fixedOffset),f=c.offset(),g=h.$scrollableArea.scrollTop()+e,i=h.$scrollableArea.scrollLeft(),j=h.options.cacheHeaderHeight?h.cachedHeaderHeight:h.$clonedHeader.height(),k=h.isWindowScrolling?g>f.top:e>f.top,l=(h.isWindowScrolling?g:0)<f.top+c.height()-j-(h.isWindowScrolling?0:e);k&&l?(b=f.left-i+h.options.leftOffset,h.$originalHeader.css({position:"fixed","margin-top":h.options.marginTop,left:b,"z-index":3}),h.leftOffset=b,h.topOffset=e,h.$clonedHeader.css("display",""),h.isSticky||(h.isSticky=!0,h.updateWidth(),c.trigger("enabledStickiness."+d)),h.setPositionValues()):h.isSticky&&(h.$originalHeader.css("position","static"),h.$clonedHeader.css("display","none"),h.isSticky=!1,h.resetWidth(a("td,th",h.$clonedHeader),a("td,th",h.$originalHeader)),c.trigger("disabledStickiness."+d))})},0),h.setPositionValues=h.debounce(function(){var a=h.$window.scrollTop(),b=h.$window.scrollLeft();!h.isSticky||0>a||a+h.$window.height()>h.$document.height()||0>b||b+h.$window.width()>h.$document.width()||h.$originalHeader.css({top:h.topOffset-(h.isWindowScrolling?0:a),left:h.leftOffset-(h.isWindowScrolling?0:b)})},0),h.updateWidth=h.debounce(function(){if(h.isSticky){h.$originalHeaderCells||(h.$originalHeaderCells=a("th,td",h.$originalHeader)),h.$clonedHeaderCells||(h.$clonedHeaderCells=a("th,td",h.$clonedHeader));var b=h.getWidth(h.$clonedHeaderCells);h.setWidth(b,h.$clonedHeaderCells,h.$originalHeaderCells),h.$originalHeader.css("width",h.$clonedHeader.width()),h.options.cacheHeaderHeight&&(h.cachedHeaderHeight=h.$clonedHeader.height())}},0),h.getWidth=function(c){var d=[];return c.each(function(c){var e,f=a(this);if("border-box"===f.css("box-sizing")){var g=f[0].getBoundingClientRect();e=g.width?g.width:g.right-g.left}else{var i=a("th",h.$originalHeader);if("collapse"===i.css("border-collapse"))if(b.getComputedStyle)e=parseFloat(b.getComputedStyle(this,null).width);else{var
|
||
|
<style type="text/css">
|
||
|
|
||
|
/*
|
||
|
Dashboard CSS from Keen IO Dashboards
|
||
|
(https://github.com/keen/dashboards)
|
||
|
*/
|
||
|
|
||
|
body {
|
||
|
background: #f2f2f2;
|
||
|
padding: 60px 0 0 8px; /* padding-top overridden by theme */
|
||
|
}
|
||
|
|
||
|
body hr {
|
||
|
border-color: #d7d7d7;
|
||
|
margin: 10px 0;
|
||
|
}
|
||
|
|
||
|
.navbar-inverse .navbar-nav > li > a,
|
||
|
.navbar .navbar-brand {
|
||
|
text-decoration: none;
|
||
|
}
|
||
|
|
||
|
.navbar-logo {
|
||
|
margin-top: 1px;
|
||
|
}
|
||
|
|
||
|
.navbar-logo img {
|
||
|
margin-right: 12px;
|
||
|
}
|
||
|
|
||
|
.navbar-author {
|
||
|
margin-left: 10px;
|
||
|
font-size: 15px;
|
||
|
}
|
||
|
|
||
|
.navbar .dropdown-menu .fa {
|
||
|
min-width: 20px;
|
||
|
}
|
||
|
|
||
|
.navbar .dropdown-menu {
|
||
|
min-width: 150px;
|
||
|
max-height: 500px;
|
||
|
overflow: auto;
|
||
|
}
|
||
|
|
||
|
.chart-wrapper,
|
||
|
.nav-tabs-custom,
|
||
|
.sbframe-commentary
|
||
|
{
|
||
|
background: #fff;
|
||
|
border: 1px solid #e2e2e2;
|
||
|
border-radius: 3px;
|
||
|
margin-bottom: 8px;
|
||
|
margin-right: 8px;
|
||
|
}
|
||
|
|
||
|
.chart-title {
|
||
|
border-bottom: 1px solid #d7d7d7;
|
||
|
color: #666;
|
||
|
font-size: 14px;
|
||
|
font-weight: 300;
|
||
|
padding: 7px 10px 4px;
|
||
|
}
|
||
|
|
||
|
.chart-wrapper .chart-title:empty {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.chart-wrapper .chart-stage {
|
||
|
overflow: hidden;
|
||
|
padding: 5px 10px;
|
||
|
position: relative;
|
||
|
}
|
||
|
|
||
|
.chart-wrapper .chart-notes {
|
||
|
background: #fbfbfb;
|
||
|
border-top: 1px solid #e2e2e2;
|
||
|
color: #808080;
|
||
|
font-size: 12px;
|
||
|
padding: 8px 10px 5px;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
CSS for handling flexbox layout
|
||
|
*/
|
||
|
|
||
|
#dashboard-container {
|
||
|
visibility: hidden;
|
||
|
}
|
||
|
|
||
|
.tab-content>.dashboard-page-wrapper.active {
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
}
|
||
|
|
||
|
.dashboard-page-wrapper {
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
-webkit-box-orient: vertical;
|
||
|
-webkit-box-direction: normal;
|
||
|
-webkit-flex-direction: column;
|
||
|
-ms-flex-direction: column;
|
||
|
flex-direction: column;
|
||
|
}
|
||
|
|
||
|
.dashboard-row-orientation {
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
-webkit-box-orient: vertical;
|
||
|
-webkit-box-direction: normal;
|
||
|
-webkit-flex-direction: column;
|
||
|
-ms-flex-direction: column;
|
||
|
flex-direction: column;
|
||
|
}
|
||
|
|
||
|
.dashboard-row {
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
-webkit-box-orient: horizontal;
|
||
|
-webkit-box-direction: normal;
|
||
|
-webkit-flex-direction: row;
|
||
|
-ms-flex-direction: row;
|
||
|
flex-direction: row;
|
||
|
}
|
||
|
|
||
|
.dashboard-row-flex {
|
||
|
-webkit-box-flex: 1;
|
||
|
-webkit-flex: 1;
|
||
|
-ms-flex: 1;
|
||
|
flex: 1;
|
||
|
}
|
||
|
|
||
|
.dashboard-column-orientation {
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
-webkit-box-orient: horizontal;
|
||
|
-webkit-box-direction: normal;
|
||
|
-webkit-flex-direction: row;
|
||
|
-ms-flex-direction: row;
|
||
|
flex-direction: row;
|
||
|
}
|
||
|
|
||
|
.dashboard-column {
|
||
|
-webkit-box-flex: 1;
|
||
|
-webkit-flex: 1;
|
||
|
-ms-flex: 1;
|
||
|
flex: 1;
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
-webkit-box-orient: vertical;
|
||
|
-webkit-box-direction: normal;
|
||
|
-webkit-flex-direction: column;
|
||
|
-ms-flex-direction: column;
|
||
|
flex-direction: column;
|
||
|
}
|
||
|
|
||
|
.chart-wrapper-flex {
|
||
|
-webkit-box-flex: 1;
|
||
|
-webkit-flex: 1;
|
||
|
-ms-flex: 1;
|
||
|
flex: 1;
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
-webkit-box-orient: vertical;
|
||
|
-webkit-box-direction: normal;
|
||
|
-webkit-flex-direction: column;
|
||
|
-ms-flex-direction: column;
|
||
|
flex-direction: column;
|
||
|
}
|
||
|
|
||
|
.chart-stage-flex {
|
||
|
-webkit-box-flex: 1;
|
||
|
-webkit-flex: 1;
|
||
|
-ms-flex: 1;
|
||
|
flex: 1;
|
||
|
position: relative;
|
||
|
}
|
||
|
|
||
|
.chart-shim {
|
||
|
position: absolute;
|
||
|
left: 8px; top: 8px; right: 8px; bottom: 8px;
|
||
|
}
|
||
|
|
||
|
.no-padding .chart-shim {
|
||
|
left: 0; top: 0; right: 0; bottom: 0;
|
||
|
}
|
||
|
|
||
|
.flowing-content-shim {
|
||
|
overflow: auto;
|
||
|
left: 0; top: 0; right: 0; bottom: 0;
|
||
|
padding-left: 8px;
|
||
|
padding-right: 8px;
|
||
|
}
|
||
|
|
||
|
.flowing-content-container {
|
||
|
padding-top: 8px;
|
||
|
padding-bottom: 8px;
|
||
|
}
|
||
|
|
||
|
.chart-stage .table-bordered {
|
||
|
border: none;
|
||
|
}
|
||
|
|
||
|
.chart-stage .table-bordered > tbody > tr > th,
|
||
|
.chart-stage .table-bordered > tfoot > tr > th,
|
||
|
.chart-stage .table-bordered > tbody > tr > td,
|
||
|
.chart-stage .table-bordered > tfoot > tr > td {
|
||
|
border: none;
|
||
|
}
|
||
|
|
||
|
.chart-stage .table-bordered > tbody > tr > td {
|
||
|
border-top: 1px solid #dddddd;
|
||
|
}
|
||
|
|
||
|
.chart-stage .table-bordered > thead > tr > th {
|
||
|
border: none;
|
||
|
border-bottom: 2px solid #dddddd;
|
||
|
}
|
||
|
|
||
|
.bootstrap-table table>thead {
|
||
|
background-color: #fff;
|
||
|
}
|
||
|
|
||
|
.bootstrap-table table.data,
|
||
|
.bootstrap-table table.shiny-table {
|
||
|
width: inherit !important;
|
||
|
}
|
||
|
|
||
|
.bootstrap-table table.data>tbody>tr>th,
|
||
|
.bootstrap-table table.shiny-table>tbody>tr>th {
|
||
|
border-top: none;
|
||
|
border-bottom: 2px solid #dddddd;
|
||
|
padding: 5px;
|
||
|
}
|
||
|
|
||
|
.bootstrap-table .data td[align=right] {
|
||
|
font-family: inherit;
|
||
|
}
|
||
|
|
||
|
.chart-wrapper form {
|
||
|
padding-left: 5px;
|
||
|
padding-right: 5px;
|
||
|
}
|
||
|
|
||
|
.shiny-input-container label {
|
||
|
font-weight: normal;
|
||
|
}
|
||
|
|
||
|
.chart-stage .html-widget {
|
||
|
width: 100% !important;
|
||
|
height: 100% !important;
|
||
|
}
|
||
|
|
||
|
.chart-stage .html-widget-static-bound {
|
||
|
width: 100% !important;
|
||
|
height: 100% !important;
|
||
|
}
|
||
|
|
||
|
.chart-stage .shiny-bound-output {
|
||
|
width: 100% !important;
|
||
|
height: 100% !important;
|
||
|
}
|
||
|
|
||
|
/* Omit display of empty paragraphs */
|
||
|
|
||
|
.chart-shim>p:empty {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.chart-stage>p:empty {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
/* Omit display of special knitr options div*/
|
||
|
|
||
|
.chart-stage .knitr-options {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
/* Automatically resizing images */
|
||
|
|
||
|
.image-container {
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 0;
|
||
|
right: 0;
|
||
|
bottom: 0;
|
||
|
margin: 0;
|
||
|
}
|
||
|
|
||
|
.image-container img {
|
||
|
opacity: 0;
|
||
|
overflow: hidden;
|
||
|
}
|
||
|
|
||
|
/* Value box */
|
||
|
|
||
|
.value-box {
|
||
|
border-radius: 2px;
|
||
|
position: relative;
|
||
|
display: block;
|
||
|
margin-right: 8px;
|
||
|
margin-bottom: 8px;
|
||
|
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
||
|
}
|
||
|
|
||
|
.value-box > .inner {
|
||
|
padding: 10px;
|
||
|
padding-left: 20px;
|
||
|
padding-right: 20px;
|
||
|
}
|
||
|
|
||
|
.value-box .value {
|
||
|
font-size: 38px;
|
||
|
font-weight: bold;
|
||
|
margin: 0 0 3px 0;
|
||
|
white-space: nowrap;
|
||
|
padding: 0;
|
||
|
}
|
||
|
|
||
|
.value-box .caption {
|
||
|
font-size: 15px;
|
||
|
}
|
||
|
.value-box .caption > small {
|
||
|
display: block;
|
||
|
font-size: 13px;
|
||
|
margin-top: 5px;
|
||
|
}
|
||
|
|
||
|
.value-box .icon i {
|
||
|
position: absolute;
|
||
|
top: 15px;
|
||
|
right: 15px;
|
||
|
font-size: 80px;
|
||
|
color: rgba(0, 0, 0, 0.15);
|
||
|
}
|
||
|
|
||
|
.linked-value:hover {
|
||
|
cursor: pointer;
|
||
|
}
|
||
|
|
||
|
.value-box.linked-value:hover {
|
||
|
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
|
||
|
}
|
||
|
|
||
|
/* STORYBOARD */
|
||
|
|
||
|
.storyboard-nav button {
|
||
|
background: transparent;
|
||
|
border: 0;
|
||
|
opacity: .3;
|
||
|
outline: none;
|
||
|
padding: 0;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav button:hover,
|
||
|
.storyboard-nav button:hover {
|
||
|
opacity: .5;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav button:disabled,
|
||
|
.storyboard-nav button:disabled {
|
||
|
opacity: .1;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbnext,
|
||
|
.storyboard-nav .sbprev {
|
||
|
float: left;
|
||
|
width: 2%;
|
||
|
height: 120px;
|
||
|
font-size: 50px;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbprev {
|
||
|
text-align: left;
|
||
|
width: 2%;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbnext {
|
||
|
float: right;
|
||
|
text-align: right;
|
||
|
margin-right: 8px;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbframelist {
|
||
|
margin: 0 auto;
|
||
|
width: 94%;
|
||
|
height: 120px;
|
||
|
overflow: hidden;
|
||
|
text-shadow: none;
|
||
|
margin-bottom: 8px;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbframelist ul {
|
||
|
list-style: none;
|
||
|
margin: 0;
|
||
|
padding: 0;
|
||
|
height: 100%;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbframelist ul li {
|
||
|
float: left;
|
||
|
width: 270px;
|
||
|
height: 100%;
|
||
|
padding: 10px 10px 10px 10px;
|
||
|
margin-right: 8px;
|
||
|
background: #fff;
|
||
|
border: 1px solid #e2e2e2;
|
||
|
border-radius: 3px;
|
||
|
color: #3a3c47;
|
||
|
text-align: left;
|
||
|
font-size: 14px;
|
||
|
cursor: pointer;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbframelist ul li:last-child {
|
||
|
margin-right: 0px;
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbframelist ul li.active {
|
||
|
color: #fff;
|
||
|
background: #B8B8B8;
|
||
|
}
|
||
|
|
||
|
.sbframe-commentary {
|
||
|
width: 300px;
|
||
|
background: #fbfbfb;
|
||
|
font-size: 14px;
|
||
|
}
|
||
|
|
||
|
.sbframe-commentary ul {
|
||
|
padding-left: 22px;
|
||
|
}
|
||
|
|
||
|
.sbframe.active {
|
||
|
display: flex;
|
||
|
}
|
||
|
|
||
|
.sbframe:not(.active) {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
/* NAV TABS */
|
||
|
|
||
|
.nav-tabs-custom > .nav-tabs {
|
||
|
margin: 0;
|
||
|
border-bottom: 1px solid #d7d7d7;
|
||
|
color: #666;
|
||
|
font-size: 14px;
|
||
|
font-weight: 300;
|
||
|
border-top-right-radius: 3px;
|
||
|
border-top-left-radius: 3px;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li {
|
||
|
border-top: 3px solid transparent;
|
||
|
margin-bottom: -1px;
|
||
|
margin-right: 5px;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li > a,
|
||
|
.nav-tabs-custom > .nav-tabs > li > a:active {
|
||
|
color: #666;
|
||
|
font-weight: 300;
|
||
|
font-size: 14px;
|
||
|
border-radius: 0;
|
||
|
padding: 3px 10px 5px;
|
||
|
text-transform: none;
|
||
|
}
|
||
|
|
||
|
.nav-tabs-custom > .nav-tabs > li:not(.active) > a {
|
||
|
border-bottom-color: transparent;
|
||
|
}
|
||
|
|
||
|
.nav-tabs-custom > .nav-tabs > li > a.text-muted {
|
||
|
color: #999;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li > a,
|
||
|
.nav-tabs-custom > .nav-tabs > li > a:hover {
|
||
|
background: transparent;
|
||
|
margin: 0;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li > a:hover {
|
||
|
color: #999;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,
|
||
|
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,
|
||
|
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active {
|
||
|
border-color: transparent;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li.active {
|
||
|
border-top-color: #3c8dbc;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li.active > a,
|
||
|
.nav-tabs-custom > .nav-tabs > li.active:hover > a {
|
||
|
background-color: #fff;
|
||
|
color: #666;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li.active > a {
|
||
|
border-top-color: transparent;
|
||
|
border-left-color: #d7d7d7;
|
||
|
border-right-color: #d7d7d7;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li:first-of-type {
|
||
|
margin-left: 0;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a {
|
||
|
border-left-color: transparent;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs.pull-right {
|
||
|
float: none !important;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs.pull-right > li {
|
||
|
float: right;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type {
|
||
|
margin-right: 0;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a {
|
||
|
border-left-width: 1px;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a {
|
||
|
border-left-color: #d7d7d7;
|
||
|
border-right-color: transparent;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li.header {
|
||
|
line-height: 35px;
|
||
|
padding: 0 10px;
|
||
|
font-size: 20px;
|
||
|
color: #666;
|
||
|
}
|
||
|
.nav-tabs-custom > .nav-tabs > li.header > .fa,
|
||
|
.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,
|
||
|
.nav-tabs-custom > .nav-tabs > li.header > .ion {
|
||
|
margin-right: 5px;
|
||
|
}
|
||
|
.nav-tabs-custom > .tab-content {
|
||
|
background: #fff;
|
||
|
padding: 0;
|
||
|
border-bottom-right-radius: 3px;
|
||
|
border-bottom-left-radius: 3px;
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
}
|
||
|
|
||
|
.nav-tabs-custom > .tab-content > .chart-wrapper {
|
||
|
background: #fff;
|
||
|
border: none;
|
||
|
margin: 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
.nav-tabs-custom > .tab-content > .active {
|
||
|
display: -webkit-box;
|
||
|
display: -webkit-flex;
|
||
|
display: -ms-flexbox;
|
||
|
display: flex;
|
||
|
}
|
||
|
|
||
|
.nav-tabs-custom .dropdown.open > a:active,
|
||
|
.nav-tabs-custom .dropdown.open > a:focus {
|
||
|
background: transparent;
|
||
|
color: #999;
|
||
|
}
|
||
|
|
||
|
|
||
|
@media (max-width: 767px) {
|
||
|
.value-box {
|
||
|
text-align: center;
|
||
|
margin-right: 8px;
|
||
|
}
|
||
|
.value-box .icon {
|
||
|
display: none;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Fixed position sidebar */
|
||
|
|
||
|
.section.sidebar {
|
||
|
position: fixed;
|
||
|
top: 51px; /* overridden by theme */
|
||
|
left: 0;
|
||
|
bottom: 0;
|
||
|
border-right: 1px solid #e2e2e2;
|
||
|
background-color: white; /* overridden by theme */
|
||
|
padding-left: 10px;
|
||
|
padding-right: 10px;
|
||
|
visibility: hidden;
|
||
|
overflow: auto;
|
||
|
}
|
||
|
|
||
|
.section.sidebar form p:first-child {
|
||
|
margin-top: 10px;
|
||
|
}
|
||
|
|
||
|
/* Embedded source code */
|
||
|
|
||
|
#flexdashboard-source-code {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.featherlight-content #flexdashboard-source-code {
|
||
|
display: inline-block;
|
||
|
}
|
||
|
|
||
|
.featherlight-content {
|
||
|
width: 80%;
|
||
|
max-width: 800px;
|
||
|
padding: 0 !important;
|
||
|
border-bottom: none !important;
|
||
|
}
|
||
|
|
||
|
.featherlight:last-of-type {
|
||
|
background: rgba(0, 0, 0, 0.7);
|
||
|
}
|
||
|
|
||
|
.featherlight-inner {
|
||
|
width: 100%;
|
||
|
}
|
||
|
|
||
|
.featherlight-content pre {
|
||
|
margin: 0;
|
||
|
border: 0;
|
||
|
background: #fff;
|
||
|
font-size: 12px;
|
||
|
}
|
||
|
|
||
|
.unselectable {
|
||
|
-ms-user-select: none;
|
||
|
-webkit-user-select: none;
|
||
|
-khtml-user-select: none;
|
||
|
-moz-user-select: -moz-none;
|
||
|
-o-user-select: none;
|
||
|
user-select: none;
|
||
|
}
|
||
|
|
||
|
#flexdashboard-source-code code {
|
||
|
-ms-user-select: text;
|
||
|
-webkit-user-select: text;
|
||
|
-khtml-user-select: text;
|
||
|
-moz-user-select: text;
|
||
|
-o-user-select: text;
|
||
|
user-select: text;
|
||
|
}
|
||
|
|
||
|
/* DataTables Tweaks */
|
||
|
|
||
|
.dataTables_filter input[type="search"] {
|
||
|
-webkit-appearance: searchfield;
|
||
|
outline: none;
|
||
|
}
|
||
|
|
||
|
.dataTables_wrapper.no-footer
|
||
|
.dataTables_info {
|
||
|
padding-top: 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
table.dataTable thead th {
|
||
|
border-bottom: 1px solid #d7d7d7;
|
||
|
}
|
||
|
|
||
|
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||
|
border-bottom: 1px solid #d7d7d7;
|
||
|
}
|
||
|
|
||
|
/* Mobile phone only CSS */
|
||
|
|
||
|
.desktop-layout div.section.mobile {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.mobile-layout div.section.no-mobile {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.mobile-figure {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
body {
|
||
|
padding-top: 60px;
|
||
|
}
|
||
|
|
||
|
.section.sidebar {
|
||
|
top: 51px;
|
||
|
background-color: rgba(39, 128, 227, 0.1);
|
||
|
}
|
||
|
|
||
|
.value-box {
|
||
|
color: #f9f9f9;
|
||
|
}
|
||
|
|
||
|
.bg-primary {
|
||
|
background-color: rgba(39, 128, 227, 0.7);
|
||
|
}
|
||
|
|
||
|
.storyboard-nav .sbframelist ul li.active {
|
||
|
background-color: rgba(39, 128, 227, 0.7);
|
||
|
}
|
||
|
|
||
|
.nav-tabs-custom > .nav-tabs > li.active {
|
||
|
border-top-color: rgba(39, 128, 227, 0.7);
|
||
|
}
|
||
|
|
||
|
.bg-info {
|
||
|
background-color: rgba(153, 84, 187, 0.7);
|
||
|
}
|
||
|
|
||
|
.bg-warning {
|
||
|
background-color: rgba(255, 117, 24, 0.7);
|
||
|
}
|
||
|
|
||
|
.bg-danger {
|
||
|
background-color: rgba(255, 0, 57, 0.7);
|
||
|
}
|
||
|
|
||
|
.bg-success {
|
||
|
background-color: rgba(63, 182, 24, 0.7);
|
||
|
}
|
||
|
|
||
|
.chart-title {
|
||
|
font-weight: 500;
|
||
|
}
|
||
|
|
||
|
.nav-tabs-custom > .nav-tabs > li > a,
|
||
|
.nav-tabs-custom > .nav-tabs > li > a:active {
|
||
|
font-weight: 500;
|
||
|
}
|
||
|
|
||
|
@media only screen and (min-width: 768px) {
|
||
|
html, body {
|
||
|
height: 100%;
|
||
|
}
|
||
|
|
||
|
#dashboard-container {
|
||
|
height: 100%;
|
||
|
}
|
||
|
}
|
||
|
</style>
|
||
|
|
||
|
|
||
|
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
|
||
|
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
||
|
<div class="container-fluid">
|
||
|
<div class="navbar-header">
|
||
|
|
||
|
<button id="navbar-button" type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
|
||
|
<span class="icon-bar"></span>
|
||
|
<span class="icon-bar"></span>
|
||
|
<span class="icon-bar"></span>
|
||
|
</button>
|
||
|
|
||
|
<span class="navbar-logo pull-left">
|
||
|
|
||
|
</span>
|
||
|
<span class="navbar-brand">
|
||
|
Zbiory danych
|
||
|
<span class="navbar-author">
|
||
|
</span>
|
||
|
</span>
|
||
|
|
||
|
</div>
|
||
|
<div id="navbar" class="navbar-collapse collapse">
|
||
|
<ul class="nav navbar-nav navbar-left">
|
||
|
</ul>
|
||
|
<ul class="nav navbar-nav navbar-right">
|
||
|
</ul>
|
||
|
</div><!--/.nav-collapse-->
|
||
|
</div><!--/.container-->
|
||
|
</div><!--/.navbar-->
|
||
|
|
||
|
<img class="mobile-figure" data-mobile-figure-id="fig1" src="data:image/png;base64,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
|
||
|
<img class="mobile-figure" data-mobile-figure-id="fig2" src="data:image/png;base64,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
|
||
|
<img class="mobile-figure" data-mobile-figure-id="fig3" src="data:image/png;base64,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
|
||
|
<script type="text/javascript">
|
||
|
|
||
|
|
||
|
var FlexDashboard = (function () {
|
||
|
|
||
|
// initialize options
|
||
|
var _options = {};
|
||
|
|
||
|
var FlexDashboard = function() {
|
||
|
|
||
|
// default options
|
||
|
_options = $.extend(_options, {
|
||
|
theme: "cosmo",
|
||
|
fillPage: false,
|
||
|
orientation: 'columns',
|
||
|
storyboard: false,
|
||
|
defaultFigWidth: 576,
|
||
|
defaultFigHeight: 461,
|
||
|
defaultFigWidthMobile: 360,
|
||
|
defaultFigHeightMobile: 461,
|
||
|
isMobile: false,
|
||
|
isPortrait: false
|
||
|
});
|
||
|
};
|
||
|
|
||
|
function init(options) {
|
||
|
|
||
|
// extend default options
|
||
|
$.extend(true, _options, options);
|
||
|
|
||
|
// add ids to sections that don't have them (pandoc won't assign ids
|
||
|
// to e.g. sections with titles consisting of only chinese characters)
|
||
|
var nextId = 1;
|
||
|
$('.level1:not([id]),.level2:not([id]),.level3:not([id])').each(function() {
|
||
|
$(this).attr('id', 'dashboard-' + nextId++);
|
||
|
});
|
||
|
|
||
|
// find navbar items
|
||
|
var navbarItems = $('#flexdashboard-navbar');
|
||
|
if (navbarItems.length)
|
||
|
navbarItems = JSON.parse(navbarItems.html());
|
||
|
addNavbarItems(navbarItems);
|
||
|
|
||
|
// find the main dashboard container
|
||
|
var dashboardContainer = $('#dashboard-container');
|
||
|
|
||
|
// resolve mobile classes
|
||
|
resolveMobileClasses(dashboardContainer);
|
||
|
|
||
|
// one time global initialization for components
|
||
|
componentsInit(dashboardContainer);
|
||
|
|
||
|
// look for a global sidebar
|
||
|
var globalSidebar = dashboardContainer.find(".section.level1.sidebar");
|
||
|
if (globalSidebar.length > 0) {
|
||
|
|
||
|
// global layout for fullscreen displays
|
||
|
if (!isMobilePhone()) {
|
||
|
|
||
|
// hoist it up to the top level
|
||
|
globalSidebar.insertBefore(dashboardContainer);
|
||
|
|
||
|
// lay it out (set width/positions)
|
||
|
layoutSidebar(globalSidebar, dashboardContainer);
|
||
|
|
||
|
// tuck sidebar into first page for mobile phones
|
||
|
} else {
|
||
|
|
||
|
// convert it into a level3 section
|
||
|
globalSidebar.removeClass('sidebar');
|
||
|
globalSidebar.removeClass('level1');
|
||
|
globalSidebar.addClass('level3');
|
||
|
var h1 = globalSidebar.children('h1');
|
||
|
var h3 = $('<h3></h3>');
|
||
|
h3.html(h1.html());
|
||
|
h3.insertBefore(h1);
|
||
|
h1.remove();
|
||
|
|
||
|
// move it into the first page
|
||
|
var page = dashboardContainer.find('.section.level1').first();
|
||
|
if (page.length > 0)
|
||
|
page.prepend(globalSidebar);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// look for pages to layout
|
||
|
var pages = $('div.section.level1');
|
||
|
if (pages.length > 0) {
|
||
|
|
||
|
// find the navbar and collapse on clicked
|
||
|
var navbar = $('#navbar');
|
||
|
navbar.on("click", "a[data-toggle!=dropdown]", null, function () {
|
||
|
navbar.collapse('hide');
|
||
|
});
|
||
|
|
||
|
// envelop the dashboard container in a tab content div
|
||
|
dashboardContainer.wrapInner('<div class="tab-content"></div>');
|
||
|
|
||
|
pages.each(function(index) {
|
||
|
|
||
|
// lay it out
|
||
|
layoutDashboardPage($(this));
|
||
|
|
||
|
// add it to the navbar
|
||
|
addToNavbar($(this), index === 0);
|
||
|
|
||
|
});
|
||
|
|
||
|
} else {
|
||
|
|
||
|
// remove the navbar and navbar button if we don't
|
||
|
// have any navbuttons
|
||
|
if (navbarItems.length === 0) {
|
||
|
$('#navbar').remove();
|
||
|
$('#navbar-button').remove();
|
||
|
}
|
||
|
|
||
|
// add the storyboard class if requested
|
||
|
if (_options.storyboard)
|
||
|
dashboardContainer.addClass('storyboard');
|
||
|
|
||
|
// layout the entire page
|
||
|
layoutDashboardPage(dashboardContainer);
|
||
|
}
|
||
|
|
||
|
// if we are in shiny we need to trigger a window resize event to
|
||
|
// force correct layout of shiny-bound-output elements
|
||
|
if (isShinyDoc())
|
||
|
$(window).trigger('resize');
|
||
|
|
||
|
// make main components visible
|
||
|
$('.section.sidebar').css('visibility', 'visible');
|
||
|
dashboardContainer.css('visibility', 'visible');
|
||
|
|
||
|
// handle location hash
|
||
|
handleLocationHash();
|
||
|
|
||
|
// intialize prism highlighting
|
||
|
initPrismHighlighting();
|
||
|
|
||
|
// record mobile and orientation state then register a handler
|
||
|
// to refresh if it changes
|
||
|
_options.isMobile = isMobilePhone();
|
||
|
_options.isPortrait = isPortrait();
|
||
|
$(window).on('resize', function() {
|
||
|
if (_options.isMobile !== isMobilePhone() ||
|
||
|
_options.isPortrait !== isPortrait()) {
|
||
|
window.location.reload();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// trigger layoutcomplete event
|
||
|
dashboardContainer.trigger('flexdashboard:layoutcomplete');
|
||
|
}
|
||
|
|
||
|
function resolveMobileClasses(dashboardContainer) {
|
||
|
// add top level layout class
|
||
|
dashboardContainer.addClass(isMobilePhone() ? 'mobile-layout' :
|
||
|
'desktop-layout');
|
||
|
|
||
|
// look for .mobile sections and add .no-mobile to their peers
|
||
|
var mobileSections = $('.section.mobile');
|
||
|
mobileSections.each(function() {
|
||
|
var id = $(this).attr('id');
|
||
|
var nomobileId = id.replace(/-\d+$/, '');
|
||
|
$('#' + nomobileId).addClass('no-mobile');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function addNavbarItems(navbarItems) {
|
||
|
|
||
|
var navbarLeft = $('ul.navbar-left');
|
||
|
var navbarRight = $('ul.navbar-right');
|
||
|
|
||
|
for (var i = 0; i<navbarItems.length; i++) {
|
||
|
|
||
|
// get the item
|
||
|
var item = navbarItems[i];
|
||
|
|
||
|
// determine the container
|
||
|
var container = null;
|
||
|
if (item.align === "left")
|
||
|
container = navbarLeft;
|
||
|
else
|
||
|
container = navbarRight;
|
||
|
|
||
|
// navbar menu if we have multiple items
|
||
|
if (item.items) {
|
||
|
var menu = navbarMenu(null, item.icon, item.title, container);
|
||
|
for (var j = 0; j<item.items.length; j++) {
|
||
|
var subItem = item.items[j];
|
||
|
var li = $('<li></li>');
|
||
|
li.append(navbarLink(subItem.icon, subItem.title, subItem.href, subItem.target));
|
||
|
menu.append(li);
|
||
|
}
|
||
|
} else {
|
||
|
var li = $('<li></li>');
|
||
|
li.append(navbarLink(item.icon, item.title, item.href, item.target));
|
||
|
container.append(li);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// create or get a reference to an existing dropdown menu
|
||
|
function navbarMenu(id, icon, title, container) {
|
||
|
var existingMenu = [];
|
||
|
if (id)
|
||
|
existingMenu = container.children('#' + id);
|
||
|
if (existingMenu.length > 0) {
|
||
|
return existingMenu.children('ul');
|
||
|
} else {
|
||
|
var li = $('<li></li>');
|
||
|
if (id)
|
||
|
li.attr('id', id);
|
||
|
li.addClass('dropdown');
|
||
|
// auto add "Share" title on mobile if necessary
|
||
|
if (!title && icon && (icon === "fa-share-alt") && isMobilePhone())
|
||
|
title = "Share";
|
||
|
if (title) {
|
||
|
title = title + ' <span class="caret"></span>';
|
||
|
}
|
||
|
var a = navbarLink(icon, title, "#");
|
||
|
a.addClass('dropdown-toggle');
|
||
|
a.attr('data-toggle', 'dropdown');
|
||
|
a.attr('role', 'button');
|
||
|
a.attr('aria-expanded', 'false');
|
||
|
li.append(a);
|
||
|
var ul = $('<ul class="dropdown-menu"></ul>');
|
||
|
ul.attr('role', 'menu');
|
||
|
li.append(ul);
|
||
|
container.append(li);
|
||
|
return ul;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function addToNavbar(page, active) {
|
||
|
|
||
|
// capture the id and data-icon attribute (if any)
|
||
|
var id = page.attr('id');
|
||
|
var icon = page.attr('data-icon');
|
||
|
var navmenu = page.attr('data-navmenu');
|
||
|
|
||
|
// get hidden state (transfer this to navbar)
|
||
|
var hidden = page.hasClass('hidden');
|
||
|
page.removeClass('hidden');
|
||
|
|
||
|
// sanitize the id for use with bootstrap tabs
|
||
|
id = id.replace(/[.\/?&!#<>]/g, '').replace(/\s/g, '_');
|
||
|
page.attr('id', id);
|
||
|
|
||
|
// get the wrapper
|
||
|
var wrapper = page.closest('.dashboard-page-wrapper');
|
||
|
|
||
|
// move the id to the wrapper
|
||
|
page.removeAttr('id');
|
||
|
wrapper.attr('id', id);
|
||
|
|
||
|
// add the tab-pane class to the wrapper
|
||
|
wrapper.addClass('tab-pane');
|
||
|
if (active)
|
||
|
wrapper.addClass('active');
|
||
|
|
||
|
// get a reference to the h1, discover it's id and title, then remove it
|
||
|
var h1 = wrapper.find('h1').first();
|
||
|
var title = h1.html();
|
||
|
h1.remove();
|
||
|
|
||
|
// create a navbar item
|
||
|
var li = $('<li></li>');
|
||
|
var a = navbarLink(icon, title, '#' + id);
|
||
|
a.attr('data-toggle', 'tab');
|
||
|
li.append(a);
|
||
|
|
||
|
// add it to the navbar (or navbar menu if specified)
|
||
|
var container = $('ul.navbar-left');
|
||
|
if (navmenu) {
|
||
|
var menuId = navmenu.replace(/\s+/g, '');
|
||
|
var menu = navbarMenu(menuId, null, navmenu, container);
|
||
|
menu.append(li);
|
||
|
} else {
|
||
|
container.append(li);
|
||
|
}
|
||
|
|
||
|
// hide it if requested
|
||
|
if (hidden)
|
||
|
li.addClass('hidden');
|
||
|
}
|
||
|
|
||
|
function navbarLink(icon, title, href, target) {
|
||
|
|
||
|
var a = $('<a></a>');
|
||
|
if (icon) {
|
||
|
|
||
|
// get the name of the icon set and icon
|
||
|
var dashPos = icon.indexOf("-");
|
||
|
var iconSet = icon.substring(0, dashPos);
|
||
|
var iconName = icon.substring(dashPos + 1);
|
||
|
|
||
|
// create the icon
|
||
|
var iconElement = $('<span class="' + iconSet + ' ' + icon + '"></span>');
|
||
|
if (title)
|
||
|
iconElement.css('margin-right', '7px');
|
||
|
a.append(iconElement);
|
||
|
// if href is null see if we can auto-generate based on icon (e.g. social)
|
||
|
if (!href)
|
||
|
maybeGenerateLinkFromIcon(iconName, a);
|
||
|
}
|
||
|
if (title)
|
||
|
a.append(title);
|
||
|
|
||
|
// add the href.
|
||
|
if (href) {
|
||
|
if (href === "source_embed") {
|
||
|
a.attr('href', '#');
|
||
|
a.attr('data-featherlight', "#flexdashboard-source-code");
|
||
|
a.featherlight({
|
||
|
beforeOpen: function(event){
|
||
|
$('body').addClass('unselectable');
|
||
|
},
|
||
|
afterClose: function(event){
|
||
|
$('body').removeClass('unselectable');
|
||
|
}
|
||
|
});
|
||
|
} else {
|
||
|
a.attr('href', href);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// add the arget
|
||
|
if (target)
|
||
|
a.attr('target', target);
|
||
|
|
||
|
return a;
|
||
|
}
|
||
|
|
||
|
// auto generate a link from an icon name (e.g. twitter) when possible
|
||
|
function maybeGenerateLinkFromIcon(iconName, a) {
|
||
|
|
||
|
var serviceLinks = {
|
||
|
"twitter": "https://twitter.com/share?text=" + encodeURIComponent(document.title) + "&url="+encodeURIComponent(location.href),
|
||
|
"facebook": "https://www.facebook.com/sharer/sharer.php?s=100&p[url]="+encodeURIComponent(location.href),
|
||
|
"google-plus": "https://plus.google.com/share?url="+encodeURIComponent(location.href),
|
||
|
"linkedin": "https://www.linkedin.com/shareArticle?mini=true&url="+encodeURIComponent(location.href) + "&title=" + encodeURIComponent(document.title),
|
||
|
"pinterest": "https://pinterest.com/pin/create/link/?url="+encodeURIComponent(location.href) + "&description=" + encodeURIComponent(document.title)
|
||
|
};
|
||
|
|
||
|
var makeSocialLink = function(a, href) {
|
||
|
a.attr('href', '#');
|
||
|
a.on('click', function(e) {
|
||
|
e.preventDefault();
|
||
|
window.open(href);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
$.each(serviceLinks, function(key, value) {
|
||
|
if (iconName.indexOf(key) !== -1)
|
||
|
makeSocialLink(a, value);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// layout a dashboard page
|
||
|
function layoutDashboardPage(page) {
|
||
|
|
||
|
// use a page wrapper so that free form content above the
|
||
|
// dashboard appears at the top rather than the side (as it
|
||
|
// would without the wrapper in a column orientation)
|
||
|
var wrapper = $('<div class="dashboard-page-wrapper"></div>');
|
||
|
page.wrap(wrapper);
|
||
|
|
||
|
// if there are no level2 or level3 headers synthesize a level3
|
||
|
// header to contain the (e.g. frame it, scroll container, etc.)
|
||
|
var headers = page.find('h2,h3');
|
||
|
if (headers.length === 0)
|
||
|
page.wrapInner('<div class="section level3"></div>');
|
||
|
|
||
|
// hoist up any content before level 2 or level 3 headers
|
||
|
var children = page.children();
|
||
|
children.each(function(index) {
|
||
|
if ($(this).hasClass('level2') || $(this).hasClass('level3'))
|
||
|
return false;
|
||
|
$(this).insertBefore(page);
|
||
|
});
|
||
|
|
||
|
// determine orientation and fillPage behavior for distinct media
|
||
|
var orientation, fillPage, storyboard;
|
||
|
|
||
|
// media: mobile phone
|
||
|
if (isMobilePhone()) {
|
||
|
|
||
|
// if there is a sidebar we need to ensure it's content
|
||
|
// is properly framed as an h3
|
||
|
var sidebar = page.find('.section.sidebar');
|
||
|
sidebar.removeClass('sidebar');
|
||
|
sidebar.wrapInner('<div class="section level3"></div>');
|
||
|
var h2 = sidebar.find('h2');
|
||
|
var h3 = $('<h3></h3>');
|
||
|
h3.html(h2.html());
|
||
|
h3.insertBefore(h2);
|
||
|
h2.remove();
|
||
|
|
||
|
// wipeout h2 elements then enclose them in a single h2
|
||
|
var level2 = page.find('div.section.level2');
|
||
|
level2.each(function() {
|
||
|
level2.children('h2').remove();
|
||
|
level2.children().unwrap();
|
||
|
});
|
||
|
page.wrapInner('<div class="section level2"></div>');
|
||
|
|
||
|
// substitute mobile images
|
||
|
if (isPortrait()) {
|
||
|
var mobileFigures = $('img.mobile-figure');
|
||
|
mobileFigures.each(function() {
|
||
|
// get the src (might be base64 encoded)
|
||
|
var src = $(this).attr('src');
|
||
|
|
||
|
// find it's peer
|
||
|
var id = $(this).attr('data-mobile-figure-id');
|
||
|
var img = $('img[data-figure-id=' + id + "]");
|
||
|
img.attr('src', src)
|
||
|
.attr('width', _options.defaultFigWidthMobile)
|
||
|
.attr('height', _options.defaultFigHeightMobile);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// hoist storyboard commentary into it's own section
|
||
|
if (page.hasClass('storyboard')) {
|
||
|
var commentaryHR = page.find('div.section.level3 hr');
|
||
|
commentaryHR.each(function() {
|
||
|
var commentary = $(this).nextAll().detach();
|
||
|
var commentarySection = $('<div class="section level3"></div>');
|
||
|
commentarySection.append(commentary);
|
||
|
commentarySection.insertAfter($(this).closest('div.section.level3'));
|
||
|
$(this).remove();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// force a non full screen layout by columns
|
||
|
orientation = _options.orientation = 'columns';
|
||
|
fillPage = _options.fillPage = false;
|
||
|
storyboard = _options.storyboard = false;
|
||
|
|
||
|
// media: desktop
|
||
|
} else {
|
||
|
|
||
|
// determine orientation
|
||
|
orientation = page.attr('data-orientation');
|
||
|
if (orientation !== 'rows' && orientation != 'columns')
|
||
|
orientation = _options.orientation;
|
||
|
|
||
|
// determine storyboard mode
|
||
|
storyboard = page.hasClass('storyboard');
|
||
|
|
||
|
// fillPage based on options (force for storyboard)
|
||
|
fillPage = _options.fillPage || storyboard;
|
||
|
|
||
|
// handle sidebar
|
||
|
var sidebar = page.find('.section.level2.sidebar');
|
||
|
if (sidebar.length > 0)
|
||
|
layoutSidebar(sidebar, page);
|
||
|
}
|
||
|
|
||
|
// give it and it's parent divs height: 100% if we are in fillPage mode
|
||
|
if (fillPage) {
|
||
|
page.addClass('vertical-layout-fill');
|
||
|
page.css('height', '100%');
|
||
|
page.parents('div').css('height', '100%');
|
||
|
} else {
|
||
|
page.addClass('vertical-layout-scroll');
|
||
|
}
|
||
|
|
||
|
// perform the layout
|
||
|
if (storyboard)
|
||
|
layoutPageAsStoryboard(page);
|
||
|
else if (orientation === 'rows')
|
||
|
layoutPageByRows(page, fillPage);
|
||
|
else if (orientation === 'columns')
|
||
|
layoutPageByColumns(page, fillPage);
|
||
|
}
|
||
|
|
||
|
function layoutSidebar(sidebar, content) {
|
||
|
|
||
|
// get it out of the header hierarchy
|
||
|
sidebar = sidebar.first();
|
||
|
if (sidebar.hasClass('level1')) {
|
||
|
sidebar.removeClass('level1');
|
||
|
sidebar.children('h1').remove();
|
||
|
} else if (sidebar.hasClass('level2')) {
|
||
|
sidebar.removeClass('level2');
|
||
|
sidebar.children('h2').remove();
|
||
|
}
|
||
|
|
||
|
// determine width
|
||
|
var sidebarWidth = isTablet() ? 220 : 250;
|
||
|
var dataWidth = parseInt(sidebar.attr('data-width'));
|
||
|
if (dataWidth)
|
||
|
sidebarWidth = dataWidth;
|
||
|
|
||
|
// set the width and shift the page right to accomodate the sidebar
|
||
|
sidebar.css('width', sidebarWidth + 'px');
|
||
|
content.css('padding-left', sidebarWidth + 'px');
|
||
|
|
||
|
// wrap it's contents in a form
|
||
|
sidebar.wrapInner($('<form></form>'));
|
||
|
}
|
||
|
|
||
|
function layoutPageAsStoryboard(page) {
|
||
|
|
||
|
// create storyboard navigation
|
||
|
var nav = $('<div class="storyboard-nav"></div>');
|
||
|
|
||
|
// add navigation buttons
|
||
|
var prev = $('<button class="sbprev"><i class="fa fa-angle-left"></i></button>');
|
||
|
nav.append(prev);
|
||
|
var next= $('<button class="sbnext"><i class="fa fa-angle-right"></i></button>');
|
||
|
nav.append(next);
|
||
|
|
||
|
// add navigation frame
|
||
|
var frameList = $('<div class="sbframelist"></div>');
|
||
|
nav.append(frameList);
|
||
|
var ul = $('<ul></ul>');
|
||
|
frameList.append(ul);
|
||
|
|
||
|
// find all the level3 sections (those are the storyboard frames)
|
||
|
var frames = page.find('div.section.level3');
|
||
|
frames.each(function() {
|
||
|
|
||
|
// mark it
|
||
|
$(this).addClass('sbframe');
|
||
|
|
||
|
// divide it into chart content and (optional) commentary
|
||
|
$(this).addClass('dashboard-column-orientation');
|
||
|
|
||
|
// stuff the chart into it's own div w/ flex
|
||
|
$(this).wrapInner('<div class="sbframe-component"></div>');
|
||
|
setFlex($(this), 1);
|
||
|
var frame = $(this).children('.sbframe-component');
|
||
|
|
||
|
// extract the title from the h3
|
||
|
var li = $('<li></li>');
|
||
|
var h3 = frame.children('h3');
|
||
|
li.html(h3.html());
|
||
|
h3.remove();
|
||
|
ul.append(li);
|
||
|
|
||
|
// extract commentary
|
||
|
var hr = frame.children('hr');
|
||
|
if (hr.length) {
|
||
|
var commentary = hr.nextAll().detach();
|
||
|
hr.remove();
|
||
|
var commentaryFrame = $('<div class="sbframe-commentary"></div>');
|
||
|
commentaryFrame.addClass('flowing-content-shim');
|
||
|
commentaryFrame.addClass('flowing-content-container');
|
||
|
commentaryFrame.append(commentary);
|
||
|
$(this).append(commentaryFrame);
|
||
|
|
||
|
// look for a data-commentary-width attribute
|
||
|
var commentaryWidth = $(this).attr('data-commentary-width');
|
||
|
if (commentaryWidth)
|
||
|
commentaryFrame.css('width', commentaryWidth + 'px');
|
||
|
}
|
||
|
|
||
|
// layout the chart (force flex)
|
||
|
var result = layoutChart(frame, true);
|
||
|
|
||
|
// ice the notes if there are none
|
||
|
if (!result.notes)
|
||
|
frame.find('.chart-notes').remove();
|
||
|
|
||
|
// set flex on chart
|
||
|
setFlex(frame, 1);
|
||
|
});
|
||
|
|
||
|
// create a div to hold all the frames
|
||
|
var frameContent = $('<div class="sbframe-content"></div>');
|
||
|
frameContent.addClass('dashboard-row-orientation');
|
||
|
frameContent.append(frames.detach());
|
||
|
|
||
|
// row orientation to stack nav and frame content
|
||
|
page.addClass('dashboard-row-orientation');
|
||
|
page.append(nav);
|
||
|
page.append(frameContent);
|
||
|
setFlex(frameContent, 1);
|
||
|
|
||
|
// initialize sly
|
||
|
var sly = new Sly(frameList, {
|
||
|
horizontal: true,
|
||
|
itemNav: 'basic',
|
||
|
smart: true,
|
||
|
activateOn: 'click',
|
||
|
startAt: 0,
|
||
|
scrollBy: 1,
|
||
|
activatePageOn: 'click',
|
||
|
speed: 200,
|
||
|
moveBy: 600,
|
||
|
dragHandle: true,
|
||
|
dynamicHandle: true,
|
||
|
clickBar: true,
|
||
|
keyboardNavBy: 'items',
|
||
|
next: next,
|
||
|
prev: prev
|
||
|
}).init();
|
||
|
|
||
|
// make first frame active
|
||
|
frames.removeClass('active');
|
||
|
frames.first().addClass('active');
|
||
|
|
||
|
// subscribe to frame changed events
|
||
|
sly.on('active', function (eventName, itemIndex) {
|
||
|
frames.removeClass('active');
|
||
|
frames.eq(itemIndex).addClass('active')
|
||
|
.trigger('shown');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function layoutPageByRows(page, fillPage) {
|
||
|
|
||
|
// row orientation
|
||
|
page.addClass('dashboard-row-orientation');
|
||
|
|
||
|
// find all the level2 sections (those are the rows)
|
||
|
var rows = page.find('div.section.level2');
|
||
|
|
||
|
// if there are no level2 sections then treat the
|
||
|
// entire page as if it's a level 2 section
|
||
|
if (rows.length === 0) {
|
||
|
page.wrapInner('<div class="section level2"></div>');
|
||
|
rows = page.find('div.section.level2');
|
||
|
}
|
||
|
|
||
|
rows.each(function () {
|
||
|
|
||
|
// flags
|
||
|
var haveNotes = false;
|
||
|
var haveFlexHeight = true;
|
||
|
|
||
|
// remove the h2
|
||
|
$(this).children('h2').remove();
|
||
|
|
||
|
// check for a tabset
|
||
|
var isTabset = $(this).hasClass('tabset');
|
||
|
if (isTabset)
|
||
|
layoutTabset($(this));
|
||
|
|
||
|
// give it row layout semantics if it's not a tabset
|
||
|
if (!isTabset)
|
||
|
$(this).addClass('dashboard-row');
|
||
|
|
||
|
// find all of the level 3 subheads
|
||
|
var columns = $(this).find('div.section.level3');
|
||
|
|
||
|
// determine figureSizes sizes
|
||
|
var figureSizes = chartFigureSizes(columns);
|
||
|
|
||
|
// fixup the columns
|
||
|
columns.each(function(index) {
|
||
|
|
||
|
// layout the chart (force flex if we are in a tabset)
|
||
|
var result = layoutChart($(this), isTabset);
|
||
|
|
||
|
// update flexHeight state
|
||
|
if (!result.flex)
|
||
|
haveFlexHeight = false;
|
||
|
|
||
|
// update state
|
||
|
if (result.notes)
|
||
|
haveNotes = true;
|
||
|
|
||
|
// set the column flex based on the figure width
|
||
|
// (value boxes will just get the default figure width)
|
||
|
var chartWidth = figureSizes[index].width;
|
||
|
setFlex($(this), chartWidth + ' ' + chartWidth + ' 0px');
|
||
|
|
||
|
});
|
||
|
|
||
|
// remove empty chart note divs
|
||
|
if (isTabset)
|
||
|
$(this).find('.chart-notes').filter(function() {
|
||
|
return $(this).html() === " ";
|
||
|
}).remove();
|
||
|
if (!haveNotes)
|
||
|
$(this).find('.chart-notes').remove();
|
||
|
|
||
|
// make it a flexbox row
|
||
|
if (haveFlexHeight)
|
||
|
$(this).addClass('dashboard-row-flex');
|
||
|
|
||
|
// now we can set the height on all the wrappers (based on maximum
|
||
|
// figure height + room for title and notes, or data-height on the
|
||
|
// container if specified). However, don't do this if there is
|
||
|
// no flex on any of the constituent columns
|
||
|
var flexHeight = null;
|
||
|
var dataHeight = parseInt($(this).attr('data-height'));
|
||
|
if (dataHeight)
|
||
|
flexHeight = adjustedHeight(dataHeight, columns.first());
|
||
|
else if (haveFlexHeight)
|
||
|
flexHeight = maxChartHeight(figureSizes, columns);
|
||
|
if (flexHeight) {
|
||
|
if (fillPage)
|
||
|
setFlex($(this), flexHeight + ' ' + flexHeight + ' 0px');
|
||
|
else {
|
||
|
$(this).css('height', flexHeight + 'px');
|
||
|
setFlex($(this), '0 0 ' + flexHeight + 'px');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function layoutPageByColumns(page, fillPage) {
|
||
|
|
||
|
// column orientation
|
||
|
page.addClass('dashboard-column-orientation');
|
||
|
|
||
|
// find all the level2 sections (those are the columns)
|
||
|
var columns = page.find('div.section.level2');
|
||
|
|
||
|
// if there are no level2 sections then treat the
|
||
|
// entire page as if it's a level 2 section
|
||
|
if (columns.length === 0) {
|
||
|
page.wrapInner('<div class="section level2"></div>');
|
||
|
columns = page.find('div.section.level2');
|
||
|
}
|
||
|
|
||
|
// layout each column
|
||
|
columns.each(function (index) {
|
||
|
|
||
|
// remove the h2
|
||
|
$(this).children('h2').remove();
|
||
|
|
||
|
// make it a flexbox column
|
||
|
$(this).addClass('dashboard-column');
|
||
|
|
||
|
// check for a tabset
|
||
|
var isTabset = $(this).hasClass('tabset');
|
||
|
if (isTabset)
|
||
|
layoutTabset($(this));
|
||
|
|
||
|
// find all the h3 elements
|
||
|
var rows = $(this).find('div.section.level3');
|
||
|
|
||
|
// get the figure sizes for the rows
|
||
|
var figureSizes = chartFigureSizes(rows);
|
||
|
|
||
|
// column flex is the max row width (or data-width if specified)
|
||
|
var flexWidth;
|
||
|
var dataWidth = parseInt($(this).attr('data-width'));
|
||
|
if (dataWidth)
|
||
|
flexWidth = dataWidth;
|
||
|
else
|
||
|
flexWidth = maxChartWidth(figureSizes);
|
||
|
setFlex($(this), flexWidth + ' ' + flexWidth + ' 0px');
|
||
|
|
||
|
// layout each chart
|
||
|
rows.each(function(index) {
|
||
|
|
||
|
// perform the layout
|
||
|
var result = layoutChart($(this), false);
|
||
|
|
||
|
// ice the notes if there are none
|
||
|
if (!result.notes)
|
||
|
$(this).find('.chart-notes').remove();
|
||
|
|
||
|
// set flex height based on figHeight, then adjust
|
||
|
if (result.flex) {
|
||
|
var chartHeight = figureSizes[index].height;
|
||
|
chartHeight = adjustedHeight(chartHeight, $(this));
|
||
|
if (fillPage)
|
||
|
setFlex($(this), chartHeight + ' ' + chartHeight + ' 0px');
|
||
|
else {
|
||
|
$(this).css('height', chartHeight + 'px');
|
||
|
setFlex($(this), chartHeight + ' ' + chartHeight + ' ' + chartHeight + 'px');
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function chartFigureSizes(charts) {
|
||
|
|
||
|
// sizes
|
||
|
var figureSizes = new Array(charts.length);
|
||
|
|
||
|
// check each chart
|
||
|
charts.each(function(index) {
|
||
|
|
||
|
// start with default
|
||
|
figureSizes[index] = {
|
||
|
width: _options.defaultFigWidth,
|
||
|
height: _options.defaultFigHeight
|
||
|
};
|
||
|
|
||
|
// look for data-height or data-width then knit options
|
||
|
var dataWidth = parseInt($(this).attr('data-width'));
|
||
|
var dataHeight = parseInt($(this).attr('data-height'));
|
||
|
var knitrOptions = $(this).find('.knitr-options:first');
|
||
|
var knitrWidth, knitrHeight;
|
||
|
if (knitrOptions) {
|
||
|
knitrWidth = parseInt(knitrOptions.attr('data-fig-width'));
|
||
|
knitrHeight = parseInt(knitrOptions.attr('data-fig-height'));
|
||
|
}
|
||
|
|
||
|
// width
|
||
|
if (dataWidth)
|
||
|
figureSizes[index].width = dataWidth;
|
||
|
else if (knitrWidth)
|
||
|
figureSizes[index].width = knitrWidth;
|
||
|
|
||
|
// height
|
||
|
if (dataHeight)
|
||
|
figureSizes[index].height = dataHeight;
|
||
|
else if (knitrHeight)
|
||
|
figureSizes[index].height = knitrHeight;
|
||
|
});
|
||
|
|
||
|
// return sizes
|
||
|
return figureSizes;
|
||
|
}
|
||
|
|
||
|
function maxChartHeight(figureSizes, charts) {
|
||
|
|
||
|
// first compute the maximum height
|
||
|
var maxHeight = _options.defaultFigHeight;
|
||
|
for (var i = 0; i<figureSizes.length; i++)
|
||
|
if (figureSizes[i].height > maxHeight)
|
||
|
maxHeight = figureSizes[i].height;
|
||
|
|
||
|
// now add offests for chart title and chart notes
|
||
|
if (charts.length)
|
||
|
maxHeight = adjustedHeight(maxHeight, charts.first());
|
||
|
|
||
|
return maxHeight;
|
||
|
}
|
||
|
|
||
|
function adjustedHeight(height, chart) {
|
||
|
if (chart.length > 0) {
|
||
|
var chartTitle = chart.find('.chart-title');
|
||
|
if (chartTitle.length)
|
||
|
height += chartTitle.first().outerHeight();
|
||
|
var chartNotes = chart.find('.chart-notes');
|
||
|
if (chartNotes.length)
|
||
|
height += chartNotes.first().outerHeight();
|
||
|
}
|
||
|
return height;
|
||
|
}
|
||
|
|
||
|
function maxChartWidth(figureSizes) {
|
||
|
var maxWidth = _options.defaultFigWidth;
|
||
|
for (var i = 0; i<figureSizes.length; i++)
|
||
|
if (figureSizes[i].width > maxWidth)
|
||
|
maxWidth = figureSizes[i].width;
|
||
|
return maxWidth;
|
||
|
}
|
||
|
|
||
|
// layout a chart
|
||
|
function layoutChart(chart, forceFlex) {
|
||
|
|
||
|
// state to return
|
||
|
var result = {
|
||
|
notes: false,
|
||
|
flex: false
|
||
|
};
|
||
|
|
||
|
// extract the title
|
||
|
var title = extractTitle(chart);
|
||
|
|
||
|
// find components that apply to this container
|
||
|
var components = componentsFind(chart);
|
||
|
|
||
|
// if it's a custom component then call it and return
|
||
|
var customComponents = componentsCustom(components);
|
||
|
if (customComponents.length) {
|
||
|
componentsLayout(customComponents, title, chart);
|
||
|
result.notes = false;
|
||
|
result.flex = forceFlex || componentsFlex(customComponents);
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
// put all the content in a chart wrapper div
|
||
|
chart.addClass('chart-wrapper');
|
||
|
chart.wrapInner('<div class="chart-stage"></div>');
|
||
|
var chartContent = chart.children('.chart-stage');
|
||
|
|
||
|
// flex the content if appropriate
|
||
|
result.flex = forceFlex || componentsFlex(components);
|
||
|
if (result.flex) {
|
||
|
// add flex classes
|
||
|
chart.addClass('chart-wrapper-flex');
|
||
|
chartContent.addClass('chart-stage-flex');
|
||
|
|
||
|
// additional shim to break out of flexbox sizing
|
||
|
chartContent.wrapInner('<div class="chart-shim"></div>');
|
||
|
chartContent = chartContent.children('.chart-shim');
|
||
|
}
|
||
|
|
||
|
// set custom data-padding attribute
|
||
|
var pad = chart.attr('data-padding');
|
||
|
if (pad) {
|
||
|
if (pad === "0")
|
||
|
chart.addClass('no-padding');
|
||
|
else {
|
||
|
pad = pad + 'px';
|
||
|
chartContent.css('left', pad)
|
||
|
.css('top', pad)
|
||
|
.css('right', pad)
|
||
|
.css('bottom', pad)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// call compoents
|
||
|
componentsLayout(components, title, chartContent);
|
||
|
|
||
|
// also activate components on shiny output
|
||
|
findShinyOutput(chartContent).on('shiny:value',
|
||
|
function(event) {
|
||
|
var element = $(event.target);
|
||
|
setTimeout(function() {
|
||
|
|
||
|
// see if we opted out of flex based on our output (for shiny
|
||
|
// we can't tell what type of output we have until after the
|
||
|
// value is bound)
|
||
|
var components = componentsFind(element);
|
||
|
var flex = forceFlex || componentsFlex(components);
|
||
|
if (!flex) {
|
||
|
chart.css('height', "");
|
||
|
setFlex(chart, "");
|
||
|
chart.removeClass('chart-wrapper-flex');
|
||
|
chartContent.removeClass('chart-stage-flex');
|
||
|
chartContent.children().unwrap();
|
||
|
}
|
||
|
|
||
|
// perform layout
|
||
|
componentsLayout(components, title, element.parent());
|
||
|
}, 10);
|
||
|
});
|
||
|
|
||
|
// add the title
|
||
|
var chartTitle = $('<div class="chart-title"></div>');
|
||
|
chartTitle.html(title);
|
||
|
chart.prepend(chartTitle);
|
||
|
|
||
|
// add the notes section
|
||
|
var chartNotes = $('<div class="chart-notes"></div>');
|
||
|
chartNotes.html(' ');
|
||
|
chart.append(chartNotes);
|
||
|
|
||
|
// attempt to extract notes if we have a component
|
||
|
if (components.length)
|
||
|
result.notes = extractChartNotes(chartContent, chartNotes);
|
||
|
|
||
|
// return result
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
// build a tabset from a section div with the .tabset class
|
||
|
function layoutTabset(tabset) {
|
||
|
|
||
|
// check for fade option
|
||
|
var fade = tabset.hasClass("tabset-fade");
|
||
|
var navClass = "nav-tabs";
|
||
|
|
||
|
// determine the heading level of the tabset and tabs
|
||
|
var match = tabset.attr('class').match(/level(\d) /);
|
||
|
if (match === null)
|
||
|
return;
|
||
|
var tabsetLevel = Number(match[1]);
|
||
|
var tabLevel = tabsetLevel + 1;
|
||
|
|
||
|
// find all subheadings immediately below
|
||
|
var tabs = tabset.find("div.section.level" + tabLevel);
|
||
|
if (!tabs.length)
|
||
|
return;
|
||
|
|
||
|
// create tablist and tab-content elements
|
||
|
var tabList = $('<ul class="nav ' + navClass + '" role="tablist"></ul>');
|
||
|
$(tabs[0]).before(tabList);
|
||
|
var tabContent = $('<div class="tab-content"></div>');
|
||
|
$(tabs[0]).before(tabContent);
|
||
|
|
||
|
// build the tabset
|
||
|
tabs.each(function(i) {
|
||
|
|
||
|
// get the tab div
|
||
|
var tab = $(tabs[i]);
|
||
|
|
||
|
// get the id then sanitize it for use with bootstrap tabs
|
||
|
var id = tab.attr('id');
|
||
|
|
||
|
// sanitize the id for use with bootstrap tabs
|
||
|
id = id.replace(/[.\/?&!#<>]/g, '').replace(/\s/g, '_');
|
||
|
tab.attr('id', id);
|
||
|
|
||
|
// get the heading element within it and grab it's text
|
||
|
var heading = tab.find('h' + tabLevel + ':first');
|
||
|
var headingText = heading.html();
|
||
|
|
||
|
// build and append the tab list item
|
||
|
var a = $('<a role="tab" data-toggle="tab">' + headingText + '</a>');
|
||
|
a.attr('href', '#' + id);
|
||
|
a.attr('aria-controls', id);
|
||
|
var li = $('<li role="presentation"></li>');
|
||
|
li.append(a);
|
||
|
if (i === 0)
|
||
|
li.attr('class', 'active');
|
||
|
tabList.append(li);
|
||
|
|
||
|
// set it's attributes
|
||
|
tab.attr('role', 'tabpanel');
|
||
|
tab.addClass('tab-pane');
|
||
|
tab.addClass('tabbed-pane');
|
||
|
tab.addClass('no-title');
|
||
|
if (fade)
|
||
|
tab.addClass('fade');
|
||
|
if (i === 0) {
|
||
|
tab.addClass('active');
|
||
|
if (fade)
|
||
|
tab.addClass('in');
|
||
|
}
|
||
|
|
||
|
// move it into the tab content div
|
||
|
tab.detach().appendTo(tabContent);
|
||
|
});
|
||
|
|
||
|
// add nav-tabs-custom
|
||
|
tabset.addClass('nav-tabs-custom');
|
||
|
|
||
|
// internal layout is dashboard-column with tab-content flexing
|
||
|
tabset.addClass('dashboard-column');
|
||
|
setFlex(tabContent, 1);
|
||
|
}
|
||
|
|
||
|
// one time global initialization for components
|
||
|
function componentsInit(dashboardContainer) {
|
||
|
for (var i=0; i<window.FlexDashboardComponents.length; i++) {
|
||
|
var component = window.FlexDashboardComponents[i];
|
||
|
if (component.init)
|
||
|
component.init(dashboardContainer);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// find components that apply within a container
|
||
|
function componentsFind(container) {
|
||
|
|
||
|
// look for components
|
||
|
var components = [];
|
||
|
for (var i=0; i<window.FlexDashboardComponents.length; i++) {
|
||
|
var component = window.FlexDashboardComponents[i];
|
||
|
if (component.find(container).length)
|
||
|
components.push(component);
|
||
|
}
|
||
|
|
||
|
// if there were none then use a special flowing content component
|
||
|
// that just adds a scrollbar in fillPage mode
|
||
|
if (components.length == 0) {
|
||
|
components.push({
|
||
|
find: function(container) {
|
||
|
return container;
|
||
|
},
|
||
|
|
||
|
flex: function(fillPage) {
|
||
|
return fillPage;
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
if (fillPage) {
|
||
|
container.addClass('flowing-content-shim');
|
||
|
container.addClass('flowing-content-container');
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return components;
|
||
|
}
|
||
|
|
||
|
// if there is a custom component then pick it out
|
||
|
function componentsCustom(components) {
|
||
|
var customComponent = [];
|
||
|
for (var i=0; i<components.length; i++)
|
||
|
if (components[i].type === "custom") {
|
||
|
customComponent.push(components[i]);
|
||
|
break;
|
||
|
}
|
||
|
return customComponent;
|
||
|
}
|
||
|
|
||
|
// query all components for flex
|
||
|
function componentsFlex(components) {
|
||
|
|
||
|
// no components at all means no flex
|
||
|
if (components.length === 0)
|
||
|
return false;
|
||
|
|
||
|
// otherwise query components (assume true unless we see false)
|
||
|
var isMobile = isMobilePhone();
|
||
|
for (var i=0; i<components.length; i++)
|
||
|
if (components[i].flex && !components[i].flex(_options.fillPage))
|
||
|
return false;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
// layout all components
|
||
|
function componentsLayout(components, title, container) {
|
||
|
var isMobile = isMobilePhone();
|
||
|
for (var i=0; i<components.length; i++) {
|
||
|
var element = components[i].find(container);
|
||
|
if (components[i].layout) {
|
||
|
// call layout (don't call other components if it returns false)
|
||
|
var result = components[i].layout(title, container, element, _options.fillPage);
|
||
|
if (result === false)
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// get a reference to the h3, discover it's inner html, and remove it
|
||
|
function extractTitle(container) {
|
||
|
var h3 = container.children('h3').first();
|
||
|
var title = '';
|
||
|
if (!container.hasClass('no-title'))
|
||
|
title = h3.html();
|
||
|
h3.remove();
|
||
|
return title;
|
||
|
}
|
||
|
|
||
|
// extract chart notes
|
||
|
function extractChartNotes(chartContent, chartNotes) {
|
||
|
// look for a terminating blockquote or image caption
|
||
|
var blockquote = chartContent.children('blockquote:last-child');
|
||
|
var caption = chartContent.children('div.image-container')
|
||
|
.children('p.caption');
|
||
|
if (blockquote.length) {
|
||
|
chartNotes.html(blockquote.children('p:first-child').html());
|
||
|
blockquote.remove();
|
||
|
return true;
|
||
|
} else if (caption.length) {
|
||
|
chartNotes.html(caption.html());
|
||
|
caption.remove();
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function findShinyOutput(chartContent) {
|
||
|
return chartContent.find('.shiny-text-output, .shiny-html-output');
|
||
|
}
|
||
|
|
||
|
// safely detect rendering on a mobile phone
|
||
|
function isMobilePhone() {
|
||
|
try
|
||
|
{
|
||
|
return ! window.matchMedia("only screen and (min-width: 768px)").matches;
|
||
|
}
|
||
|
catch(e) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function isFillPage() {
|
||
|
return _options.fillPage;
|
||
|
}
|
||
|
|
||
|
// detect portrait mode
|
||
|
function isPortrait() {
|
||
|
return ($(window).width() < $(window).height());
|
||
|
}
|
||
|
|
||
|
// safely detect rendering on a tablet
|
||
|
function isTablet() {
|
||
|
try
|
||
|
{
|
||
|
return window.matchMedia("only screen and (min-width: 769px) and (max-width: 992px)").matches;
|
||
|
}
|
||
|
catch(e) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// test whether this is a shiny doc
|
||
|
function isShinyDoc() {
|
||
|
return (typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings);
|
||
|
}
|
||
|
|
||
|
// set flex using vendor specific prefixes
|
||
|
function setFlex(el, flex) {
|
||
|
el.css('-webkit-box-flex', flex)
|
||
|
.css('-webkit-flex', flex)
|
||
|
.css('-ms-flex', flex)
|
||
|
.css('flex', flex);
|
||
|
}
|
||
|
|
||
|
// support bookmarking of pages
|
||
|
function handleLocationHash() {
|
||
|
|
||
|
// restore tab/page from bookmark
|
||
|
var hash = window.location.hash;
|
||
|
if (hash.length > 0)
|
||
|
$('ul.nav a[href="' + hash + '"]').tab('show');
|
||
|
FlexDashboardUtils.manageActiveNavbarMenu();
|
||
|
|
||
|
// navigate to a tab when the history changes
|
||
|
window.addEventListener("popstate", function(e) {
|
||
|
var hash = window.location.hash;
|
||
|
var activeTab = $('ul.nav a[href="' + hash + '"]');
|
||
|
if (activeTab.length) {
|
||
|
activeTab.tab('show');
|
||
|
} else {
|
||
|
$('ul.nav a:first').tab('show');
|
||
|
}
|
||
|
FlexDashboardUtils.manageActiveNavbarMenu();
|
||
|
});
|
||
|
|
||
|
// add a hash to the URL when the user clicks on a tab/page
|
||
|
$('.navbar-nav a[data-toggle="tab"]').on('click', function(e) {
|
||
|
var baseUrl = FlexDashboardUtils.urlWithoutHash(window.location.href);
|
||
|
var hash = FlexDashboardUtils.urlHash($(this).attr('href'));
|
||
|
var href = baseUrl + hash;
|
||
|
FlexDashboardUtils.setLocation(href);
|
||
|
});
|
||
|
|
||
|
// handle clicks of other links that should activate pages
|
||
|
var navPages = $('ul.navbar-nav li a[data-toggle=tab]');
|
||
|
navPages.each(function() {
|
||
|
var href = $(this).attr('href');
|
||
|
var links = $('a[href="' + href + '"][data-toggle!=tab]');
|
||
|
links.each(function() {
|
||
|
$(this).on('click', function(e) {
|
||
|
window.FlexDashboardUtils.showPage(href);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// tweak Prism highlighting
|
||
|
function initPrismHighlighting() {
|
||
|
|
||
|
if (window.Prism) {
|
||
|
Prism.languages.insertBefore('r', 'comment', {
|
||
|
'heading': [
|
||
|
{
|
||
|
// title 1
|
||
|
// =======
|
||
|
|
||
|
// title 2
|
||
|
// -------
|
||
|
pattern: /\w+.*(?:\r?\n|\r)(?:====+|----+)/,
|
||
|
alias: 'operator'
|
||
|
},
|
||
|
{
|
||
|
// ### title 3
|
||
|
pattern: /(^\s*)###[^#].+/m,
|
||
|
lookbehind: true,
|
||
|
alias: 'operator'
|
||
|
}
|
||
|
]
|
||
|
});
|
||
|
|
||
|
// prism highlight
|
||
|
Prism.highlightAll();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// get theme color
|
||
|
var themeColors = {
|
||
|
bootstrap: {
|
||
|
primary: "rgba(51, 122, 183, 0.4)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
cerulean: {
|
||
|
primary: "rgb(47, 164, 231)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
journal: {
|
||
|
primary: "rgba(235, 104, 100, 0.70)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
flatly: {
|
||
|
primary: "rgba(44, 62, 80, 0.70)",
|
||
|
info: "rgba(52, 152, 219, 0.70)",
|
||
|
success: "rgba(24, 188, 156, 0.70)",
|
||
|
warning: "rgba(243, 156, 18, 0.70)",
|
||
|
danger: "rgba(231, 76, 60, 0.70)"
|
||
|
},
|
||
|
readable: {
|
||
|
primary: "rgba(69, 130, 236, 0.4)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
spacelab: {
|
||
|
primary: "rgba(68, 110, 155, 0.25)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
united: {
|
||
|
primary: "rgba(221, 72, 20, 0.30)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
cosmo: {
|
||
|
primary: "rgba(39, 128, 227, 0.7)",
|
||
|
info: "rgba(153, 84, 187, 0.7)",
|
||
|
success: "rgba(63, 182, 24, 0.7)",
|
||
|
warning: "rgba(255, 117, 24, 0.7)",
|
||
|
danger: "rgba(255, 0, 57, 0.7)"
|
||
|
},
|
||
|
lumen: {
|
||
|
primary: "rgba(21, 140, 186, 0.70)",
|
||
|
info: "rgba(117, 202, 235, 0.90)",
|
||
|
success: "rgba(40, 182, 44, 0.70)",
|
||
|
warning: "rgba(255, 133, 27, 0.70)",
|
||
|
danger: "rgba(255, 65, 54, 0.70)"
|
||
|
},
|
||
|
paper: {
|
||
|
primary: "rgba(33, 150, 243, 0.35)",
|
||
|
info: "rgb(225, 190, 231)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(255, 224, 178)",
|
||
|
danger: "rgb(249, 189, 187)"
|
||
|
},
|
||
|
sandstone: {
|
||
|
primary: "rgba(50, 93, 136, 0.3)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
simplex: {
|
||
|
primary: "rgba(217, 35, 15, 0.25)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
},
|
||
|
yeti: {
|
||
|
primary: "rgba(0, 140, 186, 0.298039)",
|
||
|
info: "rgb(217, 237, 247)",
|
||
|
success: "rgb(223, 240, 216)",
|
||
|
warning: "rgb(252, 248, 227)",
|
||
|
danger: "rgb(242, 222, 222)"
|
||
|
}
|
||
|
}
|
||
|
function themeColor(color) {
|
||
|
return themeColors[_options.theme][color];
|
||
|
}
|
||
|
|
||
|
FlexDashboard.prototype = {
|
||
|
constructor: FlexDashboard,
|
||
|
init: init,
|
||
|
isMobilePhone: isMobilePhone,
|
||
|
isFillPage: isFillPage,
|
||
|
themeColor: themeColor
|
||
|
};
|
||
|
|
||
|
return FlexDashboard;
|
||
|
|
||
|
})();
|
||
|
|
||
|
// utils
|
||
|
window.FlexDashboardUtils = {
|
||
|
resizableImage: function(img) {
|
||
|
var src = img.attr('src');
|
||
|
var url = 'url("' + src + '")';
|
||
|
img.parent().css('background', url)
|
||
|
.css('background-size', 'contain')
|
||
|
.css('background-repeat', 'no-repeat')
|
||
|
.css('background-position', 'center')
|
||
|
.addClass('image-container');
|
||
|
},
|
||
|
setLocation: function(href) {
|
||
|
if (history && history.pushState) {
|
||
|
history.pushState(null, null, href);
|
||
|
} else {
|
||
|
window.location.replace(href);
|
||
|
}
|
||
|
setTimeout(function() {
|
||
|
window.scrollTo(0, 0);
|
||
|
}, 10);
|
||
|
this.manageActiveNavbarMenu();
|
||
|
},
|
||
|
showPage: function(href) {
|
||
|
$('ul.navbar-nav li a[href="' + href + '"]').tab('show');
|
||
|
var baseUrl = this.urlWithoutHash(window.location.href);
|
||
|
var loc = baseUrl + href;
|
||
|
this.setLocation(loc);
|
||
|
},
|
||
|
showLinkedValue: function(href) {
|
||
|
// check for a page link
|
||
|
if ($('ul.navbar-nav li a[data-toggle=tab][href="' + href + '"]').length > 0)
|
||
|
this.showPage(href);
|
||
|
else
|
||
|
window.open(href);
|
||
|
},
|
||
|
urlWithoutHash: function(url) {
|
||
|
var hashLoc = url.indexOf('#');
|
||
|
if (hashLoc != -1)
|
||
|
return url.substring(0, hashLoc);
|
||
|
else
|
||
|
return url;
|
||
|
},
|
||
|
urlHash: function(url) {
|
||
|
var hashLoc = url.indexOf('#');
|
||
|
if (hashLoc != -1)
|
||
|
return url.substring(hashLoc);
|
||
|
else
|
||
|
return "";
|
||
|
},
|
||
|
manageActiveNavbarMenu: function () {
|
||
|
// remove active from anyone currently active
|
||
|
$('.navbar ul.nav').find('li').removeClass('active');
|
||
|
// find the active tab
|
||
|
var activeTab = $('.dashboard-page-wrapper.tab-pane.active');
|
||
|
if (activeTab.length > 0) {
|
||
|
var tabId = activeTab.attr('id');
|
||
|
if (tabId)
|
||
|
$(".navbar ul.nav a[href='#" + tabId + "']").parents('li').addClass('active');
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
window.FlexDashboard = new FlexDashboard();
|
||
|
|
||
|
// empty content
|
||
|
window.FlexDashboardComponents.push({
|
||
|
find: function(container) {
|
||
|
if (container.find('p').length == 0)
|
||
|
return container;
|
||
|
else
|
||
|
return $();
|
||
|
}
|
||
|
})
|
||
|
|
||
|
// plot image
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
find: function(container) {
|
||
|
return container.children('p')
|
||
|
.children('img:only-child');
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
FlexDashboardUtils.resizableImage(element);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// plot image (figure style)
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
find: function(container) {
|
||
|
return container.children('div.figure').children('img');
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
FlexDashboardUtils.resizableImage(element);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// htmlwidget
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
init: function(dashboardContainer) {
|
||
|
// trigger "shown" after initial layout to force static htmlwidgets
|
||
|
// in runtime: shiny to be resized after the dom has been transformed
|
||
|
dashboardContainer.on('flexdashboard:layoutcomplete', function(event) {
|
||
|
setTimeout(function() {
|
||
|
dashboardContainer.trigger('shown');
|
||
|
}, 200);
|
||
|
});
|
||
|
},
|
||
|
|
||
|
find: function(container) {
|
||
|
return container.children('div[id^="htmlwidget-"],div.html-widget');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// gauge
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
find: function(container) {
|
||
|
return container.children('div.html-widget.gauge');
|
||
|
},
|
||
|
|
||
|
flex: function(fillPage) {
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
// shiny output
|
||
|
window.FlexDashboardComponents.push({
|
||
|
find: function(container) {
|
||
|
return container.children('div[class^="shiny-"]');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// datatables
|
||
|
window.FlexDashboardComponents.push({
|
||
|
find: function(container) {
|
||
|
return container.find('.datatables');
|
||
|
},
|
||
|
flex: function(fillPage) {
|
||
|
return fillPage;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// bootstrap table
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
find: function(container) {
|
||
|
var bsTable = container.find('table.table');
|
||
|
if (bsTable.length !== 0)
|
||
|
return bsTable;
|
||
|
else
|
||
|
return container.find('tr.header').parent('thead').parent('table');
|
||
|
},
|
||
|
|
||
|
flex: function(fillPage) {
|
||
|
return fillPage;
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
|
||
|
// alias variables
|
||
|
var bsTable = element;
|
||
|
|
||
|
// fixup xtable generated tables with a proper thead
|
||
|
var headerRow = bsTable.find('tbody > tr:first-child > th').parent();
|
||
|
if (headerRow.length > 0) {
|
||
|
var thead = $('<thead></thead>');
|
||
|
bsTable.prepend(thead);
|
||
|
headerRow.detach().appendTo(thead);
|
||
|
}
|
||
|
|
||
|
// improve appearance
|
||
|
container.addClass('bootstrap-table');
|
||
|
|
||
|
// for fill page provide scrolling w/ sticky headers
|
||
|
if (fillPage) {
|
||
|
// force scrollbar on overflow
|
||
|
container.addClass('flowing-content-shim');
|
||
|
|
||
|
// stable table headers when scrolling
|
||
|
bsTable.stickyTableHeaders({
|
||
|
scrollableArea: container
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// embedded shiny app
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
find: function(container) {
|
||
|
return container.find('iframe.shiny-frame');
|
||
|
},
|
||
|
|
||
|
flex: function(fillPage) {
|
||
|
return fillPage;
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
if (fillPage) {
|
||
|
element.attr('height', '100%');
|
||
|
} else {
|
||
|
// provide default height if necessary
|
||
|
var height = element.get(0).style.height;
|
||
|
if (!height)
|
||
|
height = element.attr('height');
|
||
|
if (!height)
|
||
|
element.attr('height', 500);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// shiny fillRow or fillCol
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
find: function(container) {
|
||
|
return container.find('.flexfill-container');
|
||
|
},
|
||
|
|
||
|
flex: function(fillPage) {
|
||
|
return fillPage;
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
if (fillPage)
|
||
|
element.css('height', '100%');
|
||
|
else {
|
||
|
// provide default height if necessary
|
||
|
var height = element.get(0).style.height;
|
||
|
if (height === "100%" || height === "auto" || height === "initial" ||
|
||
|
height === "inherit" || !height) {
|
||
|
element.css('height', 500);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// valueBox
|
||
|
window.FlexDashboardComponents.push({
|
||
|
|
||
|
type: "custom",
|
||
|
|
||
|
find: function(container) {
|
||
|
if (container.find('span.value-output, .shiny-valuebox-output').length)
|
||
|
return container;
|
||
|
else
|
||
|
return $();
|
||
|
},
|
||
|
|
||
|
flex: function(fillPage) {
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
layout: function(title, container, element, fillPage) {
|
||
|
|
||
|
// alias variables
|
||
|
var chartTitle = title;
|
||
|
var valueBox = element;
|
||
|
|
||
|
// add value-box class to container
|
||
|
container.addClass('value-box');
|
||
|
|
||
|
// value paragraph
|
||
|
var value = $('<p class="value"></p>');
|
||
|
|
||
|
// if we have shiny-text-output then just move it in
|
||
|
var valueOutputSpan = [];
|
||
|
var shinyOutput = valueBox.find('.shiny-valuebox-output').detach();
|
||
|
if (shinyOutput.length) {
|
||
|
valueBox.children().remove();
|
||
|
shinyOutput.html("—");
|
||
|
value.append(shinyOutput);
|
||
|
} else {
|
||
|
// extract the value (remove leading vector index)
|
||
|
var chartValue = valueBox.text().trim();
|
||
|
chartValue = chartValue.replace("[1] ", "");
|
||
|
valueOutputSpan = valueBox.find('span.value-output').detach();
|
||
|
valueBox.children().remove();
|
||
|
value.text(chartValue);
|
||
|
}
|
||
|
|
||
|
// caption
|
||
|
var caption = $('<p class="caption"></p>');
|
||
|
caption.html(chartTitle);
|
||
|
|
||
|
// build inner div for value box and add it
|
||
|
var inner = $('<div class="inner"></div>');
|
||
|
inner.append(value);
|
||
|
inner.append(caption);
|
||
|
valueBox.append(inner);
|
||
|
|
||
|
// add icon if specified
|
||
|
var icon = $('<div class="icon"><i></i></div>');
|
||
|
valueBox.append(icon);
|
||
|
function setIcon(chartIcon) {
|
||
|
var iconLib = "";
|
||
|
var components = chartIcon.split("-");
|
||
|
if (components.length > 1)
|
||
|
iconLib = components[0];
|
||
|
icon.children('i').attr('class', iconLib + ' ' + chartIcon);
|
||
|
}
|
||
|
var chartIcon = valueBox.attr('data-icon');
|
||
|
if (chartIcon)
|
||
|
setIcon(chartIcon);
|
||
|
|
||
|
// set color based on data-background if necessary
|
||
|
var dataBackground = valueBox.attr('data-background');
|
||
|
if (dataBackground)
|
||
|
valueBox.css('background-color', bgColor);
|
||
|
else {
|
||
|
// default to bg-primary if no other background is specified
|
||
|
if (!valueBox.hasClass('bg-primary') &&
|
||
|
!valueBox.hasClass('bg-info') &&
|
||
|
!valueBox.hasClass('bg-warning') &&
|
||
|
!valueBox.hasClass('bg-success') &&
|
||
|
!valueBox.hasClass('bg-danger')) {
|
||
|
valueBox.addClass('bg-primary');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// handle data attributes in valueOutputSpan
|
||
|
function handleValueOutput(valueOutput) {
|
||
|
|
||
|
// caption
|
||
|
var dataCaption = valueOutput.attr('data-caption');
|
||
|
if (dataCaption)
|
||
|
caption.html(dataCaption);
|
||
|
|
||
|
// icon
|
||
|
var dataIcon = valueOutput.attr('data-icon');
|
||
|
if (dataIcon)
|
||
|
setIcon(dataIcon);
|
||
|
|
||
|
// color
|
||
|
var dataColor = valueOutput.attr('data-color');
|
||
|
if (dataColor) {
|
||
|
if (dataColor.indexOf('bg-') === 0) {
|
||
|
valueBox.css('background-color', '');
|
||
|
if (!valueBox.hasClass(dataColor)) {
|
||
|
valueBox.removeClass('bg-primary bg-info bg-warning bg-danger bg-success');
|
||
|
valueBox.addClass(dataColor);
|
||
|
}
|
||
|
} else {
|
||
|
valueBox.removeClass('bg-primary bg-info bg-warning bg-danger bg-success');
|
||
|
valueBox.css('background-color', dataColor);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// url
|
||
|
var dataHref = valueOutput.attr('data-href');
|
||
|
if (dataHref) {
|
||
|
valueBox.addClass('linked-value');
|
||
|
valueBox.off('click.value-box');
|
||
|
valueBox.on('click.value-box', function(e) {
|
||
|
window.FlexDashboardUtils.showLinkedValue(dataHref);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// check for a valueOutputSpan
|
||
|
if (valueOutputSpan.length > 0) {
|
||
|
handleValueOutput(valueOutputSpan);
|
||
|
}
|
||
|
|
||
|
// if we have a shinyOutput then bind a listener to handle
|
||
|
// new valueOutputSpan values
|
||
|
shinyOutput.on('shiny:value',
|
||
|
function(event) {
|
||
|
var element = $(event.target);
|
||
|
setTimeout(function() {
|
||
|
var valueOutputSpan = element.find('span.value-output');
|
||
|
if (valueOutputSpan.length > 0)
|
||
|
handleValueOutput(valueOutputSpan);
|
||
|
}, 10);
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
</script>
|
||
|
|
||
|
<div id="dashboard-container">
|
||
|
|
||
|
<div id="iris" class="section level1">
|
||
|
<h1>iris</h1>
|
||
|
<div id="gatunki" class="section level2">
|
||
|
<h2>Gatunki</h2>
|
||
|
<div id="gatunki-1" class="section level3">
|
||
|
<h3>Gatunki</h3>
|
||
|
<div class="knitr-options" data-fig-width="576" data-fig-height="460">
|
||
|
|
||
|
</div>
|
||
|
<p><img src="data:image/png;base64,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
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="kolumna-ii" class="section level2">
|
||
|
<h2>Kolumna II</h2>
|
||
|
<div id="szerokość-płatka-1" class="section level3">
|
||
|
<h3>Szerokość płatka (1)</h3>
|
||
|
<div class="knitr-options" data-fig-width="576" data-fig-height="460">
|
||
|
|
||
|
</div>
|
||
|
<p><img src="data:image/png;base64,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
|
||
|
</div>
|
||
|
<div id="szerokość-płatka2" class="section level3">
|
||
|
<h3>Szerokość płatka(2)</h3>
|
||
|
<div class="knitr-options" data-fig-width="576" data-fig-height="460">
|
||
|
|
||
|
</div>
|
||
|
<p><img src="data:image/png;base64,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
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="diamonds" class="section level1">
|
||
|
<h1>diamonds</h1>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
// add bootstrap table styles to pandoc tables
|
||
|
$('tr.header').parent('thead').parent('table').addClass('table table-condensed');
|
||
|
|
||
|
// initialize mathjax
|
||
|
var script = document.createElement("script");
|
||
|
script.type = "text/javascript";
|
||
|
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
|
||
|
document.getElementsByTagName("head")[0].appendChild(script);
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
FlexDashboard.init({
|
||
|
theme: "cosmo",
|
||
|
fillPage: true,
|
||
|
orientation: "columns",
|
||
|
storyboard: false,
|
||
|
defaultFigWidth: 576,
|
||
|
defaultFigHeight: 460,
|
||
|
defaultFigWidthMobile: 360,
|
||
|
defaultFigHeightMobile: 460
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
</body>
|
||
|
</html>
|