Commit 0e5861e9 authored by Mohamad Bashar Desoki's avatar Mohamad Bashar Desoki

Configure Jmeter for automation testing (Stepping Load)

parent 23066388
jmeter -n -t "C:\Users\Administrator\Desktop\Stepping Load.jmx" -l C:\Users\Administrator\Desktop\Stepping Load\res.csv -e -o C:\Users\Administrator\Desktop\Stepping Load
\ No newline at end of file
This diff is collapsed.
# Jmeter (automation testing)
##### Step 1
Configure test profile and add influxDB as a backend listener.
```sh
jmeter Stepping Load.jmx
```
##### Step 2
Run in CLI Mode
```sh
jmeter -n -t "C:\Users\Administrator\Desktop\Stepping Load.jmx" -l "C:\Users\Administrator\Desktop\Stepping Load\res.csv" -e -o "C:\Users\Administrator\Desktop\Stepping Load"
```
###### note
Show testing result in Stepping Load folder as a report, and show live result in grafana dashboard (read metrics from influxDB).
\ No newline at end of file
This diff is collapsed.
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#stats td, th
{
width: 9%;//140px;
height: 30px;
}
#stats td
{
text-align: center;
}
#stats th
{
font-weight:bold;
}
.blue
{
background-color: #dff0d8;
}
#errors td, th
{
text-align: center;
width: 400px;
height: 30px;
}
#errors td
{
}
#errors th
{
font-weight:bold;
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.legend {
margin-left: -40px;
font-size: 12px;
display: inline;
font-family: 'Open Sans';
font-weight: bold;
}
.panel-footer
{
}
.subLegend
{
}
.legend li > div {
display: inline-block;
margin-right: 3px;
margin-left: 5px;
}
.legend li label {
margin-left: 1px;
margin-right: 10px;
color: black;
font-family: Open sans;
/*width: 200px;*/
}
li
{
list-style-type:none;
display: inline-block;
}
.nav-third-level
{
font-size: 12px;
}
.legend-disabled {
border-color: #818181 !important;
}
/*************
Blue Theme
*************/
/* overall */
.tablesorter-blue {
width: 100%;
background-color: #fff;
margin: 10px 0 15px;
text-align: left;
border-spacing: 0;
border: #cdcdcd 1px solid;
border-width: 1px 0 0 1px;
}
.tablesorter-blue th,
.tablesorter-blue td {
border: #cdcdcd 1px solid;
border-width: 0 1px 1px 0;
}
/* header */
.tablesorter-blue th,
.tablesorter-blue thead td {
font: 12px/18px Arial, Sans-serif;
font-weight: bold;
color: #000;
background-color: #99bfe6;
border-collapse: collapse;
padding: 4px;
text-shadow: 0 1px 0 rgba(204, 204, 204, 0.7);
}
.tablesorter-blue tbody td,
.tablesorter-blue tfoot th,
.tablesorter-blue tfoot td {
padding: 4px;
vertical-align: top;
}
.tablesorter-blue .header,
.tablesorter-blue .tablesorter-header {
/* black (unsorted) double arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
/* white (unsorted) double arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); */
/* image */
/* background-image: url(images/black-unsorted.gif); */
background-repeat: no-repeat;
background-position: center right;
padding: 4px 18px 4px 4px;
white-space: normal;
cursor: pointer;
}
.tablesorter-blue .headerSortUp,
.tablesorter-blue .tablesorter-headerSortUp,
.tablesorter-blue .tablesorter-headerAsc {
background-color: #9fbfdf;
/* black asc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);
/* white asc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); */
/* image */
/* background-image: url(images/black-asc.gif); */
}
.tablesorter-blue .headerSortDown,
.tablesorter-blue .tablesorter-headerSortDown,
.tablesorter-blue .tablesorter-headerDesc {
background-color: #8cb3d9;
/* black desc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
/* white desc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); */
/* image */
/* background-image: url(images/black-desc.gif); */
}
.tablesorter-blue thead .sorter-false {
background-image: none;
cursor: default;
padding: 4px;
}
/* tfoot */
.tablesorter-blue tfoot .tablesorter-headerSortUp,
.tablesorter-blue tfoot .tablesorter-headerSortDown,
.tablesorter-blue tfoot .tablesorter-headerAsc,
.tablesorter-blue tfoot .tablesorter-headerDesc {
/* remove sort arrows from footer */
background-image: none;
}
/* tbody */
.tablesorter-blue td {
color: #3d3d3d;
background-color: #fff;
padding: 4px;
vertical-align: top;
}
/* hovered row colors
you'll need to add additional lines for
rows with more than 2 child rows
*/
.tablesorter-blue tbody > tr.hover > td,
.tablesorter-blue tbody > tr:hover > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even.hover > td,
.tablesorter-blue tbody > tr.even:hover > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background-color: #d9d9d9;
}
.tablesorter-blue tbody > tr.odd.hover > td,
.tablesorter-blue tbody > tr.odd:hover > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background-color: #bfbfbf;
}
/* table processing indicator */
.tablesorter-blue .tablesorter-processing {
background-position: center center !important;
background-repeat: no-repeat !important;
/* background-image: url(images/loading.gif) !important; */
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important;
}
/* Zebra Widget - row alternating colors */
.tablesorter-blue tbody tr.odd > td {
background-color: #ebf2fa;
}
.tablesorter-blue tbody tr.even > td {
background-color: #fff;
}
/* Column Widget - column sort colors */
.tablesorter-blue td.primary,
.tablesorter-blue tr.odd td.primary {
background-color: #99b3e6;
}
.tablesorter-blue tr.even td.primary {
background-color: #c2d1f0;
}
.tablesorter-blue td.secondary,
.tablesorter-blue tr.odd td.secondary {
background-color: #c2d1f0;
}
.tablesorter-blue tr.even td.secondary {
background-color: #d6e0f5;
}
.tablesorter-blue td.tertiary,
.tablesorter-blue tr.odd td.tertiary {
background-color: #d6e0f5;
}
.tablesorter-blue tr.even td.tertiary {
background-color: #ebf0fa;
}
/* caption */
caption {
background-color: #fff;
}
/* filter widget */
.tablesorter-blue .tablesorter-filter-row {
background-color: #eee;
}
.tablesorter-blue .tablesorter-filter-row td {
background-color: #eee;
line-height: normal;
text-align: center; /* center the input */
-webkit-transition: line-height 0.1s ease;
-moz-transition: line-height 0.1s ease;
-o-transition: line-height 0.1s ease;
transition: line-height 0.1s ease;
}
/* optional disabled input styling */
.tablesorter-blue .tablesorter-filter-row .disabled {
opacity: 0.5;
filter: alpha(opacity=50);
cursor: not-allowed;
}
/* hidden filter row */
.tablesorter-blue .tablesorter-filter-row.hideme td {
/*** *********************************************** ***/
/*** change this padding to modify the thickness ***/
/*** of the closed filter row (height = padding x 2) ***/
padding: 2px;
/*** *********************************************** ***/
margin: 0;
line-height: 0;
cursor: pointer;
}
.tablesorter-blue .tablesorter-filter-row.hideme * {
height: 1px;
min-height: 0;
border: 0;
padding: 0;
margin: 0;
/* don't use visibility: hidden because it disables tabbing */
opacity: 0;
filter: alpha(opacity=0);
}
/* filters */
.tablesorter-blue input.tablesorter-filter,
.tablesorter-blue select.tablesorter-filter {
width: 98%;
height: auto;
margin: 0;
padding: 4px;
background-color: #fff;
border: 1px solid #bbb;
color: #333;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-transition: height 0.1s ease;
-moz-transition: height 0.1s ease;
-o-transition: height 0.1s ease;
transition: height 0.1s ease;
}
/* rows hidden by filtering (needed for child rows) */
.tablesorter .filtered {
display: none;
}
/* ajax error row */
.tablesorter .tablesorter-errorRow td {
text-align: center;
cursor: pointer;
background-color: #e6bf99;
}
.tablesorter .tablesorter-no-sort td {
font-weight: bold;
}
This diff is collapsed.
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
$(document).ready(function() {
$(".click-title").mouseenter( function( e){
e.preventDefault();
this.style.cursor="pointer";
});
$(".click-title").mousedown( function(event){
event.preventDefault();
});
$(".portlet-header").css("cursor", "auto");
});
function collapse(elem, collapsed){
if(collapsed){
$(elem).parent().find(".fa-chevron-up").removeClass("fa-chevron-up").addClass("fa-chevron-down");
}else{
$(elem).parent().find(".fa-chevron-down").removeClass("fa-chevron-down").addClass("fa-chevron-up");
}
}
function toggleAll(id, checked){
var placeholder = document.getElementById(id);
var cases = $(placeholder).find(':checkbox');
cases.prop('checked', checked);
$(cases).parent().children().children().toggleClass("legend-disabled", !checked);
var choiceContainer;
}
\ No newline at end of file
This diff is collapsed.
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
var showControllersOnly = false;
var seriesFilter = "";
var filtersOnlySampleSeries = true;
/*
* Add header in statistics table to group metrics by category
* format
*
*/
function summaryTableHeader(header) {
var newRow = header.insertRow(-1);
newRow.className = "tablesorter-no-sort";
var cell = document.createElement('th');
cell.setAttribute("data-sorter", false);
cell.colSpan = 1;
cell.innerHTML = "Requests";
newRow.appendChild(cell);
cell = document.createElement('th');
cell.setAttribute("data-sorter", false);
cell.colSpan = 3;
cell.innerHTML = "Executions";
newRow.appendChild(cell);
cell = document.createElement('th');
cell.setAttribute("data-sorter", false);
cell.colSpan = 7;
cell.innerHTML = "Response Times (ms)";
newRow.appendChild(cell);
cell = document.createElement('th');
cell.setAttribute("data-sorter", false);
cell.colSpan = 1;
cell.innerHTML = "Throughput";
newRow.appendChild(cell);
cell = document.createElement('th');
cell.setAttribute("data-sorter", false);
cell.colSpan = 2;
cell.innerHTML = "Network (KB/sec)";
newRow.appendChild(cell);
}
/*
* Populates the table identified by id parameter with the specified data and
* format
*
*/
function createTable(table, info, formatter, defaultSorts, seriesIndex, headerCreator) {
var tableRef = table[0];
// Create header and populate it with data.titles array
var header = tableRef.createTHead();
// Call callback is available
if(headerCreator) {
headerCreator(header);
}
var newRow = header.insertRow(-1);
for (var index = 0; index < info.titles.length; index++) {
var cell = document.createElement('th');
cell.innerHTML = info.titles[index];
newRow.appendChild(cell);
}
var tBody;
// Create overall body if defined
if(info.overall){
tBody = document.createElement('tbody');
tBody.className = "tablesorter-no-sort";
tableRef.appendChild(tBody);
var newRow = tBody.insertRow(-1);
var data = info.overall.data;
for(var index=0;index < data.length; index++){
var cell = newRow.insertCell(-1);
cell.innerHTML = formatter ? formatter(index, data[index]): data[index];
}
}
// Create regular body
tBody = document.createElement('tbody');
tableRef.appendChild(tBody);
var regexp;
if(seriesFilter) {
regexp = new RegExp(seriesFilter, 'i');
}
// Populate body with data.items array
for(var index=0; index < info.items.length; index++){
var item = info.items[index];
if((!regexp || filtersOnlySampleSeries && !info.supportsControllersDiscrimination || regexp.test(item.data[seriesIndex]))
&&
(!showControllersOnly || !info.supportsControllersDiscrimination || item.isController)){
if(item.data.length > 0) {
var newRow = tBody.insertRow(-1);
for(var col=0; col < item.data.length; col++){
var cell = newRow.insertCell(-1);
cell.innerHTML = formatter ? formatter(col, item.data[col]) : item.data[col];
}
}
}
}
// Add support of columns sort
table.tablesorter({sortList : defaultSorts});
}
$(document).ready(function() {
// Customize table sorter default options
$.extend( $.tablesorter.defaults, {
theme: 'blue',
cssInfoBlock: "tablesorter-no-sort",
widthFixed: true,
widgets: ['zebra']
});
var data = {"OkPercent": 99.42736491890335, "KoPercent": 0.5726350810966442};
var dataset = [
{
"label" : "FAIL",
"data" : data.KoPercent,
"color" : "#FF6347"
},
{
"label" : "PASS",
"data" : data.OkPercent,
"color" : "#9ACD32"
}];
$.plot($("#flot-requests-summary"), dataset, {
series : {
pie : {
show : true,
radius : 1,
label : {
show : true,
radius : 3 / 4,
formatter : function(label, series) {
return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'
+ label
+ '<br/>'
+ Math.round10(series.percent, -2)
+ '%</div>';
},
background : {
opacity : 0.5,
color : '#000'
}
}
}
},
legend : {
show : true
}
});
// Creates APDEX table
createTable($("#apdexTable"), {"supportsControllersDiscrimination": true, "overall": {"data": [0.8186095737760858, 500, 1500, "Total"], "isController": false}, "titles": ["Apdex", "T (Toleration threshold)", "F (Frustration threshold)", "Label"], "items": [{"data": [0.8186095737760858, 500, 1500, "HTTP Request"], "isController": false}]}, function(index, item){
switch(index){
case 0:
item = item.toFixed(3);
break;
case 1:
case 2:
item = formatDuration(item);
break;
}
return item;
}, [[0, 0]], 3);
// Create statistics table
createTable($("#statisticsTable"), {"supportsControllersDiscrimination": true, "overall": {"data": ["Total", 187554, 1074, 0.5726350810966442, 1231.2607142476193, 7, 43488, 119.0, 6578.0, 7309.850000000002, 9794.960000000006, 606.5939610339207, 107.18781609606651, 88.34771355662501], "isController": false}, "titles": ["Label", "#Samples", "FAIL", "Error %", "Average", "Min", "Max", "Median", "90th pct", "95th pct", "99th pct", "Transactions/s", "Received", "Sent"], "items": [{"data": ["HTTP Request", 187554, 1074, 0.5726350810966442, 1231.2607142476193, 7, 43488, 119.0, 6578.0, 7309.850000000002, 9794.960000000006, 606.5939610339207, 107.18781609606651, 88.34771355662501], "isController": false}]}, function(index, item){
switch(index){
// Errors pct
case 3:
item = item.toFixed(2) + '%';
break;
// Mean
case 4:
// Mean
case 7:
// Median
case 8:
// Percentile 1
case 9:
// Percentile 2
case 10:
// Percentile 3
case 11:
// Throughput
case 12:
// Kbytes/s
case 13:
// Sent Kbytes/s
item = item.toFixed(2);
break;
}
return item;
}, [[0, 0]], 0, summaryTableHeader);
// Create error table
createTable($("#errorsTable"), {"supportsControllersDiscrimination": false, "titles": ["Type of error", "Number of errors", "% in errors", "% in all samples"], "items": [{"data": ["Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to 10.10.10.80:30999 [/10.10.10.80] failed: Connection refused: connect", 192, 17.877094972067038, 0.10237051729102019], "isController": false}, {"data": ["Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to 10.10.10.80:30999 [/10.10.10.80] failed: Connection timed out: connect", 882, 82.12290502793296, 0.470264563805624], "isController": false}]}, function(index, item){
switch(index){
case 2:
case 3:
item = item.toFixed(2) + '%';
break;
}
return item;
}, [[1, 1]]);
// Create top5 errors by sampler
createTable($("#top5ErrorsBySamplerTable"), {"supportsControllersDiscrimination": false, "overall": {"data": ["Total", 187554, 1074, "Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to 10.10.10.80:30999 [/10.10.10.80] failed: Connection timed out: connect", 882, "Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to 10.10.10.80:30999 [/10.10.10.80] failed: Connection refused: connect", 192, "", "", "", "", "", ""], "isController": false}, "titles": ["Sample", "#Samples", "#Errors", "Error", "#Errors", "Error", "#Errors", "Error", "#Errors", "Error", "#Errors", "Error", "#Errors"], "items": [{"data": ["HTTP Request", 187554, 1074, "Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to 10.10.10.80:30999 [/10.10.10.80] failed: Connection timed out: connect", 882, "Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to 10.10.10.80:30999 [/10.10.10.80] failed: Connection refused: connect", 192, "", "", "", "", "", ""], "isController": false}]}, function(index, item){
return item;
}, [[0, 0]], 0);
});
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, ' '));
return config.json ? JSON.parse(s) : s;
} catch(e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function (key, value, options) {
// Write
if (value !== undefined && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setTime(+t + days * 864e+5);
}
return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// Read
var result = key ? undefined : {};
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
var cookies = document.cookie ? document.cookie.split('; ') : [];
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split('=');
var name = decode(parts.shift());
var cookie = parts.join('=');
if (key && key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function (key, options) {
if ($.cookie(key) === undefined) {
return false;
}
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
};
}));
/* Flot plugin for stacking data sets rather than overlyaing them.
Copyright (c) 2007-2014 IOLA and Ole Laursen.
Licensed under the MIT license.
The plugin assumes the data is sorted on x (or y if stacking horizontally).
For line charts, it is assumed that if a line has an undefined gap (from a
null point), then the line above it should have the same gap - insert zeros
instead of "null" if you want another behaviour. This also holds for the start
and end of the chart. Note that stacking a mix of positive and negative values
in most instances doesn't make sense (so it looks weird).
Two or more series are stacked when their "stack" attribute is set to the same
key (which can be any number or string or just "true"). To specify the default
stack, you can set the stack option like this:
series: {
stack: null/false, true, or a key (number/string)
}
You can also specify it for a single series, like this:
$.plot( $("#placeholder"), [{
data: [ ... ],
stack: true
}])
The stacking order is determined by the order of the data series in the array
(later series end up on top of the previous).
Internally, the plugin modifies the datapoints in each series, adding an
offset to the y value. For line series, extra data points are inserted through
interpolation. If there's a second y value, it's also adjusted (e.g for bar
charts or filled areas).
*/
/**
* Patched version as per https://github.com/flot/flot/issues/326
*/
(function ($) {
var options = {
series: { stack: null } // or number/string
};
function init(plot) {
// will be built up dynamically as a hash from x-value to
var stackBases = {};
function stackData(plot, s, datapoints) {
if (s.stack == null || s.stack === false)
return;
var newPoints = [];
for (var i=0; i < datapoints.points.length; i += 3) {
if (!stackBases[datapoints.points[i]]) {
stackBases[datapoints.points[i]] = 0;
}
// note that the values need to be turned into absolute y-values.
// in other words, if you were to stack (x, y1), (x, y2), and (x, y3), (each from different series, which is where stackBases comes in),
// you'd want the new points to be (x, y1, 0), (x, y1+y2, y1), (x,y1+y2+y3, y1+y2)
// generally, (x, thisValue + (base up to this point), + (base up tothis point))
newPoints[i] = datapoints.points[i];
newPoints[i+1] = datapoints.points[i+1] + stackBases[datapoints.points[i]];
newPoints[i+2] = stackBases[datapoints.points[i]];
stackBases[datapoints.points[i]] += datapoints.points[i+1];
}
datapoints.points = newPoints;
}
plot.hooks.processDatapoints.push(stackData);
}
$.plot.plugins.push({
init: init,
options: options,
name: 'stack',
version: '1.2-patch-326'
});
})(jQuery);
(function(k){var a=new Hashtable();var f=["ae","au","ca","cn","eg","gb","hk","il","in","jp","sk","th","tw","us"];var b=["at","br","de","dk","es","gr","it","nl","pt","tr","vn"];var i=["cz","fi","fr","ru","se","pl"];var d=["ch"];var g=[[".",","],[",","."],[","," "],[".","'"]];var c=[f,b,i,d];function j(n,l,m){this.dec=n;this.group=l;this.neg=m}function h(){for(var l=0;l<c.length;l++){localeGroup=c[l];for(var m=0;m<localeGroup.length;m++){a.put(localeGroup[m],l)}}}function e(l,r){if(a.size()==0){h()}var q=".";var o=",";var p="-";if(r==false){if(l.indexOf("_")!=-1){l=l.split("_")[1].toLowerCase()}else{if(l.indexOf("-")!=-1){l=l.split("-")[1].toLowerCase()}}}var n=a.get(l);if(n){var m=g[n];if(m){q=m[0];o=m[1]}}return new j(q,o,p)}k.fn.formatNumber=function(l,m,n){return this.each(function(){if(m==null){m=true}if(n==null){n=true}var p;if(k(this).is(":input")){p=new String(k(this).val())}else{p=new String(k(this).text())}var o=k.formatNumber(p,l);if(m){if(k(this).is(":input")){k(this).val(o)}else{k(this).text(o)}}if(n){return o}})};k.formatNumber=function(q,w){var w=k.extend({},k.fn.formatNumber.defaults,w);var l=e(w.locale.toLowerCase(),w.isFullLocale);var n=l.dec;var u=l.group;var o=l.neg;var m="0#-,.";var t="";var s=false;for(var r=0;r<w.format.length;r++){if(m.indexOf(w.format.charAt(r))==-1){t=t+w.format.charAt(r)}else{if(r==0&&w.format.charAt(r)=="-"){s=true;continue}else{break}}}var v="";for(var r=w.format.length-1;r>=0;r--){if(m.indexOf(w.format.charAt(r))==-1){v=w.format.charAt(r)+v}else{break}}w.format=w.format.substring(t.length);w.format=w.format.substring(0,w.format.length-v.length);var p=new Number(q);return k._formatNumber(p,w,v,t,s)};k._formatNumber=function(m,q,n,I,t){var q=k.extend({},k.fn.formatNumber.defaults,q);var G=e(q.locale.toLowerCase(),q.isFullLocale);var F=G.dec;var w=G.group;var l=G.neg;var z=false;if(isNaN(m)){if(q.nanForceZero==true){m=0;z=true}else{return null}}if(n=="%"){m=m*100}var B="";if(q.format.indexOf(".")>-1){var H=F;var u=q.format.substring(q.format.lastIndexOf(".")+1);if(q.round==true){m=new Number(m.toFixed(u.length))}else{var M=m.toString();M=M.substring(0,M.lastIndexOf(".")+u.length+1);m=new Number(M)}var A=m%1;var C=new String(A.toFixed(u.length));C=C.substring(C.lastIndexOf(".")+1);for(var J=0;J<u.length;J++){if(u.charAt(J)=="#"&&C.charAt(J)!="0"){H+=C.charAt(J);continue}else{if(u.charAt(J)=="#"&&C.charAt(J)=="0"){var r=C.substring(J);if(r.match("[1-9]")){H+=C.charAt(J);continue}else{break}}else{if(u.charAt(J)=="0"){H+=C.charAt(J)}}}}B+=H}else{m=Math.round(m)}var v=Math.floor(m);if(m<0){v=Math.ceil(m)}var E="";if(q.format.indexOf(".")==-1){E=q.format}else{E=q.format.substring(0,q.format.indexOf("."))}var L="";if(!(v==0&&E.substr(E.length-1)=="#")||z){var x=new String(Math.abs(v));var p=9999;if(E.lastIndexOf(",")!=-1){p=E.length-E.lastIndexOf(",")-1}var o=0;for(var J=x.length-1;J>-1;J--){L=x.charAt(J)+L;o++;if(o==p&&J!=0){L=w+L;o=0}}if(E.length>L.length){var K=E.indexOf("0");if(K!=-1){var D=E.length-K;var s=E.length-L.length-1;while(L.length<D){var y=E.charAt(s);if(y==","){y=w}L=y+L;s--}}}}if(!L&&E.indexOf("0",E.length-1)!==-1){L="0"}B=L+B;if(m<0&&t&&I.length>0){I=l+I}else{if(m<0){B=l+B}}if(!q.decimalSeparatorAlwaysShown){if(B.lastIndexOf(F)==B.length-1){B=B.substring(0,B.length-1)}}B=I+B+n;return B};k.fn.parseNumber=function(l,m,o){if(m==null){m=true}if(o==null){o=true}var p;if(k(this).is(":input")){p=new String(k(this).val())}else{p=new String(k(this).text())}var n=k.parseNumber(p,l);if(n){if(m){if(k(this).is(":input")){k(this).val(n.toString())}else{k(this).text(n.toString())}}if(o){return n}}};k.parseNumber=function(s,x){var x=k.extend({},k.fn.parseNumber.defaults,x);var m=e(x.locale.toLowerCase(),x.isFullLocale);var p=m.dec;var v=m.group;var q=m.neg;var l="1234567890.-";while(s.indexOf(v)>-1){s=s.replace(v,"")}s=s.replace(p,".").replace(q,"-");var w="";var o=false;if(s.charAt(s.length-1)=="%"||x.isPercentage==true){o=true}for(var t=0;t<s.length;t++){if(l.indexOf(s.charAt(t))>-1){w=w+s.charAt(t)}}var r=new Number(w);if(o){r=r/100;var u=w.indexOf(".");if(u!=-1){var n=w.length-u-1;r=r.toFixed(n+2)}else{r=r.toFixed(w.length-1)}}return r};k.fn.parseNumber.defaults={locale:"us",decimalSeparatorAlwaysShown:false,isPercentage:false,isFullLocale:false};k.fn.formatNumber.defaults={format:"#,###.00",locale:"us",decimalSeparatorAlwaysShown:false,nanForceZero:true,round:true,isFullLocale:false};Number.prototype.toFixed=function(l){return k._roundNumber(this,l)};k._roundNumber=function(n,m){var l=Math.pow(10,m||0);var o=String(Math.round(n*l)/l);if(m>0){var p=o.indexOf(".");if(p==-1){o+=".";p=0}else{p=o.length-(p+1)}while(p<m){o+="0";p++}}return o}})(jQuery);
\ No newline at end of file
This diff is collapsed.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Apache JMeter Dashboard</title>
<!-- Bootstrap Core CSS -->
<link href="../../sbadmin2-1.0.7/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- icone onglet -->
<link rel="icon" type="image/png" href="icon-apache.png" />
<!-- MetisMenu CSS -->
<link href="../../sbadmin2-1.0.7/bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet">
<!-- Legends CSS -->
<link href="../css/legends.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../../sbadmin2-1.0.7/dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../../sbadmin2-1.0.7/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- JQuery UI style -->
<link href="../css/jquery-ui.min.css" rel="stylesheet">
<link href="../css/jquery-ui.structure.min.css" rel="stylesheet">
<link href="../css/jquery-ui.theme.min.css" rel="stylesheet">
</head>
<body>
<div id="wrapper">
<!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../../index.html">Apache JMeter Dashboard</a>
</div>
<!-- /.navbar-header -->
<div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li>
<a href="../../index.html"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
</li>
<li>
<a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Charts<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="OverTime.html">Over Time</a>
</li>
<li>
<a href="Throughput.html">Throughput</a>
</li>
<li>
<a href="ResponseTimes.html">Response Times</a>
</li>
</ul>
<!-- /.nav-second-level -->
</li>
<li>
<a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Customs Graphs<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="CustomsGraphs.html">Over Time<span class="fa arrow"></span></a>
<ul class="nav nav-third-level in" id="submenu">
</ul>
<li>
</ul>
</li>
</ul>
</div>
<!-- /.sidebar-collapse -->
</div>
<!-- /.navbar-static-side -->
</nav>
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default" >
<div class="panel-heading" style="text-align:center;">
<p class="dashboard-title">Test and Report information</p>
</div>
<div class="panel-body">
<table id="generalInfos" class="table table-bordered table-condensed " >
<tr>
<td>File:</td>
<td>"res.csv"</td>
</tr>
<tr>
<td>Start Time:</td>
<td>"4/8/23, 9:32 AM"</td>
</tr>
<tr>
<td>End Time:</td>
<td>"4/8/23, 9:37 AM"</td>
</tr>
<tr>
<td>Filter for display:</td>
<td>""</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<!-- /.row -->
<div class="row" id="graphContainer">
</div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
<!-- jQuery -->
<script src="../../sbadmin2-1.0.7/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../../sbadmin2-1.0.7/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="../../sbadmin2-1.0.7/bower_components/metisMenu/dist/metisMenu.min.js"></script>
<!-- Flot Charts JavaScript -->
<script src="../../sbadmin2-1.0.7/bower_components/flot/excanvas.min.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.pie.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.resize.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.canvas.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.navigate.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.time.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.selection.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot.tooltip/js/jquery.flot.tooltip.min.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot-axislabels/jquery.flot.axislabels.js"></script>
<script src="../js/hashtable.js"></script>
<script src="../js/jquery.numberformatter-1.2.3.min.js"></script>
<script src="../js/curvedLines.js"></script>
<script src="../js/dashboard-commons.js"></script>
<script src="../js/customGraph.js"></script>
<script src="../js/jquery-ui.min.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.threshold.js"></script>
<!-- Custom Theme JavaScript -->
<script src="../../sbadmin2-1.0.7/dist/js/sb-admin-2.js"></script>
<script src="../js/jquery.cookie.js"></script>
<script src="../../sbadmin2-1.0.7/bower_components/flot/jquery.flot.symbol.js"></script>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Apache JMeter Dashboard</title>
<!-- Bootstrap Core CSS -->
<link href="sbadmin2-1.0.7/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="sbadmin2-1.0.7/bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="sbadmin2-1.0.7/dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Dashboard css -->
<link href="content/css/dashboard.css" rel="stylesheet">
<!-- Table sorter -->
<link href="content/css/theme.blue.css" rel="stylesheet">
<!-- icon -->
<link rel="icon" type="image/png" href="content/pages/icon-apache.png" />
<!-- Custom Fonts -->
<link href="sbadmin2-1.0.7/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">Apache JMeter Dashboard</a>
</div>
<div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li>
<a href="index.html"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
</li>
<li>
<a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Charts<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="content/pages/OverTime.html">Over Time</a>
</li>
<li>
<a href="content/pages/Throughput.html">Throughput</a>
</li>
<li>
<a href="content/pages/ResponseTimes.html">Response Times</a>
</li>
</ul>
<!-- /.nav-second-level -->
</li>
<li>
<a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Customs Graphs<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="content/pages/CustomsGraphs.html">Over Time</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default" >
<div class="panel-heading" style="text-align:center;">
<p class="dashboard-title">Test and Report information</p>
</div>
<div class="panel-body">
<table id="generalInfos" class="table table-bordered table-condensed " >
<tr>
<td>Source file</td>
<td>"res.csv"</td>
</tr>
<tr>
<td>Start Time</td>
<td>"4/8/23, 9:32 AM"</td>
</tr>
<tr>
<td>End Time</td>
<td>"4/8/23, 9:37 AM"</td>
</tr>
<tr>
<td>Filter for display</td>
<td>""</td>
</tr>
</table>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default" style="text-align:center;">
<div class="panel-heading">
<p class="dashboard-title"><a href="https://en.wikipedia.org/wiki/Apdex" target="_blank">APDEX (Application Performance Index)</a></p>
</div>
<div class="panel-body">
<section id="apdex" class="col-md-12 table-responsive">
<table id="apdexTable" class="table table-bordered table-condensed tablesorter ">
</table>
</section>
</div>
</div>
</div>
<div class="col-lg-6" >
<div class="panel panel-default" style="text-align:center;">
<div class="panel-heading">
<p class="dashboard-title">Requests Summary</p>
</div>
<div class="panel-body">
<div class="flot-chart" style="height:200px;">
<div class="flot-chart-content" id="flot-requests-summary" style="height:200px;"/>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-12">
<div class="panel panel-default" style="text-align:center;">
<div class="panel-heading" >
<p class="dashboard-title">Statistics</p>
</div>
<div class="panel-body ">
<section class="col-md-12 table-responsive">
<table id="statisticsTable" class="table table-bordered table-condensed tablesorter " >
</table>
</section>
</div>
</div>
<div class="col-lg-12">
<div class="panel panel-default" style="text-align:center;">
<div class="panel-heading">
<p class="dashboard-title">Errors</p>
</div>
<div class="panel-body">
<section class="col-md-12 table-responsive">
<table id="errorsTable" class="table table-bordered table-condensed tablesorter ">
</table>
</section>
</div>
</div>
</div>
<div class="col-lg-12">
<div class="panel panel-default" style="text-align:center;">
<div class="panel-heading">
<p class="dashboard-title">Top 5 Errors by sampler</p>
</div>
<div class="panel-body">
<section class="col-md-12 table-responsive">
<table id="top5ErrorsBySamplerTable" class="table table-bordered table-condensed tablesorter ">
</table>
</section>
</div>
</div>
</div>
</div>
</div>
<!-- jQuery -->
<script src="sbadmin2-1.0.7/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="sbadmin2-1.0.7/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="sbadmin2-1.0.7/bower_components/flot/excanvas.min.js"></script>
<script src="sbadmin2-1.0.7/bower_components/flot/jquery.flot.js"></script>
<script src="sbadmin2-1.0.7/bower_components/flot/jquery.flot.pie.js"></script>
<script src="sbadmin2-1.0.7/bower_components/flot/jquery.flot.resize.js"></script>
<script src="sbadmin2-1.0.7/bower_components/flot/jquery.flot.time.js"></script>
<script src="sbadmin2-1.0.7/bower_components/flot.tooltip/js/jquery.flot.tooltip.min.js"></script>
<script src="sbadmin2-1.0.7/bower_components/flot-axislabels/jquery.flot.axislabels.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="sbadmin2-1.0.7/bower_components/metisMenu/dist/metisMenu.min.js"></script>
<script src="content/js/dashboard-commons.js"></script>
<script src="content/js/dashboard.js"></script>
<!-- Custom Theme JavaScript -->
<script src="sbadmin2-1.0.7/dist/js/sb-admin-2.js"></script>
<script type="text/javascript" src="content/js/jquery.tablesorter.min.js"></script>
</body>
</html>
This diff is collapsed.
# [Start Bootstrap](http://startbootstrap.com/) - [SB Admin 2](http://startbootstrap.com/template-overviews/sb-admin-2/)
[SB Admin 2](http://startbootstrap.com/template-overviews/sb-admin-2/) is an open source, admin dashboard template for [Bootstrap](http://getbootstrap.com/) created by [Start Bootstrap](http://startbootstrap.com/).
## Getting Started
To use this template, choose one of the following options to get started:
* Download the latest release on Start Bootstrap
* Fork this repository on GitHub
* Install via bower using `bower install startbootstrap-sb-admin-2`
## Bugs and Issues
Have a bug or an issue with this template? [Open a new issue](https://github.com/IronSummitMedia/startbootstrap-sb-admin-2/issues) here on GitHub or leave a comment on the [template overview page at Start Bootstrap](http://startbootstrap.com/template-overviews/sb-admin-2/).
## Creator
Start Bootstrap was created by and is maintained by **David Miller**, Managing Parter at [Iron Summit Media Strategies](http://www.ironsummitmedia.com/).
* https://twitter.com/davidmillerskt
* https://github.com/davidtmiller
Start Bootstrap is based on the [Bootstrap](http://getbootstrap.com/) framework created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thorton](https://twitter.com/fat).
## Copyright and License
Copyright 2013-2015 Iron Summit Media Strategies, LLC. Code released under the [Apache 2.0](https://github.com/IronSummitMedia/startbootstrap-sb-admin-2/blob/gh-pages/LICENSE) license.
{
"name": "startbootstrap-sb-admin-2",
"version": "1.0.7",
"homepage": "http://startbootstrap.com/template-overviews/sb-admin-2/",
"authors": [
"David Miller"
],
"description": "A free, open source, Bootstrap admin theme created by Start Bootstrap",
"keywords": [
"bootstrap",
"theme"
],
"license": "Apache",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests",
"pages",
"index.html",
"/js"
],
"main": [
"dist/css/sb-admin-2.css",
"dist/js/sb-admin-2.js"
],
"dependencies": {
"bootstrap": "~3.3.1",
"datatables": "~1.10.4",
"datatables-plugins": "~1.0.1",
"flot": "~0.8.3",
"font-awesome": "~4.2.0",
"metisMenu": "~1.1.3",
"datatables-responsive": "~1.0.3",
"bootstrap-social": "~4.8.0",
"flot.tooltip": "~0.8.4"
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment