├── .bowerrc ├── .gitignore ├── Dockerfile ├── README.md ├── bower.json ├── docker-compose.yml ├── environment.yml ├── gitnoc ├── __init__.py ├── app.py ├── assets.py ├── extensions.py ├── forms │ ├── __init__.py │ └── public.py ├── services │ ├── __init__.py │ ├── cumulative_blame.py │ ├── file_change_rates.py │ ├── metrics.py │ └── settings.py ├── settings.py ├── static │ ├── bower_components │ │ ├── bootstrap │ │ │ ├── .bower.json │ │ │ ├── CHANGELOG.md │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ │ ├── bootstrap-theme.min.css.map │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ ├── bootstrap.css.map │ │ │ │ │ ├── bootstrap.min.css │ │ │ │ │ └── bootstrap.min.css.map │ │ │ │ ├── fonts │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ │ └── js │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ ├── bootstrap.min.js │ │ │ │ │ └── npm.js │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── grunt │ │ │ │ ├── .jshintrc │ │ │ │ ├── bs-commonjs-generator.js │ │ │ │ ├── bs-glyphicons-data-generator.js │ │ │ │ ├── bs-lessdoc-parser.js │ │ │ │ ├── bs-raw-files-generator.js │ │ │ │ ├── configBridge.json │ │ │ │ └── sauce_browsers.yml │ │ │ ├── js │ │ │ │ ├── .jscsrc │ │ │ │ ├── .jshintrc │ │ │ │ ├── affix.js │ │ │ │ ├── alert.js │ │ │ │ ├── button.js │ │ │ │ ├── carousel.js │ │ │ │ ├── collapse.js │ │ │ │ ├── dropdown.js │ │ │ │ ├── modal.js │ │ │ │ ├── popover.js │ │ │ │ ├── scrollspy.js │ │ │ │ ├── tab.js │ │ │ │ ├── tooltip.js │ │ │ │ └── transition.js │ │ │ ├── less │ │ │ │ ├── .csscomb.json │ │ │ │ ├── .csslintrc │ │ │ │ ├── alerts.less │ │ │ │ ├── badges.less │ │ │ │ ├── bootstrap.less │ │ │ │ ├── breadcrumbs.less │ │ │ │ ├── button-groups.less │ │ │ │ ├── buttons.less │ │ │ │ ├── carousel.less │ │ │ │ ├── close.less │ │ │ │ ├── code.less │ │ │ │ ├── component-animations.less │ │ │ │ ├── dropdowns.less │ │ │ │ ├── forms.less │ │ │ │ ├── glyphicons.less │ │ │ │ ├── grid.less │ │ │ │ ├── input-groups.less │ │ │ │ ├── jumbotron.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── media.less │ │ │ │ ├── mixins.less │ │ │ │ ├── mixins │ │ │ │ │ ├── alerts.less │ │ │ │ │ ├── background-variant.less │ │ │ │ │ ├── border-radius.less │ │ │ │ │ ├── buttons.less │ │ │ │ │ ├── center-block.less │ │ │ │ │ ├── clearfix.less │ │ │ │ │ ├── forms.less │ │ │ │ │ ├── gradients.less │ │ │ │ │ ├── grid-framework.less │ │ │ │ │ ├── grid.less │ │ │ │ │ ├── hide-text.less │ │ │ │ │ ├── image.less │ │ │ │ │ ├── labels.less │ │ │ │ │ ├── list-group.less │ │ │ │ │ ├── nav-divider.less │ │ │ │ │ ├── nav-vertical-align.less │ │ │ │ │ ├── opacity.less │ │ │ │ │ ├── pagination.less │ │ │ │ │ ├── panels.less │ │ │ │ │ ├── progress-bar.less │ │ │ │ │ ├── reset-filter.less │ │ │ │ │ ├── reset-text.less │ │ │ │ │ ├── resize.less │ │ │ │ │ ├── responsive-visibility.less │ │ │ │ │ ├── size.less │ │ │ │ │ ├── tab-focus.less │ │ │ │ │ ├── table-row.less │ │ │ │ │ ├── text-emphasis.less │ │ │ │ │ ├── text-overflow.less │ │ │ │ │ └── vendor-prefixes.less │ │ │ │ ├── modals.less │ │ │ │ ├── navbar.less │ │ │ │ ├── navs.less │ │ │ │ ├── normalize.less │ │ │ │ ├── pager.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── popovers.less │ │ │ │ ├── print.less │ │ │ │ ├── progress-bars.less │ │ │ │ ├── responsive-embed.less │ │ │ │ ├── responsive-utilities.less │ │ │ │ ├── scaffolding.less │ │ │ │ ├── tables.less │ │ │ │ ├── theme.less │ │ │ │ ├── thumbnails.less │ │ │ │ ├── tooltip.less │ │ │ │ ├── type.less │ │ │ │ ├── utilities.less │ │ │ │ ├── variables.less │ │ │ │ └── wells.less │ │ │ ├── nuget │ │ │ │ ├── MyGet.ps1 │ │ │ │ ├── bootstrap.less.nuspec │ │ │ │ └── bootstrap.nuspec │ │ │ ├── package.js │ │ │ └── package.json │ │ ├── d3 │ │ │ ├── .bower.json │ │ │ ├── .gitattributes │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── d3.js │ │ │ ├── d3.min.js │ │ │ └── package.js │ │ ├── datatables-buttons │ │ │ ├── .bower.json │ │ │ ├── Contributing.md │ │ │ ├── License.txt │ │ │ ├── Readme.md │ │ │ ├── as3 │ │ │ │ ├── .gitignore │ │ │ │ └── ZeroClipboard.as │ │ │ ├── bower.json │ │ │ ├── css │ │ │ │ ├── buttons.bootstrap.scss │ │ │ │ ├── buttons.dataTables.scss │ │ │ │ ├── buttons.foundation.scss │ │ │ │ ├── buttons.jqueryui.scss │ │ │ │ ├── common.scss │ │ │ │ └── mixins.scss │ │ │ ├── docs │ │ │ │ ├── api │ │ │ │ │ ├── button().action().xml │ │ │ │ │ ├── button().active().xml │ │ │ │ │ ├── button().add().xml │ │ │ │ │ ├── button().disable().xml │ │ │ │ │ ├── button().enable().xml │ │ │ │ │ ├── button().node().xml │ │ │ │ │ ├── button().remove().xml │ │ │ │ │ ├── button().text().xml │ │ │ │ │ ├── button().trigger().xml │ │ │ │ │ ├── button().xml │ │ │ │ │ ├── buttons().action().xml │ │ │ │ │ ├── buttons().active().xml │ │ │ │ │ ├── buttons().container().xml │ │ │ │ │ ├── buttons().containers().xml │ │ │ │ │ ├── buttons().destroy().xml │ │ │ │ │ ├── buttons().disable().xml │ │ │ │ │ ├── buttons().enable().xml │ │ │ │ │ ├── buttons().nodes().xml │ │ │ │ │ ├── buttons().remove().xml │ │ │ │ │ ├── buttons().text().xml │ │ │ │ │ ├── buttons().trigger().xml │ │ │ │ │ ├── buttons().xml │ │ │ │ │ ├── buttons.exportData().xml │ │ │ │ │ ├── buttons.info().xml │ │ │ │ │ └── buttons.resize().xml │ │ │ │ ├── button │ │ │ │ │ ├── collection.xml │ │ │ │ │ ├── columnToggle.xml │ │ │ │ │ ├── columnVisibility.xml │ │ │ │ │ ├── columnsToggle.xml │ │ │ │ │ ├── columnsVisibility.xml │ │ │ │ │ ├── colvis.xml │ │ │ │ │ ├── colvisGroup.xml │ │ │ │ │ ├── colvisRestore.xml │ │ │ │ │ ├── copy.xml │ │ │ │ │ ├── copyFlash.xml │ │ │ │ │ ├── copyHtml5.xml │ │ │ │ │ ├── csv.xml │ │ │ │ │ ├── csvFlash.xml │ │ │ │ │ ├── csvHtml5.xml │ │ │ │ │ ├── excel.xml │ │ │ │ │ ├── excelFlash.xml │ │ │ │ │ ├── excelHtml5.xml │ │ │ │ │ ├── pdf.xml │ │ │ │ │ ├── pdfFlash.xml │ │ │ │ │ ├── pdfHtml5.xml │ │ │ │ │ └── print.xml │ │ │ │ ├── option │ │ │ │ │ ├── buttons.buttons.action.xml │ │ │ │ │ ├── buttons.buttons.available.xml │ │ │ │ │ ├── buttons.buttons.className.xml │ │ │ │ │ ├── buttons.buttons.destroy.xml │ │ │ │ │ ├── buttons.buttons.enabled.xml │ │ │ │ │ ├── buttons.buttons.extend.xml │ │ │ │ │ ├── buttons.buttons.init.xml │ │ │ │ │ ├── buttons.buttons.key.xml │ │ │ │ │ ├── buttons.buttons.name.xml │ │ │ │ │ ├── buttons.buttons.namespace.xml │ │ │ │ │ ├── buttons.buttons.text.xml │ │ │ │ │ ├── buttons.buttons.xml │ │ │ │ │ ├── buttons.dom.button.xml │ │ │ │ │ ├── buttons.dom.buttonContainer.xml │ │ │ │ │ ├── buttons.dom.buttonLiner.xml │ │ │ │ │ ├── buttons.dom.collection.xml │ │ │ │ │ ├── buttons.dom.container.xml │ │ │ │ │ ├── buttons.dom.xml │ │ │ │ │ ├── buttons.name.xml │ │ │ │ │ └── buttons.xml │ │ │ │ └── type │ │ │ │ │ ├── button-group-selector.xml │ │ │ │ │ └── button-selector.xml │ │ │ ├── examples │ │ │ │ ├── api │ │ │ │ │ ├── addRemove.xml │ │ │ │ │ ├── enable.xml │ │ │ │ │ ├── group.xml │ │ │ │ │ ├── index.xml │ │ │ │ │ └── text.xml │ │ │ │ ├── column_visibility │ │ │ │ │ ├── columnGroups.xml │ │ │ │ │ ├── columns.xml │ │ │ │ │ ├── columnsToggle.xml │ │ │ │ │ ├── index.xml │ │ │ │ │ ├── layout.xml │ │ │ │ │ ├── restore.xml │ │ │ │ │ ├── simple.xml │ │ │ │ │ └── text.xml │ │ │ │ ├── flash │ │ │ │ │ ├── copyi18n.xml │ │ │ │ │ ├── filename.xml │ │ │ │ │ ├── hidden.xml │ │ │ │ │ ├── index.xml │ │ │ │ │ ├── pdfMessage.xml │ │ │ │ │ ├── pdfPage.xml │ │ │ │ │ ├── simple.xml │ │ │ │ │ ├── swfPath.xml │ │ │ │ │ └── tsv.xml │ │ │ │ ├── html5 │ │ │ │ │ ├── columns.xml │ │ │ │ │ ├── copyi18n.xml │ │ │ │ │ ├── filename.xml │ │ │ │ │ ├── index.xml │ │ │ │ │ ├── pdfImage.xml │ │ │ │ │ ├── pdfMessage.xml │ │ │ │ │ ├── pdfOpen.xml │ │ │ │ │ ├── pdfPage.xml │ │ │ │ │ ├── simple.xml │ │ │ │ │ └── tsv.xml │ │ │ │ ├── index.xml │ │ │ │ ├── initialisation │ │ │ │ │ ├── className.xml │ │ │ │ │ ├── collections.xml │ │ │ │ │ ├── custom.xml │ │ │ │ │ ├── export.xml │ │ │ │ │ ├── index.xml │ │ │ │ │ ├── keys.xml │ │ │ │ │ ├── multiple.xml │ │ │ │ │ ├── new.xml │ │ │ │ │ ├── plugins.xml │ │ │ │ │ └── simple.xml │ │ │ │ ├── print │ │ │ │ │ ├── autoPrint.xml │ │ │ │ │ ├── columns.xml │ │ │ │ │ ├── customisation.xml │ │ │ │ │ ├── index.xml │ │ │ │ │ ├── message.xml │ │ │ │ │ ├── select.xml │ │ │ │ │ └── simple.xml │ │ │ │ └── styling │ │ │ │ │ ├── bootstrap.xml │ │ │ │ │ ├── foundation.xml │ │ │ │ │ ├── index.xml │ │ │ │ │ └── jqueryui.xml │ │ │ ├── js │ │ │ │ ├── buttons.bootstrap.js │ │ │ │ ├── buttons.colVis.js │ │ │ │ ├── buttons.flash.js │ │ │ │ ├── buttons.foundation.js │ │ │ │ ├── buttons.html5.js │ │ │ │ ├── buttons.jqueryui.js │ │ │ │ ├── buttons.print.js │ │ │ │ └── dataTables.buttons.js │ │ │ ├── make.sh │ │ │ └── swf │ │ │ │ └── flashExport.swf │ │ ├── datatables │ │ │ ├── .bower.json │ │ │ ├── Contributing.md │ │ │ ├── Readme.md │ │ │ ├── bower.json │ │ │ ├── license.txt │ │ │ └── media │ │ │ │ ├── css │ │ │ │ ├── dataTables.bootstrap.css │ │ │ │ ├── dataTables.bootstrap.min.css │ │ │ │ ├── dataTables.foundation.css │ │ │ │ ├── dataTables.foundation.min.css │ │ │ │ ├── dataTables.jqueryui.css │ │ │ │ ├── dataTables.jqueryui.min.css │ │ │ │ ├── jquery.dataTables.css │ │ │ │ ├── jquery.dataTables.min.css │ │ │ │ └── jquery.dataTables_themeroller.css │ │ │ │ ├── images │ │ │ │ ├── Sorting icons.psd │ │ │ │ ├── favicon.ico │ │ │ │ ├── sort_asc.png │ │ │ │ ├── sort_asc_disabled.png │ │ │ │ ├── sort_both.png │ │ │ │ ├── sort_desc.png │ │ │ │ └── sort_desc_disabled.png │ │ │ │ └── js │ │ │ │ ├── dataTables.bootstrap.js │ │ │ │ ├── dataTables.bootstrap.min.js │ │ │ │ ├── dataTables.foundation.js │ │ │ │ ├── dataTables.foundation.min.js │ │ │ │ ├── dataTables.jqueryui.js │ │ │ │ ├── dataTables.jqueryui.min.js │ │ │ │ ├── jquery.dataTables.js │ │ │ │ ├── jquery.dataTables.min.js │ │ │ │ └── jquery.js │ │ ├── jquery │ │ │ ├── .bower.json │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── jquery.js │ │ │ │ ├── jquery.min.js │ │ │ │ └── jquery.min.map │ │ │ └── src │ │ │ │ ├── ajax.js │ │ │ │ ├── ajax │ │ │ │ ├── jsonp.js │ │ │ │ ├── load.js │ │ │ │ ├── parseJSON.js │ │ │ │ ├── parseXML.js │ │ │ │ ├── script.js │ │ │ │ ├── var │ │ │ │ │ ├── nonce.js │ │ │ │ │ └── rquery.js │ │ │ │ └── xhr.js │ │ │ │ ├── attributes.js │ │ │ │ ├── attributes │ │ │ │ ├── attr.js │ │ │ │ ├── classes.js │ │ │ │ ├── prop.js │ │ │ │ ├── support.js │ │ │ │ └── val.js │ │ │ │ ├── callbacks.js │ │ │ │ ├── core.js │ │ │ │ ├── core │ │ │ │ ├── access.js │ │ │ │ ├── init.js │ │ │ │ ├── parseHTML.js │ │ │ │ ├── ready.js │ │ │ │ └── var │ │ │ │ │ └── rsingleTag.js │ │ │ │ ├── css.js │ │ │ │ ├── css │ │ │ │ ├── addGetHookIf.js │ │ │ │ ├── curCSS.js │ │ │ │ ├── defaultDisplay.js │ │ │ │ ├── hiddenVisibleSelectors.js │ │ │ │ ├── support.js │ │ │ │ ├── swap.js │ │ │ │ └── var │ │ │ │ │ ├── cssExpand.js │ │ │ │ │ ├── getStyles.js │ │ │ │ │ ├── isHidden.js │ │ │ │ │ ├── rmargin.js │ │ │ │ │ └── rnumnonpx.js │ │ │ │ ├── data.js │ │ │ │ ├── data │ │ │ │ ├── Data.js │ │ │ │ ├── accepts.js │ │ │ │ └── var │ │ │ │ │ ├── data_priv.js │ │ │ │ │ └── data_user.js │ │ │ │ ├── deferred.js │ │ │ │ ├── deprecated.js │ │ │ │ ├── dimensions.js │ │ │ │ ├── effects.js │ │ │ │ ├── effects │ │ │ │ ├── Tween.js │ │ │ │ └── animatedSelector.js │ │ │ │ ├── event.js │ │ │ │ ├── event │ │ │ │ ├── ajax.js │ │ │ │ ├── alias.js │ │ │ │ └── support.js │ │ │ │ ├── exports │ │ │ │ ├── amd.js │ │ │ │ └── global.js │ │ │ │ ├── intro.js │ │ │ │ ├── jquery.js │ │ │ │ ├── manipulation.js │ │ │ │ ├── manipulation │ │ │ │ ├── _evalUrl.js │ │ │ │ ├── support.js │ │ │ │ └── var │ │ │ │ │ └── rcheckableType.js │ │ │ │ ├── offset.js │ │ │ │ ├── outro.js │ │ │ │ ├── queue.js │ │ │ │ ├── queue │ │ │ │ └── delay.js │ │ │ │ ├── selector-native.js │ │ │ │ ├── selector-sizzle.js │ │ │ │ ├── selector.js │ │ │ │ ├── serialize.js │ │ │ │ ├── sizzle │ │ │ │ └── dist │ │ │ │ │ ├── sizzle.js │ │ │ │ │ ├── sizzle.min.js │ │ │ │ │ └── sizzle.min.map │ │ │ │ ├── traversing.js │ │ │ │ ├── traversing │ │ │ │ ├── findFilter.js │ │ │ │ └── var │ │ │ │ │ └── rneedsContext.js │ │ │ │ ├── var │ │ │ │ ├── arr.js │ │ │ │ ├── class2type.js │ │ │ │ ├── concat.js │ │ │ │ ├── hasOwn.js │ │ │ │ ├── indexOf.js │ │ │ │ ├── pnum.js │ │ │ │ ├── push.js │ │ │ │ ├── rnotwhite.js │ │ │ │ ├── slice.js │ │ │ │ ├── strundefined.js │ │ │ │ ├── support.js │ │ │ │ └── toString.js │ │ │ │ └── wrap.js │ │ └── nvd3 │ │ │ ├── .bower.json │ │ │ ├── bower.json │ │ │ └── build │ │ │ ├── nv.d3.css │ │ │ ├── nv.d3.js │ │ │ ├── nv.d3.min.css │ │ │ └── nv.d3.min.js │ ├── css │ │ ├── jquery.tagsinput.css │ │ └── main.css │ ├── images │ │ └── preloader.gif │ ├── js │ │ ├── cumulative_blame.js │ │ ├── file_change_rates.js │ │ ├── jquery.tagsinput.js │ │ ├── punchcard.js │ │ └── queue.js │ └── public │ │ ├── css │ │ └── common.css │ │ └── js │ │ ├── common.js │ │ ├── cumulativeblame.js │ │ └── metrics.js ├── templates │ ├── 401.html │ ├── 404.html │ ├── 500.html │ ├── base.html │ ├── footer.html │ ├── macros │ │ └── macros.html │ ├── nav.html │ └── public │ │ ├── blame.html │ │ ├── filechangerates.html │ │ ├── index.html │ │ ├── metrics.html │ │ ├── profile.html │ │ ├── repo_detail.html │ │ └── settings.html ├── utils.py └── views │ ├── __init__.py │ ├── admin.py │ ├── blame.py │ ├── metrics.py │ └── risk.py ├── img ├── cumulative_blame_example.png ├── metrics_example.png ├── profile_select_example.png ├── risk_example.png └── settings_example.png ├── manage.py └── requirements.txt /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "./gitnoc/static/bower_components" 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Python template 3 | # Byte-compiled / optimized / DLL files 4 | __pycache__/ 5 | *.py[cod] 6 | *$py.class 7 | *.out 8 | # C extensions 9 | *.so 10 | nohup.out 11 | *.rdb 12 | .idea 13 | .idea/ 14 | 15 | # Distribution / packaging 16 | .Python 17 | env/ 18 | build/ 19 | develop-eggs/ 20 | dist/ 21 | downloads/ 22 | settings.json 23 | gitnoc/static/data/* 24 | eggs/ 25 | .eggs/ 26 | .webassets-cache/ 27 | lib/ 28 | lib64/ 29 | parts/ 30 | sdist/ 31 | var/ 32 | *.egg-info/ 33 | .installed.cfg 34 | *.egg 35 | 36 | # PyInstaller 37 | # Usually these files are written by a python script from a template 38 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 39 | *.manifest 40 | *.spec 41 | 42 | # Installer logs 43 | pip-log.txt 44 | pip-delete-this-directory.txt 45 | 46 | # Unit test / coverage reports 47 | htmlcov/ 48 | .tox/ 49 | .coverage 50 | .coverage.* 51 | .cache 52 | nosetests.xml 53 | coverage.xml 54 | *,cover 55 | 56 | # Translations 57 | *.mo 58 | *.pot 59 | 60 | # Django stuff: 61 | *.log 62 | 63 | # Sphinx documentation 64 | docs/_build/ 65 | 66 | # PyBuilder 67 | target/ 68 | 69 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM continuumio/miniconda3:latest 2 | 3 | ADD . /gitnoc 4 | WORKDIR /gitnoc 5 | 6 | # Add conda-forge channel 7 | RUN conda config --add channels conda-forge && conda env create -n gitnoc 8 | RUN apt-get install node && npm install -g bower && bower install 9 | 10 | # activate the app environment 11 | ENV PATH /opt/conda/envs/gitnoc/bin:$PATH -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gitnoc", 3 | "version": "0.0.0", 4 | "license": "BSD", 5 | "private": true, 6 | "ignore": [ 7 | "**/.*", 8 | "node_modules", 9 | "bower_components", 10 | "test", 11 | "tests" 12 | ], 13 | "dependencies": { 14 | "bootstrap": "~3.3.4", 15 | "d3": "~3.5.5", 16 | "nvd3": "~1.7.1", 17 | "jquery": "~2.1.3", 18 | "datatables": "~1.10.6", 19 | "datatables-buttons": "~1.0.3" 20 | }, 21 | "resolutions": { 22 | "d3": "~3.5.5" 23 | } 24 | } -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | web: 4 | build: . 5 | image: gitnoc 6 | container_name: gitnoc_web 7 | environment: 8 | LOCAL_SETTINGS: /gitnoc/settings.cfg 9 | command: python manage.py server-prod 10 | ports: 11 | - "5050:5050" 12 | volumes: 13 | - .:/gitnoc 14 | depends_on: 15 | - redis 16 | worker: 17 | image: gitnoc 18 | container_name: gitnoc_worker 19 | environment: 20 | LOCAL_SETTINGS: /gitnoc/settings.cfg 21 | command: python manage.py runworker 22 | volumes: 23 | - .:/gitnoc 24 | depends_on: 25 | - redis 26 | redis: 27 | image: redis:3.2 -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | name: gitnoc 2 | dependencies: 3 | - pip=8.1.2=py35_0 4 | - python=3.5.2=2 5 | - setuptools=25.1.6=py35_0 6 | - wheel=0.29.0=py35_0 7 | - pip: 8 | - Flask 9 | - git+https://github.com/wdm0006/git-pandas.git 10 | - Flask-WTF==0.11 11 | - WTForms==2.0.2 12 | - wtforms-components 13 | - Redis >= 2.6.0 14 | - rq 15 | - Flask-Cache 16 | - pandas>=0.17.0 17 | - Flask-Script 18 | - Flask-Assets==0.10 19 | - cssmin>=0.2.0 20 | - jsmin>=2.0.11 21 | - requests -------------------------------------------------------------------------------- /gitnoc/__init__.py: -------------------------------------------------------------------------------- 1 | __author__ = 'willmcginnis' 2 | -------------------------------------------------------------------------------- /gitnoc/assets.py: -------------------------------------------------------------------------------- 1 | from flask_assets import Bundle, Environment 2 | 3 | css = Bundle( 4 | "./bower_components/bootstrap/dist/css/bootstrap.min.css", 5 | "./bower_components/nvd3/build/nv.d3.min.css", 6 | "./bower_components/datatables/media/css/jquery.dataTables.min.css", 7 | "./bower_components/datatables-buttons/css/buttons.dataTables.scss", 8 | "./css/main.css", 9 | filters="cssmin", 10 | output="public/css/common.css" 11 | ) 12 | 13 | js = Bundle( 14 | "./js/queue.js", 15 | "./bower_components/jquery/dist/jquery.min.js", 16 | "./bower_components/bootstrap/dist/js/bootstrap.min.js", 17 | "./bower_components/d3/d3.min.js", 18 | "./bower_components/nvd3/build/nv.d3.min.js", 19 | "./bower_components/datatables/media/js/jquery.dataTables.min.js", 20 | "./bower_components/datatables-buttons/js/dataTables.buttons.js", 21 | filters='jsmin', 22 | output="public/js/common.js" 23 | ) 24 | 25 | cumulative_blame_js = Bundle( 26 | "./js/cumulative_blame.js", 27 | filters='jsmin', 28 | output="public/js/cumulativeblame.js" 29 | ) 30 | 31 | metrics_js = Bundle( 32 | "./js/punchcard.js", 33 | filters='jsmin', 34 | output="public/js/metrics.js" 35 | ) 36 | assets = Environment() 37 | 38 | assets.register("js_all", js) 39 | assets.register("cumulative_blame_js", cumulative_blame_js) 40 | assets.register("metrics_js", metrics_js) 41 | assets.register("css_all", css) 42 | -------------------------------------------------------------------------------- /gitnoc/extensions.py: -------------------------------------------------------------------------------- 1 | """ 2 | .. module:: 3 | :platform: Unix, Linux, Windows 4 | :synopsis: 5 | 6 | .. moduleauthor:: Will McGinnis 7 | 8 | """ 9 | from gitpandas.cache import RedisDFCache 10 | from flask_cache import Cache 11 | 12 | 13 | __author__ = 'willmcginnis' 14 | 15 | cache = Cache() 16 | gp_cache = RedisDFCache(max_keys=100000, db=3, ttl=3600 * 24 * 7) -------------------------------------------------------------------------------- /gitnoc/forms/__init__.py: -------------------------------------------------------------------------------- 1 | __author__ = 'willmcginnis' 2 | -------------------------------------------------------------------------------- /gitnoc/services/__init__.py: -------------------------------------------------------------------------------- 1 | __author__ = 'willmcginnis' 2 | -------------------------------------------------------------------------------- /gitnoc/services/cumulative_blame.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | from gitnoc.app import gp_cache 4 | from gitpandas import ProjectDirectory 5 | from .settings import get_settings, get_file_prefix 6 | 7 | __author__ = 'willmcginnis' 8 | 9 | 10 | def cumulative_blame(by, file_stub): 11 | settings = get_settings() 12 | project_dir = settings.get('project_dir', os.getcwd()) 13 | extensions = settings.get('extensions', None) 14 | ignore_dir = settings.get('ignore_dir', None) 15 | 16 | repo = ProjectDirectory(working_dir=project_dir, cache_backend=gp_cache) 17 | print(extensions) 18 | print(ignore_dir) 19 | print(by) 20 | cb = repo.cumulative_blame(branch='master', ignore_globs=['*/%s/*' % (x, ) for x in ignore_dir], include_globs=['*.%s' % (x, ) for x in extensions], by=by, skip=3, limit=300) 21 | cb = cb[~cb.index.duplicated()] 22 | t = json.loads(cb.to_json(orient='columns')) 23 | 24 | d3_data = [] 25 | for committer in t.keys(): 26 | blob = dict() 27 | blob['key'] = committer 28 | blob['values'] = [] 29 | for data_point in t[committer].keys(): 30 | blob['values'].append([int(float(data_point)), t[committer][data_point]]) 31 | blob['values'] = sorted(blob['values'], key=lambda x: x[0]) 32 | d3_data.append(blob) 33 | 34 | # dump the data to disk 35 | filename = get_file_prefix() + file_stub 36 | json.dump(d3_data, open(str(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + os.sep + 'static' + os.sep + 'data' + os.sep + filename, 'w'), indent=4) 37 | 38 | return True 39 | -------------------------------------------------------------------------------- /gitnoc/services/file_change_rates.py: -------------------------------------------------------------------------------- 1 | from .settings import get_settings 2 | from gitpandas import ProjectDirectory 3 | from gitnoc.app import gp_cache 4 | import json 5 | import os 6 | 7 | __author__ = 'willmcginnis' 8 | 9 | 10 | def get_file_change_rates(): 11 | settings = get_settings() 12 | project_dir = settings.get('project_dir', os.getcwd()) 13 | extensions = settings.get('extensions', None) 14 | ignore_dir = settings.get('ignore_dir', None) 15 | 16 | repo = ProjectDirectory(working_dir=project_dir, cache_backend=gp_cache) 17 | cb = repo.file_change_rates(ignore_globs=['*/%s/*' % (x, ) for x in ignore_dir], include_globs=['*.%s' % (x, ) for x in extensions], coverage=True, days=7) 18 | cb.reset_index(level=0, inplace=True) 19 | data = json.loads(cb.to_json(orient='records')) 20 | 21 | output = {'data': []} 22 | for blob in data: 23 | row = [blob.get(x, None) for x in ['index', 'repository', 'unique_committers', 'net_rate_of_change', 'edit_rate', 'total_lines', 'coverage']] 24 | row = [round(x, 2) if isinstance(x, float) else x for x in row] 25 | output['data'].append(row) 26 | 27 | return output -------------------------------------------------------------------------------- /gitnoc/settings.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | __author__ = 'willmcginnis' 4 | 5 | 6 | class Config(object): 7 | SECRET_KEY = 'foobar' 8 | SECURITY_PASSWORD_HASH = 'bcrypt' 9 | SECURITY_PASSWORD_SALT = SECRET_KEY 10 | APP_DIR = os.path.abspath(os.path.dirname(__file__)) # This directory 11 | PROJECT_ROOT = os.path.abspath(os.path.join(APP_DIR, os.pardir)) 12 | BCRYPT_LOG_ROUNDS = 13 13 | ASSETS_DEBUG = False 14 | DEBUG_TB_ENABLED = False # Disable Debug toolbar 15 | DEBUG_TB_INTERCEPT_REDIRECTS = False 16 | 17 | 18 | class LocalDevConfig(Config): 19 | ASSETS_DEBUG = True 20 | DEBUG = True 21 | REDIS_URL = 'http://localhost:6379/' 22 | QUEUES = ['default'] 23 | CACHE_TYPE = 'redis' 24 | CACHE_REDIS_HOST = "localhost" 25 | CACHE_REDIS_PORT = "6379" 26 | 27 | 28 | class DockerConfig(Config): 29 | ASSETS_DEBUG = True 30 | DEBUG = False 31 | REDIS_URL = 'redis://redis:6379/0' 32 | QUEUES = ['default'] 33 | CACHE_TYPE = 'redis' 34 | CACHE_REDIS_HOST = "redis" 35 | CACHE_REDIS_PORT = "6379" 36 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", 4 | "keywords": [ 5 | "css", 6 | "js", 7 | "less", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "web" 13 | ], 14 | "homepage": "http://getbootstrap.com", 15 | "license": "MIT", 16 | "moduleType": "globals", 17 | "main": [ 18 | "less/bootstrap.less", 19 | "dist/js/bootstrap.js" 20 | ], 21 | "ignore": [ 22 | "/.*", 23 | "_config.yml", 24 | "CNAME", 25 | "composer.json", 26 | "CONTRIBUTING.md", 27 | "docs", 28 | "js/tests", 29 | "test-infra" 30 | ], 31 | "dependencies": { 32 | "jquery": "1.9.1 - 2" 33 | }, 34 | "version": "3.3.6", 35 | "_release": "3.3.6", 36 | "_resolution": { 37 | "type": "version", 38 | "tag": "v3.3.6", 39 | "commit": "81df608a40bf0629a1dc08e584849bb1e43e0b7a" 40 | }, 41 | "_source": "git://github.com/twbs/bootstrap.git", 42 | "_target": "~3.3.4", 43 | "_originalSource": "bootstrap" 44 | } -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs. 2 | 3 | See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. 4 | 5 | Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release. 6 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2015 Twitter, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", 4 | "keywords": [ 5 | "css", 6 | "js", 7 | "less", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "web" 13 | ], 14 | "homepage": "http://getbootstrap.com", 15 | "license": "MIT", 16 | "moduleType": "globals", 17 | "main": [ 18 | "less/bootstrap.less", 19 | "dist/js/bootstrap.js" 20 | ], 21 | "ignore": [ 22 | "/.*", 23 | "_config.yml", 24 | "CNAME", 25 | "composer.json", 26 | "CONTRIBUTING.md", 27 | "docs", 28 | "js/tests", 29 | "test-infra" 30 | ], 31 | "dependencies": { 32 | "jquery": "1.9.1 - 2" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/grunt/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends" : "../js/.jshintrc", 3 | "asi" : false, 4 | "browser" : false, 5 | "es3" : false, 6 | "node" : true 7 | } 8 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/grunt/bs-commonjs-generator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for the CommonJS module generation 3 | * http://getbootstrap.com 4 | * Copyright 2014-2015 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var fs = require('fs'); 11 | var path = require('path'); 12 | 13 | var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n'; 14 | 15 | module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) { 16 | var destDir = path.dirname(destFilepath); 17 | 18 | function srcPathToDestRequire(srcFilepath) { 19 | var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/'); 20 | return 'require(\'' + requirePath + '\')'; 21 | } 22 | 23 | var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n'); 24 | try { 25 | fs.writeFileSync(destFilepath, moduleOutputJs); 26 | } catch (err) { 27 | grunt.fail.warn(err); 28 | } 29 | grunt.log.writeln('File ' + destFilepath.cyan + ' created.'); 30 | }; 31 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for Glyphicons data generation 3 | * http://getbootstrap.com 4 | * Copyright 2014-2015 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var fs = require('fs'); 11 | 12 | module.exports = function generateGlyphiconsData(grunt) { 13 | // Pass encoding, utf8, so `readFileSync` will return a string instead of a 14 | // buffer 15 | var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8'); 16 | var glyphiconsLines = glyphiconsFile.split('\n'); 17 | 18 | // Use any line that starts with ".glyphicon-" and capture the class name 19 | var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/; 20 | var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' + 21 | '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n'; 22 | var glyphiconsYml = 'docs/_data/glyphicons.yml'; 23 | for (var i = 0, len = glyphiconsLines.length; i < len; i++) { 24 | var match = glyphiconsLines[i].match(iconClassName); 25 | 26 | if (match !== null) { 27 | glyphiconsData += '- ' + match[1] + '\n'; 28 | } 29 | } 30 | 31 | // Create the `_data` directory if it doesn't already exist 32 | if (!fs.existsSync('docs/_data')) { 33 | fs.mkdirSync('docs/_data'); 34 | } 35 | 36 | try { 37 | fs.writeFileSync(glyphiconsYml, glyphiconsData); 38 | } catch (err) { 39 | grunt.fail.warn(err); 40 | } 41 | grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.'); 42 | }; 43 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/grunt/bs-raw-files-generator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for generating raw-files.min.js for the Customizer 3 | * http://getbootstrap.com 4 | * Copyright 2014-2015 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var fs = require('fs'); 11 | var btoa = require('btoa'); 12 | var glob = require('glob'); 13 | 14 | function getFiles(type) { 15 | var files = {}; 16 | var recursive = type === 'less'; 17 | var globExpr = recursive ? '/**/*' : '/*'; 18 | glob.sync(type + globExpr) 19 | .filter(function (path) { 20 | return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path); 21 | }) 22 | .forEach(function (fullPath) { 23 | var relativePath = fullPath.replace(/^[^/]+\//, ''); 24 | files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'); 25 | }); 26 | return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'; 27 | } 28 | 29 | module.exports = function generateRawFilesJs(grunt, banner) { 30 | if (!banner) { 31 | banner = ''; 32 | } 33 | var dirs = ['js', 'less', 'fonts']; 34 | var files = banner + dirs.map(getFiles).reduce(function (combined, file) { 35 | return combined + file; 36 | }, ''); 37 | var rawFilesJs = 'docs/assets/js/raw-files.min.js'; 38 | try { 39 | fs.writeFileSync(rawFilesJs, files); 40 | } catch (err) { 41 | grunt.fail.warn(err); 42 | } 43 | grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.'); 44 | }; 45 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/grunt/configBridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "paths": { 3 | "customizerJs": [ 4 | "../assets/js/vendor/autoprefixer.js", 5 | "../assets/js/vendor/less.min.js", 6 | "../assets/js/vendor/jszip.min.js", 7 | "../assets/js/vendor/uglify.min.js", 8 | "../assets/js/vendor/Blob.js", 9 | "../assets/js/vendor/FileSaver.js", 10 | "../assets/js/raw-files.min.js", 11 | "../assets/js/src/customizer.js" 12 | ], 13 | "docsJs": [ 14 | "../assets/js/vendor/holder.min.js", 15 | "../assets/js/vendor/ZeroClipboard.min.js", 16 | "../assets/js/vendor/anchor.js", 17 | "../assets/js/src/application.js" 18 | ] 19 | }, 20 | "config": { 21 | "autoprefixerBrowsers": [ 22 | "Android 2.3", 23 | "Android >= 4", 24 | "Chrome >= 20", 25 | "Firefox >= 24", 26 | "Explorer >= 8", 27 | "iOS >= 6", 28 | "Opera >= 12", 29 | "Safari >= 6" 30 | ], 31 | "jqueryCheck": [ 32 | "if (typeof jQuery === 'undefined') {", 33 | " throw new Error('Bootstrap\\'s JavaScript requires jQuery')", 34 | "}\n" 35 | ], 36 | "jqueryVersionCheck": [ 37 | "+function ($) {", 38 | " 'use strict';", 39 | " var version = $.fn.jquery.split(' ')[0].split('.')", 40 | " if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {", 41 | " throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')", 42 | " }", 43 | "}(jQuery);\n\n" 44 | ] 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/js/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "asi" : true, 3 | "browser" : true, 4 | "eqeqeq" : false, 5 | "eqnull" : true, 6 | "es3" : true, 7 | "expr" : true, 8 | "jquery" : true, 9 | "latedef" : true, 10 | "laxbreak" : true, 11 | "nonbsp" : true, 12 | "strict" : true, 13 | "undef" : true, 14 | "unused" : true 15 | } 16 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } 20 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: middle; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | 32 | .btn-xs &, 33 | .btn-group-xs > .btn & { 34 | top: 0; 35 | padding: 1px 5px; 36 | } 37 | 38 | // Hover state, but only for links 39 | a& { 40 | &:hover, 41 | &:focus { 42 | color: @badge-link-hover-color; 43 | text-decoration: none; 44 | cursor: pointer; 45 | } 46 | } 47 | 48 | // Account for badges in navs 49 | .list-group-item.active > &, 50 | .nav-pills > .active > a > & { 51 | color: @badge-active-color; 52 | background-color: @badge-active-bg; 53 | } 54 | 55 | .list-group-item > & { 56 | float: right; 57 | } 58 | 59 | .list-group-item > & + & { 60 | margin-right: 5px; 61 | } 62 | 63 | .nav-pills > li > a > & { 64 | margin-left: 3px; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | // Core variables and mixins 8 | @import "variables.less"; 9 | @import "mixins.less"; 10 | 11 | // Reset and dependencies 12 | @import "normalize.less"; 13 | @import "print.less"; 14 | @import "glyphicons.less"; 15 | 16 | // Core CSS 17 | @import "scaffolding.less"; 18 | @import "type.less"; 19 | @import "code.less"; 20 | @import "grid.less"; 21 | @import "tables.less"; 22 | @import "forms.less"; 23 | @import "buttons.less"; 24 | 25 | // Components 26 | @import "component-animations.less"; 27 | @import "dropdowns.less"; 28 | @import "button-groups.less"; 29 | @import "input-groups.less"; 30 | @import "navs.less"; 31 | @import "navbar.less"; 32 | @import "breadcrumbs.less"; 33 | @import "pagination.less"; 34 | @import "pager.less"; 35 | @import "labels.less"; 36 | @import "badges.less"; 37 | @import "jumbotron.less"; 38 | @import "thumbnails.less"; 39 | @import "alerts.less"; 40 | @import "progress-bars.less"; 41 | @import "media.less"; 42 | @import "list-group.less"; 43 | @import "panels.less"; 44 | @import "responsive-embed.less"; 45 | @import "wells.less"; 46 | @import "close.less"; 47 | 48 | // Components w/ JavaScript 49 | @import "modals.less"; 50 | @import "tooltip.less"; 51 | @import "popovers.less"; 52 | @import "carousel.less"; 53 | 54 | // Utility classes 55 | @import "utilities.less"; 56 | @import "responsive-utilities.less"; 57 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 27 | button& { 28 | padding: 0; 29 | cursor: pointer; 30 | background: transparent; 31 | border: 0; 32 | -webkit-appearance: none; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | border-radius: @border-radius-base; 21 | } 22 | 23 | // User input typically entered via keyboard 24 | kbd { 25 | padding: 2px 4px; 26 | font-size: 90%; 27 | color: @kbd-color; 28 | background-color: @kbd-bg; 29 | border-radius: @border-radius-small; 30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 31 | 32 | kbd { 33 | padding: 0; 34 | font-size: 100%; 35 | font-weight: bold; 36 | box-shadow: none; 37 | } 38 | } 39 | 40 | // Blocks of code 41 | pre { 42 | display: block; 43 | padding: ((@line-height-computed - 1) / 2); 44 | margin: 0 0 (@line-height-computed / 2); 45 | font-size: (@font-size-base - 1); // 14px to 13px 46 | line-height: @line-height-base; 47 | word-break: break-all; 48 | word-wrap: break-word; 49 | color: @pre-color; 50 | background-color: @pre-bg; 51 | border: 1px solid @pre-border-color; 52 | border-radius: @border-radius-base; 53 | 54 | // Account for some code outputs that place code tags in pre tags 55 | code { 56 | padding: 0; 57 | font-size: inherit; 58 | color: inherit; 59 | white-space: pre-wrap; 60 | background-color: transparent; 61 | border-radius: 0; 62 | } 63 | } 64 | 65 | // Enable scrollable blocks of code 66 | .pre-scrollable { 67 | max-height: @pre-scrollable-max-height; 68 | overflow-y: scroll; 69 | } 70 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition-property(~"height, visibility"); 31 | .transition-duration(.35s); 32 | .transition-timing-function(ease); 33 | } 34 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding-top: @jumbotron-padding; 8 | padding-bottom: @jumbotron-padding; 9 | margin-bottom: @jumbotron-padding; 10 | color: @jumbotron-color; 11 | background-color: @jumbotron-bg; 12 | 13 | h1, 14 | .h1 { 15 | color: @jumbotron-heading-color; 16 | } 17 | 18 | p { 19 | margin-bottom: (@jumbotron-padding / 2); 20 | font-size: @jumbotron-font-size; 21 | font-weight: 200; 22 | } 23 | 24 | > hr { 25 | border-top-color: darken(@jumbotron-bg, 10%); 26 | } 27 | 28 | .container &, 29 | .container-fluid & { 30 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 31 | padding-left: (@grid-gutter-width / 2); 32 | padding-right: (@grid-gutter-width / 2); 33 | } 34 | 35 | .container { 36 | max-width: 100%; 37 | } 38 | 39 | @media screen and (min-width: @screen-sm-min) { 40 | padding-top: (@jumbotron-padding * 1.6); 41 | padding-bottom: (@jumbotron-padding * 1.6); 42 | 43 | .container &, 44 | .container-fluid & { 45 | padding-left: (@jumbotron-padding * 2); 46 | padding-right: (@jumbotron-padding * 2); 47 | } 48 | 49 | h1, 50 | .h1 { 51 | font-size: @jumbotron-heading-font-size; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | a& { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/media.less: -------------------------------------------------------------------------------- 1 | .media { 2 | // Proper spacing between instances of .media 3 | margin-top: 15px; 4 | 5 | &:first-child { 6 | margin-top: 0; 7 | } 8 | } 9 | 10 | .media, 11 | .media-body { 12 | zoom: 1; 13 | overflow: hidden; 14 | } 15 | 16 | .media-body { 17 | width: 10000px; 18 | } 19 | 20 | .media-object { 21 | display: block; 22 | 23 | // Fix collapse in webkit from max-width: 100% and display: table-cell. 24 | &.img-thumbnail { 25 | max-width: none; 26 | } 27 | } 28 | 29 | .media-right, 30 | .media > .pull-right { 31 | padding-left: 10px; 32 | } 33 | 34 | .media-left, 35 | .media > .pull-left { 36 | padding-right: 10px; 37 | } 38 | 39 | .media-left, 40 | .media-right, 41 | .media-body { 42 | display: table-cell; 43 | vertical-align: top; 44 | } 45 | 46 | .media-middle { 47 | vertical-align: middle; 48 | } 49 | 50 | .media-bottom { 51 | vertical-align: bottom; 52 | } 53 | 54 | // Reset margins on headings for tighter default spacing 55 | .media-heading { 56 | margin-top: 0; 57 | margin-bottom: 5px; 58 | } 59 | 60 | // Media list variation 61 | // 62 | // Undo default ul/ol styles 63 | .media-list { 64 | padding-left: 0; 65 | list-style: none; 66 | } 67 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text.less"; 6 | @import "mixins/opacity.less"; 7 | @import "mixins/image.less"; 8 | @import "mixins/labels.less"; 9 | @import "mixins/reset-filter.less"; 10 | @import "mixins/resize.less"; 11 | @import "mixins/responsive-visibility.less"; 12 | @import "mixins/size.less"; 13 | @import "mixins/tab-focus.less"; 14 | @import "mixins/reset-text.less"; 15 | @import "mixins/text-emphasis.less"; 16 | @import "mixins/text-overflow.less"; 17 | @import "mixins/vendor-prefixes.less"; 18 | 19 | // Components 20 | @import "mixins/alerts.less"; 21 | @import "mixins/buttons.less"; 22 | @import "mixins/panels.less"; 23 | @import "mixins/pagination.less"; 24 | @import "mixins/list-group.less"; 25 | @import "mixins/nav-divider.less"; 26 | @import "mixins/forms.less"; 27 | @import "mixins/progress-bar.less"; 28 | @import "mixins/table-row.less"; 29 | 30 | // Skins 31 | @import "mixins/background-variant.less"; 32 | @import "mixins/border-radius.less"; 33 | @import "mixins/gradients.less"; 34 | 35 | // Layout 36 | @import "mixins/clearfix.less"; 37 | @import "mixins/center-block.less"; 38 | @import "mixins/nav-vertical-align.less"; 39 | @import "mixins/grid-framework.less"; 40 | @import "mixins/grid.less"; 41 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover, 6 | a&:focus { 7 | background-color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/buttons.less: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | .button-variant(@color; @background; @border) { 7 | color: @color; 8 | background-color: @background; 9 | border-color: @border; 10 | 11 | &:focus, 12 | &.focus { 13 | color: @color; 14 | background-color: darken(@background, 10%); 15 | border-color: darken(@border, 25%); 16 | } 17 | &:hover { 18 | color: @color; 19 | background-color: darken(@background, 10%); 20 | border-color: darken(@border, 12%); 21 | } 22 | &:active, 23 | &.active, 24 | .open > .dropdown-toggle& { 25 | color: @color; 26 | background-color: darken(@background, 10%); 27 | border-color: darken(@border, 12%); 28 | 29 | &:hover, 30 | &:focus, 31 | &.focus { 32 | color: @color; 33 | background-color: darken(@background, 17%); 34 | border-color: darken(@border, 25%); 35 | } 36 | } 37 | &:active, 38 | &.active, 39 | .open > .dropdown-toggle& { 40 | background-image: none; 41 | } 42 | &.disabled, 43 | &[disabled], 44 | fieldset[disabled] & { 45 | &:hover, 46 | &:focus, 47 | &.focus { 48 | background-color: @background; 49 | border-color: @border; 50 | } 51 | } 52 | 53 | .badge { 54 | color: @background; 55 | background-color: @color; 56 | } 57 | } 58 | 59 | // Button sizes 60 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 61 | padding: @padding-vertical @padding-horizontal; 62 | font-size: @font-size; 63 | line-height: @line-height; 64 | border-radius: @border-radius; 65 | } 66 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (has been removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/image.less: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | .img-responsive(@display: block) { 10 | display: @display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { 21 | background-image: url("@{file-1x}"); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url("@{file-2x}"); 31 | background-size: @width-1x @height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a&, 9 | button& { 10 | color: @color; 11 | 12 | .list-group-item-heading { 13 | color: inherit; 14 | } 15 | 16 | &:hover, 17 | &:focus { 18 | color: @color; 19 | background-color: darken(@background, 5%); 20 | } 21 | &.active, 22 | &.active:hover, 23 | &.active:focus { 24 | color: #fff; 25 | background-color: @color; 26 | border-color: @color; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | line-height: @line-height; 10 | } 11 | &:first-child { 12 | > a, 13 | > span { 14 | .border-left-radius(@border-radius); 15 | } 16 | } 17 | &:last-child { 18 | > a, 19 | > span { 20 | .border-right-radius(@border-radius); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/reset-text.less: -------------------------------------------------------------------------------- 1 | .reset-text() { 2 | font-family: @font-family-base; 3 | // We deliberately do NOT reset font-size. 4 | font-style: normal; 5 | font-weight: normal; 6 | letter-spacing: normal; 7 | line-break: auto; 8 | line-height: @line-height-base; 9 | text-align: left; // Fallback for where `start` is not supported 10 | text-align: start; 11 | text-decoration: none; 12 | text-shadow: none; 13 | text-transform: none; 14 | white-space: normal; 15 | word-break: normal; 16 | word-spacing: normal; 17 | word-wrap: normal; 18 | } 19 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table !important; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover, 6 | a&:focus { 7 | color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: @cursor-disabled; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | } 26 | 27 | // Modifier class for 16:9 aspect ratio 28 | .embed-responsive-16by9 { 29 | padding-bottom: 56.25%; 30 | } 31 | 32 | // Modifier class for 4:3 aspect ratio 33 | .embed-responsive-4by3 { 34 | padding-bottom: 75%; 35 | } 36 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | } 48 | 49 | 50 | // For Affix plugin 51 | // ------------------------- 52 | 53 | .affix { 54 | position: fixed; 55 | } 56 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/nuget/MyGet.ps1: -------------------------------------------------------------------------------- 1 | $nuget = $env:NuGet 2 | 3 | #parse the version number out of package.json 4 | $bsversion = ((Get-Content $env:SourcesPath\package.json) -join "`n" | ConvertFrom-Json).version 5 | 6 | #create packages 7 | & $nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion 8 | & $nuget pack "nuget\bootstrap.less.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/nuget/bootstrap.less.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | bootstrap.less 5 | 3.3 6 | Bootstrap Less 7 | Twitter, Inc. 8 | bootstrap 9 | The most popular front-end framework for developing responsive, mobile first projects on the web. 10 | http://blog.getbootstrap.com 11 | Bootstrap framework in Less. Includes fonts and JavaScript 12 | en-us 13 | http://getbootstrap.com 14 | http://getbootstrap.com/apple-touch-icon.png 15 | https://github.com/twbs/bootstrap/blob/master/LICENSE 16 | Copyright 2015 17 | false 18 | 19 | 20 | 21 | css js less mobile-first responsive front-end framework web 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/nuget/bootstrap.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | bootstrap 5 | 3.3 6 | Bootstrap CSS 7 | Twitter, Inc. 8 | bootstrap 9 | The most popular front-end framework for developing responsive, mobile first projects on the web. 10 | http://blog.getbootstrap.com 11 | Bootstrap framework in CSS. Includes fonts and JavaScript 12 | en-us 13 | http://getbootstrap.com 14 | http://getbootstrap.com/apple-touch-icon.png 15 | https://github.com/twbs/bootstrap/blob/master/LICENSE 16 | Copyright 2015 17 | false 18 | 19 | 20 | 21 | css js less mobile-first responsive front-end framework web 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/bootstrap/package.js: -------------------------------------------------------------------------------- 1 | // package metadata file for Meteor.js 2 | 3 | /* jshint strict:false */ 4 | /* global Package:true */ 5 | 6 | Package.describe({ 7 | name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap 8 | summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.', 9 | version: '3.3.6', 10 | git: 'https://github.com/twbs/bootstrap.git' 11 | }); 12 | 13 | Package.onUse(function (api) { 14 | api.versionsFrom('METEOR@1.0'); 15 | api.use('jquery', 'client'); 16 | var assets = [ 17 | 'dist/fonts/glyphicons-halflings-regular.eot', 18 | 'dist/fonts/glyphicons-halflings-regular.svg', 19 | 'dist/fonts/glyphicons-halflings-regular.ttf', 20 | 'dist/fonts/glyphicons-halflings-regular.woff', 21 | 'dist/fonts/glyphicons-halflings-regular.woff2' 22 | ]; 23 | if (api.addAssets) { 24 | api.addAssets(assets, 'client'); 25 | } else { 26 | api.addFiles(assets, 'client', { isAsset: true }); 27 | } 28 | api.addFiles([ 29 | 'dist/css/bootstrap.css', 30 | 'dist/js/bootstrap.js' 31 | ], 'client'); 32 | }); 33 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/d3/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "d3", 3 | "main": "d3.js", 4 | "scripts": [ 5 | "d3.js" 6 | ], 7 | "ignore": [ 8 | ".DS_Store", 9 | ".git", 10 | ".gitignore", 11 | ".npmignore", 12 | ".spmignore", 13 | ".travis.yml", 14 | "Makefile", 15 | "bin", 16 | "component.json", 17 | "composer.json", 18 | "index.js", 19 | "lib", 20 | "node_modules", 21 | "package.json", 22 | "src", 23 | "test" 24 | ], 25 | "homepage": "https://github.com/mbostock/d3", 26 | "version": "3.5.10", 27 | "_release": "3.5.10", 28 | "_resolution": { 29 | "type": "version", 30 | "tag": "v3.5.10", 31 | "commit": "639481af80fd6bd62abd386302eebeff7d47bdc7" 32 | }, 33 | "_source": "git://github.com/mbostock/d3.git", 34 | "_target": "~3.5.5", 35 | "_originalSource": "d3" 36 | } -------------------------------------------------------------------------------- /gitnoc/static/bower_components/d3/.gitattributes: -------------------------------------------------------------------------------- 1 | bower.json -diff merge=ours 2 | component.json -diff merge=ours 3 | d3.js -diff merge=ours 4 | d3.min.js -diff merge=ours 5 | package.js -diff merge=ours 6 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/d3/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010-2015, Michael Bostock 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * The name Michael Bostock may not be used to endorse or promote products 15 | derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 | DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, 21 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 24 | OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/d3/README.md: -------------------------------------------------------------------------------- 1 | # Data-Driven Documents 2 | 3 | 4 | 5 | **D3.js** is a JavaScript library for manipulating documents based on data. **D3** helps you bring data to life using HTML, SVG, and CSS. **D3** emphasizes web standards and combines powerful visualization components with a data-driven approach to DOM manipulation, giving you the full capabilities of modern browsers without tying yourself to a proprietary framework. 6 | 7 | Want to learn more? [See the wiki.](https://github.com/mbostock/d3/wiki) 8 | 9 | For examples, [see the gallery](https://github.com/mbostock/d3/wiki/Gallery) and [mbostock’s bl.ocks](http://bl.ocks.org/mbostock). 10 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/d3/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "d3", 3 | "main": "d3.js", 4 | "scripts": [ 5 | "d3.js" 6 | ], 7 | "ignore": [ 8 | ".DS_Store", 9 | ".git", 10 | ".gitignore", 11 | ".npmignore", 12 | ".spmignore", 13 | ".travis.yml", 14 | "Makefile", 15 | "bin", 16 | "component.json", 17 | "composer.json", 18 | "index.js", 19 | "lib", 20 | "node_modules", 21 | "package.json", 22 | "src", 23 | "test" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/d3/package.js: -------------------------------------------------------------------------------- 1 | // Package metadata for Meteor.js. 2 | 3 | Package.describe({ 4 | name: "d3js:d3", // http://atmospherejs.com/d3js/d3 5 | summary: "D3 (official): A JavaScript visualization library for HTML and SVG.", 6 | version: "3.5.10", 7 | git: "https://github.com/mbostock/d3.git" 8 | }); 9 | 10 | Package.onUse(function(api) { 11 | api.versionsFrom(["METEOR@1.0"]); 12 | api.addFiles("d3.js", "client"); 13 | }); 14 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "datatables-buttons", 3 | "version": "1.0.3", 4 | "main": [ 5 | "js/dataTables.buttons.js", 6 | "js/buttons.colVis.js", 7 | "js/buttons.flash.js", 8 | "js/buttons.html5.js", 9 | "js/buttons.print.js", 10 | "css/buttons.dataTables.scss" 11 | ], 12 | "dependencies": { 13 | "jquery": ">=1.7.0", 14 | "datatables": ">=1.10.8" 15 | }, 16 | "homepage": "https://github.com/DataTables/Buttons", 17 | "_release": "1.0.3", 18 | "_resolution": { 19 | "type": "version", 20 | "tag": "1.0.3", 21 | "commit": "4aae53559b431e2281ccc7142aa82f27e3b717ef" 22 | }, 23 | "_source": "git://github.com/DataTables/Buttons.git", 24 | "_target": "~1.0.3", 25 | "_originalSource": "datatables-buttons" 26 | } -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/License.txt: -------------------------------------------------------------------------------- 1 | MIT license 2 | 3 | Copyright (c) 2015 SpryMedia Limited 4 | http://datatables.net 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/Readme.md: -------------------------------------------------------------------------------- 1 | # Buttons 2 | 3 | The Buttons extension for DataTables provides a common set of options, API methods and styling to display buttons on a page that will interact with a DataTable. Modules are also provided for data export, printing and column visibility control. 4 | 5 | 6 | # Installation 7 | 8 | To use Buttons the best way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/buttons/) for full details. 9 | 10 | 11 | # Basic usage 12 | 13 | Buttons is initialised using the `buttons` option in the DataTables constructor, giving an array of the buttons that should be shown. Further options can be specified using this option as an object - see the documentation for details. For example: 14 | 15 | ```js 16 | $(document).ready( function () { 17 | $('#example').DataTable( { 18 | buttons: [ 'csv', 'excel', 'pdf', 'print' ] 19 | } ); 20 | } ); 21 | ``` 22 | 23 | 24 | # Documentation / support 25 | 26 | * [Documentation](https://datatables.net/extensions/buttons/) 27 | * [DataTables support forums](http://datatables.net/forums) 28 | 29 | 30 | # GitHub 31 | 32 | If you fancy getting involved with the development of Buttons and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/Buttons) 33 | 34 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/as3/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "datatables-buttons", 3 | "version": "1.0.3", 4 | "main": [ 5 | "js/dataTables.buttons.js", 6 | "js/buttons.colVis.js", 7 | "js/buttons.flash.js", 8 | "js/buttons.html5.js", 9 | "js/buttons.print.js", 10 | "css/buttons.dataTables.scss" 11 | ], 12 | "dependencies": { 13 | "jquery": ">=1.7.0", 14 | "datatables": ">=1.10.8" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/css/buttons.bootstrap.scss: -------------------------------------------------------------------------------- 1 | 2 | @import 'mixins.scss'; 3 | @import 'common.scss'; 4 | 5 | ul.dt-button-collection.dropdown-menu { 6 | display: block; 7 | z-index: 2002; 8 | 9 | @include dtb-fixed-collection(); 10 | } 11 | 12 | div.dt-button-background { 13 | position: fixed; 14 | top: 0; 15 | left: 0; 16 | width: 100%; 17 | height: 100%; 18 | z-index: 2001; 19 | } 20 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/css/buttons.foundation.scss: -------------------------------------------------------------------------------- 1 | 2 | @import 'mixins.scss'; 3 | @import 'common.scss'; 4 | 5 | ul.dt-buttons { 6 | li { 7 | margin: 0; 8 | } 9 | 10 | li.active a { 11 | box-shadow: inset 0 0 10px rgba(0,0,0,.6); 12 | } 13 | } 14 | 15 | ul.dt-buttons.button-group a { 16 | margin-bottom: 0; // Foundation has a -2px margin, but that causes the 17 | // active class to look wrong 18 | } 19 | 20 | ul.dt-button-collection.f-dropdown { 21 | @include dtb-fixed-collection(); 22 | 23 | &.fixed { 24 | max-width: none; 25 | 26 | &:before, 27 | &:after { 28 | display: none; 29 | } 30 | } 31 | } 32 | 33 | div.dt-button-background { 34 | position: fixed; 35 | top: 0; 36 | left: 0; 37 | width: 100%; 38 | height: 100%; 39 | z-index: 88; 40 | } 41 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/css/common.scss: -------------------------------------------------------------------------------- 1 | 2 | div.dt-button-info { 3 | position: fixed; 4 | top: 50%; 5 | left: 50%; 6 | width: 400px; 7 | margin-top: -100px; 8 | margin-left: -200px; 9 | background-color: white; 10 | border: 2px solid #111; 11 | box-shadow: 3px 3px 8px rgba( 0, 0, 0, 0.3); 12 | border-radius: 3px; 13 | text-align: center; 14 | z-index: 21; 15 | 16 | h2 { 17 | padding: 0.5em; 18 | margin: 0; 19 | font-weight: normal; 20 | border-bottom: 1px solid #ddd; 21 | background-color: #f3f3f3; 22 | } 23 | 24 | > div { 25 | padding: 1em; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/button().node().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | button().node() 4 | Get the button node for the selected button 5 | 1.0.0 6 | 7 | 8 | button().node() 9 | 10 | A jQuery object that contains the node of the selected button 11 | 12 | 13 | Get a jQuery object that contains a reference to the node for the selected button. 14 | 15 | 16 | 17 | 18 | It can often be useful to have access to the DOM node of a button so you can manipulate it using directly jQuery or DOM methods. This method provides exactly that option. 19 | 20 | 21 | 31 | 32 | 44 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/button().remove().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | button().remove() 4 | Remove and delete the selected button 5 | 1.0.0 6 | 7 | 8 | button().remove() 9 | 10 | DataTables API instance. 11 | 12 | 13 | Remove the selected button from the display. The button is destroyed and can no longer be used once removed. 14 | 15 | 16 | 17 | 18 | This method provides the ability to dynamically remove a button from a table after initialisation. The inverse of this method is `b-api button().add()` which can be used to add a new button dynamically. 19 | 20 | **Important**: This method will effect the indexes of other buttons in the instances. If you are using index based selectors for the buttons, please ensure that you take this into account for API interactions after calling this method. 21 | 22 | 23 | 30 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/button().trigger().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | button().trigger() 4 | Trigger the action of the selected button 5 | 1.0.0 6 | 7 | 8 | button().trigger() 9 | 10 | DataTables API instance with the selected buttons in the result set, available for chaining further operations on the buttons. 11 | 12 | 13 | Programmatically trigger the action of the selected button. 14 | 15 | 16 | 17 | 18 | This method can be used to programmatically trigger the actions of the selected button. Typically a button's action will be triggered by an end user interaction (clicking, keyboard navigation), but it can be useful to trigger the action from code - for example to periodically update the data contained in a DataTable. 19 | 20 | Please note that some buttons types might not be able to be triggered programmatically. Specifically Adobe Flash based buttons that are used for clipboard and local file saving actions cannot be triggered without a user click action as a security mechanism that is built into Flash and cannot be overridden. 21 | 22 | 23 | 30 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/buttons().active().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons().active() 4 | Set the active state for the selected buttons 5 | 1.0.0 6 | 7 | 8 | buttons().active( state ) 9 | 10 | Set the active state (`true`) or remove (`false`). 11 | 12 | 13 | DataTables API instance with the selected buttons in the result set, available for chaining further operations on the buttons. 14 | 15 | 16 | Set the active state for the selected button. 17 | 18 | 19 | 20 | 21 | Buttons can be placed into an "active" state which is purely a styling function to visually show to the end user that the button is _active_ (i.e. whatever operation it performs is currently active). This can be useful if you have a number of different modes of operation that the user can select from, but only one can be active at a time. 22 | 23 | This method can be used to dynamically change the active state for the selected buttons. 24 | 25 | 26 | 33 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/buttons().destroy().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons().destroy() 4 | Destroy one or more button instances and remove from the document 5 | 1.0.0 6 | 7 | 8 | buttons().destroy() 9 | 10 | DataTables API instance. 11 | 12 | 13 | Destroy the selected button instances, removing the container and all button elements from the document. 14 | 15 | 16 | 17 | 18 | This method provides the ability to "destroy" one or more instances of the Buttons class. The destroy action will remove all DOM elements that is controls from the document and release any event handlers it holds. 19 | 20 | When using the `b-api buttons()` selector method, the second argument (the buttons selector) is effectively ignored when processing this method. Only the button instances are used. 21 | 22 | This method is invoked automatically if the DataTable `dt-api destroy()` method is called on the host DataTable. 23 | 24 | 25 | 32 | 33 | 40 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/buttons().nodes().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons().nodes() 4 | Get the button nodes for the selected buttons 5 | 1.0.0 6 | 7 | 8 | buttons().nodes() 9 | 10 | A jQuery object that contains the nodes for the selected buttons 11 | 12 | 13 | Get a jQuery object that contains a reference to the nodes for the selected buttons. 14 | 15 | 16 | 17 | 18 | It can often be useful to have access to the DOM node of a button so you can manipulate it using directly jQuery or DOM methods. This method provides exactly that option. 19 | 20 | 21 | 31 | 32 | 44 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/buttons().remove().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons().remove() 4 | Remove and delete the selected buttons 5 | 1.0.0 6 | 7 | 8 | buttons().remove() 9 | 10 | DataTables API instance. 11 | 12 | 13 | Remove the selected buttons from the display. These buttons are destroyed and can no longer be used once removed. 14 | 15 | 16 | 17 | 18 | This method provides the ability to dynamically remove one or more buttons from a table after initialisation. The inverse of this method is `b-api button().add()` which can be used to add a new button dynamically. 19 | 20 | **Important**: This method will effect the indexes of other buttons in the instances. If you are using index based selectors for the buttons, please ensure that you take this into account for API interactions after calling this method. 21 | 22 | 23 | 30 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/api/buttons().trigger().xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons().trigger() 4 | Trigger the action of the selected buttons 5 | 1.0.0 6 | 7 | 8 | buttons().trigger() 9 | 10 | DataTables API instance with the selected buttons in the result set, available for chaining further operations on the buttons. 11 | 12 | 13 | Programmatically trigger the action of the selected buttons. They will be triggered in the selected order. 14 | 15 | 16 | 17 | 18 | This method can be used to programmatically trigger the actions of the selected buttons. Typically a button's action will be triggered by an end user interaction (clicking, keyboard navigation), but it can be useful to trigger the action from code - for example to periodically update the data contained in a DataTable. 19 | 20 | Please note that some buttons types might not be able to be triggered programmatically. Specifically Adobe Flash based buttons that are used for clipboard and local file saving actions cannot be triggered without a user click action as a security mechanism that is built into Flash and cannot be overridden. 21 | 22 | 23 | 30 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/button/colvisRestore.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | colvisRestore 4 | Restore the visibility of column to their original state 5 | 1.0.0 6 | 7 | 8 | * Buttons' _Column visibility button_ plug-in 9 | 10 | 11 | 12 | This `b-button colvisRestore` button type provides a single click button that will restore the visibility state of the columns to match that when the button was created. This works by reading the state as the button is created (which is generally during the initialisation of the table) and then restoring those values when activated by the end user. 13 | 14 | 15 | 18 | 19 | 22 | 23 | 26 | 27 | 28 | 38 | 39 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/option/buttons.buttons.enabled.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons.buttons.enabled 4 | Set a button's initial enabled state 5 | 1.0.0 6 | 7 | 8 | 9 | 10 | 11 | A boolean flag to indicate the initial enabled state of the button upon initialisation: 12 | 13 | * `false` - disabled 14 | * `true` - enabled 15 | 16 | An undefined value is the same as `true`. 17 | 18 | 19 | 20 | 21 | This option provides the ability to set the initial enabled state of a button using a boolean value. It is most likely to be of use when using the API methods that can control the button's enabled state after initialisation: 22 | 23 | * `b-api buttons().enabled()` / `b-api button().enabled()` 24 | * `b-api buttons().disabled()` / `b-api button().disabled()` 25 | 26 | 27 | 39 | 40 | 50 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/option/buttons.buttons.name.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons.buttons.name 4 | Set a name for each selection 5 | 1.0.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The `b-api buttons()` and `b-api button()` API methods provide the ability to use a `b-type button-selector` to be able to select one or more buttons in one or more Buttons instances. In turn the button selector provides an option to easily select a button by using a predefined name (thus removing any complexities that might occur if using index selection). This option provides the ability to set that name. 16 | 17 | Multiple buttons can share the same name, they need not be unique, but please be aware that they will always be selected together if using a name selector. 18 | 19 | 20 | 29 | 30 | 42 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/docs/option/buttons.name.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | buttons.name 4 | Set a name for the instance for the group selector 5 | 1.0.0 6 | 7 | 8 | 9 | The name to set for the Buttons instance 10 | 11 | 12 | 13 | 14 | 15 | As multiple Buttons instances can be attached to a single DataTable, it can be useful to be able to select each instance individually. This option provides the ability to set a name for the instance so it can later be selected using the `b-type button-group-selector` option of the `b-api buttons()` and `b-api button()` API methods. 16 | 17 | The instance name _does not need to be unique_. If a group selector is given that matches multiple instances, all matching instances will be selected. 18 | 19 | 20 | 29 | 30 | 37 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/api/addRemove.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 30 | 31 | 32 | Adding and removing buttons dynamically 33 | 34 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/api/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | API 5 | 6 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/api/text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 25 | 26 | 27 | Dynamic text 28 | 29 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/columnGroups.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 32 | 33 | 34 | Column groups 35 | 36 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/columns.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 | Select columns 22 | 23 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/columnsToggle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 16 | 17 | 18 | Visibility toggle buttons 19 | 20 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Column visibility examples 5 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 | Multi-column layout 22 | 23 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/restore.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 25 | 26 | 27 | Restore column visibility 28 | 29 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 16 | 17 | 18 | Basic column visibility 19 | 20 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/column_visibility/text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 | Internationalisation 22 | 23 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/copyi18n.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 27 | 28 | 29 | Copy button internationalisation 30 | 31 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/filename.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 25 | 26 | 27 | File name 28 | 29 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flash export buttons 5 | 6 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/pdfMessage.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | PDF message 24 | 25 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/pdfPage.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 22 | 23 | 24 | Page size and orientation 25 | 26 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | Flash export buttons 24 | 25 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/swfPath.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 23 | 24 | 25 | SWF file location 26 | 27 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/flash/tsv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 23 | 24 | 25 | Tab separated values 26 | 27 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/copyi18n.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ctrl ou \u2318 + C pour copier les données de table à votre presse-papiers du système.

Pour annuler, cliquez sur ce message ou appuyez sur Echap.' 18 | } 19 | } 20 | } ); 21 | } ); 22 | 23 | ]]> 24 |
25 | 26 | Copy button internationalisation 27 | 28 | 37 | 38 |
39 | 40 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/filename.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 25 | 26 | 27 | File name 28 | 29 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTML5 export buttons 5 | 6 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/pdfMessage.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | PDF message 24 | 25 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/pdfOpen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | PDF - open in new window 24 | 25 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/pdfPage.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 22 | 23 | 24 | PDF page size and orientation 25 | 26 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | HTML5 export buttons 24 | 25 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/html5/tsv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 23 | 24 | 25 | Tab separated values 26 | 27 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Buttons for DataTables 5 | 6 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/initialisation/className.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | a.dt-button.red { 6 | color: red; 7 | } 8 | 9 | a.dt-button.orange { 10 | color: orange; 11 | } 12 | 13 | a.dt-button.green { 14 | color: green; 15 | } 16 | 17 | 18 | 41 | 42 | 43 | Class names 44 | 45 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/initialisation/custom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 23 | 24 | 25 | Custom button 26 | 27 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/initialisation/export.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 18 | 19 | 20 | File export 21 | 22 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/initialisation/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Initialisation 5 | 6 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/initialisation/new.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 34 | 35 | 36 | `new` initialisation 37 | 38 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/initialisation/plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 39 | 40 | 41 | Plug-ins 42 | 43 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/initialisation/simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 18 | 19 | 20 | Basic initialisation 21 | 22 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/print/autoPrint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | Disable auto print 24 | 25 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/print/columns.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 28 | 29 | 30 | Export options - column selector 31 | 32 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/print/customisation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ' 19 | ); 20 | 21 | $(win.document.body).find( 'table' ) 22 | .addClass( 'compact' ) 23 | .css( 'font-size', 'inherit' ); 24 | } 25 | } 26 | ] 27 | } ); 28 | } ); 29 | 30 | ]]> 31 | 32 | 33 | Customisation of the print view window 34 | 35 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/print/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Print 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/print/message.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | Custom message 24 | 25 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/print/select.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 31 | 32 | 33 | Export options - row selector 34 | 35 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/print/simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 18 | 19 | 20 | Print button 21 | 22 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/styling/bootstrap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 | Bootstrap styling 22 | 23 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/styling/foundation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 | Foundation styling 22 | 23 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/styling/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Styling 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/examples/styling/jqueryui.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 | jQuery UI styling 22 | 23 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/js/buttons.bootstrap.js: -------------------------------------------------------------------------------- 1 | 2 | (function($, DataTables){ 3 | 4 | $.extend( true, DataTables.Buttons.defaults, { 5 | dom: { 6 | container: { 7 | className: 'dt-buttons btn-group' 8 | }, 9 | button: { 10 | className: 'btn btn-default' 11 | }, 12 | collection: { 13 | tag: 'ul', 14 | className: 'dt-button-collection dropdown-menu', 15 | button: { 16 | tag: 'li', 17 | className: 'dt-button' 18 | }, 19 | buttonLiner: { 20 | tag: 'a', 21 | className: '' 22 | } 23 | } 24 | } 25 | } ); 26 | 27 | DataTables.ext.buttons.collection.text = function ( dt ) { 28 | return dt.i18n('buttons.collection', 'Collection '); 29 | }; 30 | 31 | })(jQuery, jQuery.fn.dataTable); 32 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/js/buttons.foundation.js: -------------------------------------------------------------------------------- 1 | 2 | (function($, DataTables){ 3 | 4 | $.extend( true, DataTables.Buttons.defaults, { 5 | dom: { 6 | container: { 7 | tag: 'ul', 8 | className: 'dt-buttons button-group' 9 | }, 10 | buttonContainer: { 11 | tag: 'li', 12 | className: '' 13 | }, 14 | button: { 15 | tag: 'a', 16 | className: 'button small' 17 | }, 18 | buttonLiner: { 19 | tag: null 20 | }, 21 | collection: { 22 | tag: 'ul', 23 | className: 'dt-button-collection f-dropdown open', 24 | button: { 25 | tag: 'a', 26 | className: 'small' 27 | } 28 | } 29 | } 30 | } ); 31 | 32 | DataTables.ext.buttons.collection.className = 'buttons-collection dropdown'; 33 | 34 | })(jQuery, jQuery.fn.dataTable); 35 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/js/buttons.jqueryui.js: -------------------------------------------------------------------------------- 1 | 2 | (function($, DataTables){ 3 | 4 | $.extend( true, DataTables.Buttons.defaults, { 5 | dom: { 6 | container: { 7 | className: 'dt-buttons ui-buttonset' 8 | }, 9 | button: { 10 | className: 'dt-button ui-button ui-state-default ui-button-text-only', 11 | disabled: 'ui-state-disabled', 12 | active: 'ui-state-active' 13 | }, 14 | buttonLiner: { 15 | tag: 'span', 16 | className: 'ui-button-text' 17 | } 18 | } 19 | } ); 20 | 21 | DataTables.ext.buttons.collection.text = function ( dt ) { 22 | return dt.i18n('buttons.collection', 'Collection '); 23 | }; 24 | 25 | 26 | })(jQuery, jQuery.fn.dataTable); 27 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | OUT_DIR=$1 4 | DEBUG=$2 5 | 6 | # Change into script's own dir 7 | cd $(dirname $0) 8 | 9 | DT_SRC=$(dirname $(dirname $(pwd))) 10 | DT_BUILT="${DT_SRC}/built/DataTables" 11 | . $DT_SRC/build/include.sh 12 | 13 | # Copy CSS 14 | rsync -r css $OUT_DIR 15 | css_frameworks buttons $OUT_DIR/css 16 | 17 | # Copy images 18 | #rsync -r images $OUT_DIR 19 | 20 | # Copy JS 21 | rsync -r js $OUT_DIR 22 | js_compress $OUT_DIR/js/dataTables.buttons.js 23 | js_frameworks buttons $OUT_DIR/js 24 | 25 | js_compress $OUT_DIR/js/buttons.colVis.js 26 | js_compress $OUT_DIR/js/buttons.html5.js 27 | js_compress $OUT_DIR/js/buttons.flash.js 28 | js_compress $OUT_DIR/js/buttons.print.js 29 | 30 | # Copy and build examples 31 | rsync -r examples $OUT_DIR 32 | examples_process $OUT_DIR/examples 33 | 34 | # SWF file flash export options 35 | rsync -r swf $OUT_DIR 36 | 37 | # Readme and license 38 | cp Readme.md $OUT_DIR 39 | cp License.txt $OUT_DIR 40 | 41 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables-buttons/swf/flashExport.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables-buttons/swf/flashExport.swf -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "datatables", 3 | "version": "1.10.10", 4 | "main": [ 5 | "media/js/jquery.dataTables.js", 6 | "media/css/jquery.dataTables.css", 7 | "media/images/sort_asc.png", 8 | "media/images/sort_asc_disabled.png", 9 | "media/images/sort_both.png", 10 | "media/images/sort_desc.png", 11 | "media/images/sort_desc_disabled.png" 12 | ], 13 | "dependencies": { 14 | "jquery": ">=1.7.0" 15 | }, 16 | "license": "MIT", 17 | "keywords": [ 18 | "jquery", 19 | "datatables", 20 | "table", 21 | "javascript", 22 | "library" 23 | ], 24 | "ignore": [ 25 | "/.*", 26 | "examples", 27 | "media/unit_testing", 28 | "composer.json", 29 | "dataTables.jquery.json", 30 | "package.json" 31 | ], 32 | "homepage": "https://github.com/DataTables/DataTables", 33 | "_release": "1.10.10", 34 | "_resolution": { 35 | "type": "version", 36 | "tag": "1.10.10", 37 | "commit": "74fd9c1901fb2b494f8395959a708e6eb8978bbd" 38 | }, 39 | "_source": "git://github.com/DataTables/DataTables.git", 40 | "_target": "~1.10.6", 41 | "_originalSource": "datatables" 42 | } -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "datatables", 3 | "version": "1.10.10", 4 | "main": [ 5 | "media/js/jquery.dataTables.js", 6 | "media/css/jquery.dataTables.css", 7 | "media/images/sort_asc.png", 8 | "media/images/sort_asc_disabled.png", 9 | "media/images/sort_both.png", 10 | "media/images/sort_desc.png", 11 | "media/images/sort_desc_disabled.png" 12 | ], 13 | "dependencies": { 14 | "jquery": ">=1.7.0" 15 | }, 16 | "license": "MIT", 17 | "keywords": [ 18 | "jquery", 19 | "datatables", 20 | "table", 21 | "javascript", 22 | "library" 23 | ], 24 | "ignore": [ 25 | "/.*", 26 | "examples", 27 | "media/unit_testing", 28 | "composer.json", 29 | "dataTables.jquery.json", 30 | "package.json" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2008-2015 SpryMedia Limited 2 | http://datatables.net 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in 12 | all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/media/images/Sorting icons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables/media/images/Sorting icons.psd -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/media/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables/media/images/favicon.ico -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/media/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables/media/images/sort_asc.png -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/media/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables/media/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/media/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables/media/images/sort_both.png -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/media/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables/media/images/sort_desc.png -------------------------------------------------------------------------------- /gitnoc/static/bower_components/datatables/media/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/gitnoc/static/bower_components/datatables/media/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /gitnoc/static/bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.4", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "dist/cdn", 10 | "speed", 11 | "test", 12 | "*.md", 13 | "AUTHORS.txt", 14 | "Gruntfile.js", 15 | "package.json" 16 | ], 17 | "devDependencies": { 18 | "sizzle": "2.1.1-jquery.2.1.2", 19 | "requirejs": "2.1.10", 20 | "qunit": "1.14.0", 21 | "sinon": "1.8.1" 22 | }, 23 | "keywords": [ 24 | "jquery", 25 | "javascript", 26 | "library" 27 | ], 28 | "homepage": "https://github.com/jquery/jquery", 29 | "_release": "2.1.4", 30 | "_resolution": { 31 | "type": "version", 32 | "tag": "2.1.4", 33 | "commit": "7751e69b615c6eca6f783a81e292a55725af6b85" 34 | }, 35 | "_source": "git://github.com/jquery/jquery.git", 36 | "_target": "~2.1.3", 37 | "_originalSource": "jquery" 38 | } -------------------------------------------------------------------------------- /gitnoc/static/bower_components/jquery/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2014 jQuery Foundation and other contributors 2 | http://jquery.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.4", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "dist/cdn", 10 | "speed", 11 | "test", 12 | "*.md", 13 | "AUTHORS.txt", 14 | "Gruntfile.js", 15 | "package.json" 16 | ], 17 | "devDependencies": { 18 | "sizzle": "2.1.1-jquery.2.1.2", 19 | "requirejs": "2.1.10", 20 | "qunit": "1.14.0", 21 | "sinon": "1.8.1" 22 | }, 23 | "keywords": [ 24 | "jquery", 25 | "javascript", 26 | "library" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Support: Android 2.3 6 | // Workaround failure to string-cast null input 7 | jQuery.parseJSON = function( data ) { 8 | return JSON.parse( data + "" ); 9 | }; 10 | 11 | return jQuery.parseJSON; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Cross-browser xml parsing 6 | jQuery.parseXML = function( data ) { 7 | var xml, tmp; 8 | if ( !data || typeof data !== "string" ) { 9 | return null; 10 | } 11 | 12 | // Support: IE9 13 | try { 14 | tmp = new DOMParser(); 15 | xml = tmp.parseFromString( data, "text/xml" ); 16 | } catch ( e ) { 17 | xml = undefined; 18 | } 19 | 20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 21 | jQuery.error( "Invalid XML: " + data ); 22 | } 23 | return xml; 24 | }; 25 | 26 | return jQuery.parseXML; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /gitnoc/static/bower_components/jquery/src/ajax/script.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../ajax" 4 | ], function( jQuery ) { 5 | 6 | // Install script dataType 7 | jQuery.ajaxSetup({ 8 | accepts: { 9 | script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 10 | }, 11 | contents: { 12 | script: /(?:java|ecma)script/ 13 | }, 14 | converters: { 15 | "text script": function( text ) { 16 | jQuery.globalEval( text ); 17 | return text; 18 | } 19 | } 20 | }); 21 | 22 | // Handle cache's special case and crossDomain 23 | jQuery.ajaxPrefilter( "script", function( s ) { 24 | if ( s.cache === undefined ) { 25 | s.cache = false; 26 | } 27 | if ( s.crossDomain ) { 28 | s.type = "GET"; 29 | } 30 | }); 31 | 32 | // Bind script tag hack transport 33 | jQuery.ajaxTransport( "script", function( s ) { 34 | // This transport only deals with cross domain requests 35 | if ( s.crossDomain ) { 36 | var script, callback; 37 | return { 38 | send: function( _, complete ) { 39 | script = jQuery(" 48 | {% endassets %} 49 | {% block scripts %}{% endblock %} 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /gitnoc/templates/footer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
    4 |
  • © Will McGinnis 2015
  • 5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /gitnoc/templates/nav.html: -------------------------------------------------------------------------------- 1 | 27 | 28 | -------------------------------------------------------------------------------- /gitnoc/templates/public/blame.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 |


4 |
5 |

Cumulative Blame

6 |

This section shows the cumulative blame for the project directory aggregated by author and by project. Because 7 | it can take quite a while to build the datasets for these plots, they are calculated in the background. To refresh 8 | these datastores, click the refresh button below each plot and wait for a while for the results to be visible.

9 |
10 |

Authors

11 | 12 |
13 | 14 |
15 |
16 |
17 |
18 |

Projects

19 | 20 |
21 | 22 |
23 |
24 |
25 | {% endblock %} 26 | {% block scripts %} 27 | {% assets "cumulative_blame_js" %} 28 | 29 | {% endassets %} 30 | {% endblock %} -------------------------------------------------------------------------------- /gitnoc/templates/public/filechangerates.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 |


4 |
5 |

File Change Rates

6 |

7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
FilenameRepo# CommittersGrowth RateEdit RateLOCCoverage
FilenameRepo# CommittersGrowth RateEdit RateLOCCoverage
32 |
33 |
34 | {% endblock %} 35 | {% block scripts %} 36 | 37 | {% endblock %} -------------------------------------------------------------------------------- /gitnoc/templates/public/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 |


4 |
5 |

Cumulative Blame

6 |

This section shows the cumulative blame for the project directory aggregated by author and by project. Because 7 | it can take quite a while to build the datasets for these plots, they are calculated in the background. To refresh 8 | these datastores, click the refresh button below each plot and wait for a while for the results to be visible.

9 |
10 |

Authors

11 | 12 |
13 | 14 |
15 |
16 |
17 |
18 |

Projects

19 | 20 |
21 | 22 |
23 |
24 |
25 | {% endblock %} 26 | {% block scripts %} 27 | 32 | 33 | {% endblock %} -------------------------------------------------------------------------------- /gitnoc/templates/public/profile.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros/macros.html' import render_form %} 3 | {% block content %} 4 |


5 |
6 |
7 |

Select Profile

8 |
9 |

Here you can select the profile you'd like to use, after which you can edit it. Optionally, you can also 10 | make a new profile and select the repos, extensions and directories that define it.

11 |
12 |
13 |

Select and Existing Profile

14 |
15 | {{ render_form(select_form, action_url='#', action_text='Select') }} 16 |
17 |

Create a New Profile

18 |
19 | {{ render_form(create_form, action_url='#', action_text='Create') }} 20 |
21 | {% endblock content %} -------------------------------------------------------------------------------- /gitnoc/templates/public/repo_detail.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 |


4 |
5 |

File Detail {{ repo_name }}

6 |
7 |
8 |

Top Committers

9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | {% for x in file_details %} 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% endfor %} 29 | 30 |
FileLOCOwnerExt.Ignore
{{ x.file_name }}{{ x.loc }}{{ x.owner }}{{ x.extension }}Ignore
31 |
32 |
33 | {% endblock %} 34 | {% block scripts %} 35 | {% assets "metrics_js" %} 36 | 37 | {% endassets %} 38 | {% endblock %} -------------------------------------------------------------------------------- /gitnoc/utils.py: -------------------------------------------------------------------------------- 1 | from gitnoc.services.settings import * 2 | from flask import render_template 3 | 4 | __author__ = 'willmcginnis' 5 | 6 | 7 | def render_wrapper(template, **kwargs): 8 | current_profile = get_settings()['profile_name'] 9 | return render_template(template, title='GitNOC', profile_name=current_profile, **kwargs) -------------------------------------------------------------------------------- /gitnoc/views/__init__.py: -------------------------------------------------------------------------------- 1 | __author__ = 'willmcginnis' 2 | -------------------------------------------------------------------------------- /gitnoc/views/metrics.py: -------------------------------------------------------------------------------- 1 | """ 2 | .. module:: 3 | :platform: Unix, Linux, Windows 4 | :synopsis: 5 | 6 | .. moduleauthor:: Will McGinnis 7 | 8 | """ 9 | 10 | from gitnoc.services.metrics import * 11 | from gitnoc.utils import render_wrapper 12 | from flask import Blueprint 13 | 14 | __author__ = 'willmcginnis' 15 | 16 | blueprint = Blueprint('metrics', __name__, static_folder="../static") 17 | 18 | 19 | @blueprint.route('/', methods=["GET"]) 20 | def metrics(): 21 | leaderboard = week_leader_board(n=5) 22 | repo_names = get_repo_names() 23 | return render_wrapper('public/metrics.html', leaderboard=leaderboard, repo_names=repo_names) 24 | 25 | 26 | @blueprint.route('/punchcard_data', methods=['GET']) 27 | def punchchard_data(): 28 | settings = get_settings() 29 | project_dir = settings.get('project_dir', os.getcwd()) 30 | extensions = settings.get('extensions', None) 31 | ignore_dir = settings.get('ignore_dir', None) 32 | 33 | output = get_punchcard(project_dir, extensions, ignore_dir) 34 | return str(output) 35 | 36 | 37 | @blueprint.route('/repo_details//', methods=["GET"]) 38 | def repo_details(repo_name): 39 | file_details = get_repo_details(repo_name) 40 | return render_wrapper('public/repo_detail.html', repo_name=repo_name, file_details=file_details) -------------------------------------------------------------------------------- /gitnoc/views/risk.py: -------------------------------------------------------------------------------- 1 | """ 2 | .. module:: 3 | :platform: Unix, Linux, Windows 4 | :synopsis: 5 | 6 | .. moduleauthor:: Will McGinnis 7 | 8 | """ 9 | 10 | import json 11 | from gitnoc.services.file_change_rates import * 12 | from flask import Blueprint 13 | from gitnoc.utils import render_wrapper 14 | from gitnoc.extensions import cache 15 | 16 | __author__ = 'willmcginnis' 17 | 18 | blueprint = Blueprint('risk', __name__, static_folder="../static") 19 | 20 | 21 | @blueprint.route('/risk', methods=['GET', 'POST']) 22 | def risk(): 23 | return render_wrapper('public/filechangerates.html') 24 | 25 | 26 | @blueprint.route('/file_change_rates', methods=['GET']) 27 | def file_change_rates(): 28 | output = get_file_change_rates() 29 | return json.dumps(output) -------------------------------------------------------------------------------- /img/cumulative_blame_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/img/cumulative_blame_example.png -------------------------------------------------------------------------------- /img/metrics_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/img/metrics_example.png -------------------------------------------------------------------------------- /img/profile_select_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/img/profile_select_example.png -------------------------------------------------------------------------------- /img/risk_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/img/risk_example.png -------------------------------------------------------------------------------- /img/settings_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wdm0006/gitnoc/487c20e020a8132e0a66203218f197f831a7fc01/img/settings_example.png -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import os 4 | from flask_script import Manager, Shell, Server 5 | from flask_script.commands import Clean, ShowUrls 6 | import redis 7 | from rq import Connection, Worker 8 | from gitnoc.app import create_app 9 | import sys 10 | 11 | if 'server-prod' in sys.argv: 12 | app = create_app('prod') 13 | else: 14 | app = create_app('dev') 15 | 16 | HERE = os.path.abspath(os.path.dirname(__file__)) 17 | TEST_PATH = os.path.join(HERE, 'tests') 18 | 19 | manager = Manager(app) 20 | 21 | 22 | def _make_context(): 23 | """Return context dict for a shell session so you can access 24 | app, db, and the User model by default. 25 | """ 26 | return {'app': app} 27 | 28 | 29 | @manager.command 30 | def runworker(): 31 | from gitnoc.settings import DockerConfig as settings 32 | redis_connection = redis.from_url(settings.REDIS_URL) 33 | with Connection(redis_connection): 34 | worker = Worker(settings.QUEUES) 35 | worker.work() 36 | 37 | 38 | @manager.command 39 | def runworker_dev(): 40 | from gitnoc.settings import LocalDevConfig as settings 41 | redis_connection = redis.from_url(settings.REDIS_URL) 42 | with Connection(redis_connection): 43 | worker = Worker(settings.QUEUES) 44 | worker.work() 45 | 46 | manager.add_command('server-dev', Server(port=5050, threaded=True)) 47 | manager.add_command('server-prod', Server(host='0.0.0.0', port=5050, threaded=True)) 48 | manager.add_command('shell', Shell(make_context=_make_context)) 49 | manager.add_command("urls", ShowUrls()) 50 | manager.add_command("clean", Clean()) 51 | 52 | if __name__ == '__main__': 53 | manager.run() 54 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Flask 2 | git+https://github.com/wdm0006/git-pandas.git 3 | Flask-WTF==0.11 4 | WTForms==2.0.2 5 | wtforms-components 6 | Redis >= 2.6.0 7 | rq 8 | Flask-Cache 9 | redislite 10 | pandas>=0.17.0 11 | Flask-Script 12 | Flask-Assets==0.10 13 | cssmin>=0.2.0 14 | jsmin>=2.0.11 15 | requests --------------------------------------------------------------------------------