main
Ogoun 5 months ago
parent df671f53a8
commit 343a43e7c3

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -1,7 +1,8 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>Web Server Health Monitor</title> <title>Планирование маршрутов</title>
<link href="styles/styles.css" rel="stylesheet" /> <link href="styles/styles.css" rel="stylesheet" />
<script src="js/jquery.min.js"></script> <script src="js/jquery.min.js"></script>
<script src="js/knockout-latest.js"></script> <script src="js/knockout-latest.js"></script>
@ -14,62 +15,40 @@
<script src="js/globalize/number.min.js"></script> <script src="js/globalize/number.min.js"></script>
<script src="js/globalize/currency.min.js"></script> <script src="js/globalize/currency.min.js"></script>
<script src="js/globalize/date.min.js"></script> <script src="js/globalize/date.min.js"></script>
<script src="js/dx.viz.js"></script> <script src="js/dx.all.js"></script>
</head> </head>
<body class="dark"> <body class="dark">
<div class="layout"> <div class="layout">
<div class="header-text">Web Server Health Monitoring</div> <div class="header-text">Планирование маршрутов</div>
<div class="img-theme" data-bind="click:toggleTheme"></div> <div class="content">
<div class="content helth"> <div class="row">
<div class="slide-button right-button" data-bind="click:goto"></div> <div class="legend-row">
<div class="row"> <div class="hr"></div>
<div class="legend-row">
<div class="legend">Requests per second</div>
<div class="hr"></div>
</div>
<div class="clear"></div>
<div class="col1">
<div class="text">View the number of requests completed at the moment and for the selected range within the last day.</div>
<label id="requestNumber" class="label-value" data-bind="text: requestsNumber"></label>
</div>
<div class="col2" data-bind="dxCircularGauge: gaugeRequestsNumberOptions"></div>
<div class="col3" id="RequestChartContainer" data-bind="dxChart: chartRequestsNumberOptions" ></div>
</div> </div>
<div class="row"> <div id="map"></div>
<div class="legend-row"> <div class="options">
<div class="legend">CPU, %</div> <div class="caption">Options</div>
<div class="hr"></div> <div class="option">
<div id="use-custom-markers"></div>
</div> </div>
<div class="clear"></div> <div class="option">
<div class="col1"> <div id="show-tooltips"></div>
<div class="text">View how much CPU is being used at the moment and for the selected range within the last day.</div>
<label id="CPU" class="label-value" data-bind="text:CPU"></label>
</div> </div>
<div class="col2" data-bind="dxCircularGauge: gaugeCPUOptions"></div>
<div class="col3" id="CPUChartContainer" data-bind="dxChart: chartCPUOptions"></div>
</div> </div>
<div class="row"> </div>
<div class="legend-row"> <div class="row">
<div class="legend">Memory Consumption, Mb</div> <div class="legend-row">
<div class="hr"></div> <div class="legend">Маршруты</div>
</div> <div class="hr"></div>
<div class="clear"></div>
<div class="col1">
<div class="text">View how much memory is used at the moment and for the selected range within the last day.</div>
<label id="memoryConsumption" class="label-value" data-bind="text:memoryConsumption"></label>
</div>
<div class="col2" data-bind="dxCircularGauge: gaugeMemoryConsumptionOptions"></div>
<div class="col3" data-bind="dxChart: chartMemoryConsumptionOptions" id="memoryChartContainer"></div>
</div>
<div class="row">
<div class="col1"></div>
<div class="col2"></div>
<div class="col3" id="rangeSelectorContainer"></div>
</div> </div>
<div class="clear"></div>
</div> </div>
</div> </div>
</div>
<script src="js/WebServerMonitor.js"></script> <script src="js/data.js"></script>
<script src="js/index.js"></script> <script src="js/index.js"></script>
</body> </body>
</html> </html>

@ -1,284 +0,0 @@
"use strict";
(function () {
window.WebServerMonitor = window.WebServerMonitor || {};
window.WebServerMonitor.ViewModel = function (action) {
var themes = ['light', 'dark'],
themeIndex = (function () {
var themeName = window.location.href.match(/[?&]theme=([^&$]*)/);
themeName = themeName && themeName.length > 1 ? themeName[1] : themes[1];
return !Boolean($.inArray(themeName, themes));
})();
action = (action || "traffic") + ".html?theme=";
this.toggleTheme = function (index) {
themeIndex = !themeIndex;
var curTheme = themes[~~(themeIndex)];
$('body').removeClass().addClass(curTheme);
this.applyTheme(curTheme, false);
};
this.goto = function () {
window.location = action + themes[~~themeIndex];
};
this.applyTheme = $.noop;
this.inherit = function (otherModel) {
var darkPalette = ['#46508c', '#556fa6', '#5d8dbc', '#62b7db', '#70cdd6', '#8ccebb'],
lightPalette = ['#737db5', '#7e93bf', '#8bafd2', '#90cce6', '#70cdd6', '#bae3d7'];
DevExpress.viz.registerPalette('Dark Palette', darkPalette);
DevExpress.viz.registerPalette('Light Palette', lightPalette);
$.extend(true, this, otherModel);
this.applyTheme(themes[~~(themeIndex)], true);
};
this.toggleTheme();
};
window.WebServerMonitor.app = {};
(function (app) {
var j,
random = Math.random,
round = Math.round,
tmpArray = [],
countriesList = ['China', 'USA', 'Russia', 'Canada', 'Japan', 'Others'],
months = [],
days = [],
hours = [24],
date = new Date(),
baseDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - 7, 4, 0);
app.arrayForBarChart = [];
app.arrayForLineChart = [];
app.arrayForStackedBar = [];
var findHoursValue = function () {
var hoursValue = [],
k;
for (k = 0; k < 6; k++) {
hoursValue.push(~~(180 * random()));
}
return hoursValue;
};
var findDayValue = function () {
var dayValue = [],
k;
for (k = 0; k < 6; k++) {
dayValue.push(~~(600 * random() + 200));
}
return dayValue;
};
for (j = 1; j < 7; j++) {
hours[j] = (baseDate.getHours());
baseDate.setHours(baseDate.getHours() + 4);
}
for (j = 0; j < 6; j++) {
months[j] = baseDate.getMonth() + 1;
days[j] = baseDate.getDate();
baseDate.setDate(baseDate.getDate() + 1);
}
tmpArray = $.map(countriesList, function (country) {
return {
country: country,
value: findDayValue(),
days: days,
hours: hours,
months: months,
hoursValue: findHoursValue()
};
});
app.arrayForBarChart = $.map(tmpArray, function (item) {
return {
country: item.country,
value: item.value[tmpArray[0].value.length - 1]
};
});
app.arrayForLineChart = (function () {
var date = new Date(),
lineChartData = [];
date.setDate(date.getDate() + 1);
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0);
lineChartData.push({
hour: date,
y1: 0,
y2: 0,
y3: 0,
y4: 0,
y5: 0,
y6: 0
});
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours() + 4, 0);
for (var i = 1; i < 6; i++) {
lineChartData.push({
hour: date,
y1: lineChartData[i - 1].y1 + ~~((app.arrayForBarChart[0].value / 10) + random() * 50),
y2: lineChartData[i - 1].y2 + ~~((app.arrayForBarChart[1].value / 10) + random() * 50),
y3: lineChartData[i - 1].y3 + ~~((app.arrayForBarChart[2].value / 10) + random() * 50),
y4: lineChartData[i - 1].y4 + ~~((app.arrayForBarChart[3].value / 10) + random() * 50),
y5: lineChartData[i - 1].y5 + ~~((app.arrayForBarChart[4].value / 10) + random() * 50),
y6: lineChartData[i - 1].y6 + ~~((app.arrayForBarChart[5].value / 10) + random() * 50)
});
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours() + 4, 0);
}
return lineChartData;
})();
app.arrayForStackedBar = (function (arr) {
var data = [],
dataItem,
sum = [0, 0, 0, 0, 0, 0],
i,
j;
for (i = 0; i < 6; i++) {
for (j = 0; j < 6; j++) {
sum[i] += arr[j].value[i];
}
}
for (i = 0; i < 6; i++) {
data[i] = {
day: arr[0].days[i] + '/' + arr[0].months[i],
y1: round((arr[0].value[i] / sum[i]) * 100),
y2: round((arr[1].value[i] / sum[i]) * 100),
y3: round((arr[2].value[i] / sum[i]) * 100),
y4: round((arr[3].value[i] / sum[i]) * 100),
y5: round((arr[4].value[i] / sum[i]) * 100),
y6: 0
};
dataItem = data[i];
dataItem.y6 = 100 - (dataItem.y1 + dataItem.y2 + dataItem.y3 + dataItem.y4 + dataItem.y5);
}
return data;
})(tmpArray);
var findRandomValue = function () {
var randomArray = [],
timeNow = new Date();
timeNow.setDate(timeNow.getDate() - 3);
timeNow.setHours(12);
timeNow.setMinutes(0);
for (var i = 0; i < 37; i++) {
randomArray.push({
x: new Date(timeNow.getFullYear(), timeNow.getMonth(), timeNow.getDate(), timeNow.getHours()),
y1: ~~(Math.random() * 200),
y2: ~~(Math.random() * 100),
y3: ~~(Math.random() * 1000)
});
timeNow.setHours(timeNow.getHours() + 2);
}
return randomArray;
};
app.allSeries = findRandomValue();
app._createGaugeOptions = function (gaugeValue, tickInterval, gaugeRanges, colors) {
var gaugeOptions = {
size: {
width: 210,
height: 175
},
margin: {
left: 10,
right: 10,
top: 10,
bottom: 10
},
containerBackgroundColor: colors.bkgColor,
scale: {
startValue: gaugeRanges[0].startValue,
endValue: gaugeRanges[3].endValue,
label: {
font: {
color: colors.fontColor
},
indentFromTick: 8
},
tick: {
color: 'none'
},
tickInterval: tickInterval
},
rangeContainer: {
width: 3,
ranges: gaugeRanges,
backgroundColor: 'none'
},
value: gaugeValue,
valueIndicator: {
offset: 5,
indentFromCenter: 7,
color: colors.needle
}
};
return gaugeOptions;
};
app._createChartOptions = function (allSeries, maxValue, chartField, chartColor, colors, animation) {
var chartOptions = {
commonAxisSettings: {
visible: false,
tick: {
visible: false
},
grid: {
color: colors.gridColor,
opacity:1
},
label: {
font: {
color: colors.fontColor
}
}
},
margin: {
top: 5,
bottom: 5,
right: 36
},
argumentAxis: {
valueMarginsEnabled: false,
grid: { visible: true }
},
animation: animation,
commonPaneSettings: {
border: {
visible: true,
color: colors.gridColor,
opacity:1
}
},
legend: { visible: false },
dataSource: allSeries,
valueAxis: {
placeholderSize: 60,
valueMarginsEnabled: false,
visualRange: {
startValue: 0
}
},
series: [
{
argumentField: 'x',
valueField: chartField,
type: 'area',
point: { visible: false },
color: chartColor,
style: { opacity: 0.38 }
}]
};
return chartOptions;
};
}(window.WebServerMonitor.app));
}());

@ -0,0 +1,345 @@
data = {
"regions": [{
"name": "Алтай",
"points": [{
"name": "Гора Белуха",
"description": "Высочайшая вершина Горного Алтая, с потрясающим видом на окружающие горы и ледники.",
"gps": "50.7144, 86.5861"
},
{
"name": "Озеро Кучерлинское",
"description": "Кристально чистое озеро, окруженное высокими горами, особенно красиво на закате.",
"gps": "50.5854, 86.1704"
},
{
"name": "Гора Актру",
"description": "Панорамный вид на Актруский хребет, луга и леса.",
"gps": "50.1999, 86.0329"
},
{
"name": "Каньон Чулышман",
"description": "Глубокий каньон, вырезанный рекой Чулышман, с дикой и живописной красотой.",
"gps": "50.7004, 87.3289"
},
{
"name": "Гора Горелый Камень",
"description": "Вид на озеро Телецкое и горы.",
"gps": "51.6088, 87.5417"
},
{
"name": "Озеро Телецкое",
"description": "Крупнейшее озеро Алтая с кристально чистой водой и окружающими горами.",
"gps": "51.7683, 87.7138"
},
{
"name": "Гора Чертов Щит",
"description": "Панорамный вид на озеро Кучерлинское и горы.",
"gps": "50.4394, 86.1293"
},
{
"name": "Озеро Аккем",
"description": "Прекрасное озеро в Аккемской долине с отражением гор.",
"gps": "50.2185, 86.6175"
},
{
"name": "Гора Курманджи",
"description": "Вид на сосновые леса и окружающие горы.",
"gps": "50.1061, 85.8888"
},
{
"name": "Озеро Синецкое",
"description": "Озеро с ярко-синей водой, окруженное горами.",
"gps": "51.0296, 85.6982"
},
{
"name": "Гора Казырчик",
"description": "Панорамный вид на долину реки Чулышман.",
"gps": "50.5366, 87.1453"
},
{
"name": "Озеро Шавлинское",
"description": "Красивое озеро с темной водой и окружающей природой.",
"gps": "50.2278, 87.4682"
},
{
"name": "Гора Монхон",
"description": "Вид на озеро Киделю и горы Северо-Чуйский хребет.",
"gps": "50.3131, 87.4837"
},
{
"name": "Озеро Киделя",
"description": "Озеро с прозрачной водой и окружающими горами.",
"gps": "49.9272, 87.2483"
},
{
"name": "Гора Алтын-Ту",
"description": "Панорамный вид на долину Аккема и сосновые леса.",
"gps": "50.1532, 86.8409"
},
{
"name": "Озеро Большое Мультинское",
"description": "Красивое озеро в окружении гор.",
"gps": "50.3530, 86.3885"
},
{
"name": "Гора Кузнецкий Алатау",
"description": "Вид на луга и окружающие горы.",
"gps": "53.3458, 87.0526"
},
{
"name": "Озеро Белое",
"description": "Озеро с кристально чистой водой и отражением гор.",
"gps": "51.2346, 85.7923"
},
{
"name": "Гора Томичка",
"description": "Панорамный вид на долину реки Катунь и окружающие хребты.",
"gps": "51.8150, 85.9910"
},
{
"name": "Озеро Мультинское",
"description": "Прекрасное озеро в Аккемской долине с видом на горы.",
"gps": "50.3276, 86.4315"
},
{
"name": "Гора Большой Уштас",
"description": "Вид на реку Катунь и окружающие хребты.",
"gps": "52.6889, 85.8830"
},
{
"name": "Озеро Сарыколь",
"description": "Озеро с ярко-голубой водой, окруженное горами и лугами.",
"gps": "50.4194, 87.1858"
},
{
"name": "Гора Семенов-Тянь-Шань",
"description": "Панорамный вид на Алтайские горы и бескрайние просторы.",
"gps": "50.3056, 87.5547"
},
{
"name": "Озеро Кара-Кёль",
"description": "Озеро с темной водой, окруженное скалами и лесами.",
"gps": "50.4153, 86.0706"
},
{
"name": "Гора Крылатая",
"description": "Вид на долину реки Чулышман и окружающие хребты.",
"gps": "50.2278, 87.4682"
},
{
"name": "Гора Большой Турчан",
"description": "Панорамный вид на озеро Аккем и сосновые леса.",
"gps": "50.1925, 86.6286"
},
{
"name": "Озеро Долгое",
"description": "Красивое озеро в окружении гор и лугов.",
"gps": "50.3078, 86.0633"
},
{
"name": "Гора Катуньский Хребет",
"description": "Вид на долину реки Катунь и сосновые леса.",
"gps": "51.0254, 86.2282"
},
{
"name": "Озеро Аккуль",
"description": "Озеро с яркой зеленоватой водой и песчаными пляжами.",
"gps": "50.4500, 86.4458"
},
{
"name": "Гора Большой Сумоно",
"description": "Панорамный вид на Алтайские горы и озеро Телецкое.",
"gps": "51.2366, 87.7101"
}
]
},
{
"name": "Кавказ",
"points": [{
"name": "Эльбрус",
"description": "Самая высокая гора в Европе, предлагает потрясающий вид на окружающие горные вершины и долины.",
"gps": "43.3500, 42.4500"
},
{
"name": "Красная Поляна",
"description": "Популярный горнолыжный курорт с великолепными пейзажами и множеством развлечений.",
"gps": "43.6814, 40.2326"
},
{
"name": "Домбай",
"description": "Природный парк с высокими горами, каскадами водопадов и живописными лугами.",
"gps": "43.2557, 40.3121"
},
{
"name": "Гора Чегет",
"description": "Популярная туристическая база с видом на Эльбрус и окружающие горные вершины.",
"gps": "43.2353, 42.6099"
},
{
"name": "Тебердинский заповедник",
"description": "Заповедник с уникальной флорой и фауной, где можно увидеть различные виды растений и животных.",
"gps": "43.4487, 41.7627"
},
{
"name": "Озеро Рица",
"description": "Кристально чистое озеро с прекрасными горными пейзажами и возможностями для рыбной ловли и отдыха.",
"gps": "43.1939, 42.7036"
},
{
"name": "Водопады Абхазии",
"description": "Серия живописных водопадов, включая Водопады Агуа, Водопады Мамзырпсы и другие.",
"gps": "43.3339, 40.0906"
},
{
"name": "Гора Фишт",
"description": "Вторая по высоте вершина Кавказа, предлагает потрясающий вид на горные хребты и долины.",
"gps": "43.3519, 40.2311"
},
{
"name": "Гора Казбек",
"description": "Одна из высочайших вершин Кавказа с уникальной формой и потрясающими видами.",
"gps": "42.7034, 44.5071"
},
{
"name": "Скала Столбы",
"description": "Несколько высоких скал, известных своими уникальными формами и панорамными видами.",
"gps": "43.5200, 40.1433"
},
{
"name": "Гора Шхара",
"description": "Одна из самых высоких вершин Главного Кавказского хребта, с потрясающими видами и возможностями для альпинизма.",
"gps": "42.6804, 43.3585"
},
{
"name": "Ачигварские водопады",
"description": "Серия каскадных водопадов в красивой горной местности.",
"gps": "42.6941, 42.8152"
},
{
"name": "Гора Мусса-Ачитара",
"description": "Величественная гора с прекрасными пейзажами и интересными маршрутами для пеших прогулок.",
"gps": "43.4086, 42.5462"
},
{
"name": "Гора Оштен",
"description": "Уникальная скальная формация с живописными видами на окружающие горы и долины.",
"gps": "43.1366, 40.7408"
},
{
"name": "Гора Пшиш",
"description": "Известная вершина, предлагающая потрясающий вид на Северный Кавказ.",
"gps": "42.7320, 43.4290"
},
{
"name": "Хребет Каменка",
"description": "Панорамные виды на горные луга и долины, отличные места для пеших прогулок и фотографии.",
"gps": "42.5844, 41.0029"
},
{
"name": "Озеро Гиагин",
"description": "Красивое горное озеро с яркой синей водой, окруженное высокими скалами.",
"gps": "42.9697, 43.5361"
},
{
"name": "Архыз",
"description": "Живописное горное поселение с изумительными видами и возможностями для туризма и активного отдыха.",
"gps": "43.5562, 41.4452"
}
]
},
{
"name": "Сахалин",
"points": [{
"name": "Гора Аникеевка",
"description": "Высокая вершина с прекрасным видом на остров и Татарский пролив.",
"gps": "46.6273, 142.5289"
},
{
"name": "Озеро Тунайча",
"description": "Красивое озеро с чистой водой и окружающими лесами.",
"gps": "46.4658, 142.7892"
},
{
"name": "Берег Японского моря",
"description": "Прекрасные пляжи и виды на Японское море, идеальное место для отдыха и наблюдения за закатами.",
"gps": "42.812166575, 133.722529264"
},
{
"name": "Плато Ливадийский",
"description": "Живописное плато с уникальной флорой и фауной, идеальное место для прогулок и пикников.",
"gps": "46.7391, 142.8303"
},
{
"name": "Остров Русский",
"description": "Исторический и культурный центр с прекрасными пейзажами и множеством достопримечательностей.",
"gps": "46.9056, 142.7207"
},
{
"name": "Гора Вулканчик",
"description": "Небольшая активная гора с возможностью подъема на вершину и видом на окружающие пейзажи.",
"gps": "46.9346, 142.7462"
},
{
"name": "Остров Моржовец",
"description": "Место, где можно увидеть моржей и других морских животных, а также насладиться красивыми пейзажами.",
"gps": "47.2903, 142.6831"
},
{
"name": "Бухта Александра",
"description": "Живописная бухта с прекрасными видами на море и окружающие горы.",
"gps": "46.9408, 142.7474"
},
{
"name": "Озеро Большой Иткуль",
"description": "Крупное озеро с чистой водой, окруженное густыми лесами и горами.",
"gps": "46.7767, 142.3050"
},
{
"name": "Мыс Столбчатый",
"description": "Уникальный каменный обрыв на берегу Татарского пролива, предлагающий потрясающие виды на море и окружающие горы.",
"gps": "46.8624, 142.5412"
},
{
"name": "Гора Семушки",
"description": "Высокая вершина с великолепным видом на окружающие горы и долины.",
"gps": "46.8024, 142.7473"
},
{
"name": "Озеро Горное",
"description": "Красивое горное озеро с яркой водой и живописными пейзажами.",
"gps": "47.0456, 142.0719"
},
{
"name": "Парк Зеленый остров",
"description": "Очаровательный парк с живописными аллеями, озерами и растительностью.",
"gps": "46.9573, 142.7362"
},
{
"name": "Мыс Патрокль",
"description": "Прекрасный природный заповедник с крутыми скалами и бурной морской стихией.",
"gps": "46.6403, 141.8701"
},
{
"name": "Остров Троицкий",
"description": "Маленький остров с белыми песчаными пляжами и кристально чистой водой.",
"gps": "46.8117, 142.5963"
},
{
"name": "Вулкан Райкузи",
"description": "Активный вулкан с живописным кратером и великолепными видами на природные ландшафты.",
"gps": "47.1120, 142.8137"
},
{
"name": "Полярный круг",
"description": "Место, где можно пересечь Полярный круг и увидеть уникальные явления природы в зимний период.",
"gps": "66.5608, 164.0014"
},
{
"name": "Остров Матуа",
"description": "Заповедный остров с уникальной природой и историческими достопримечательностями.",
"gps": "48.9817, 153.5418"
}
]
}
]
};

File diff suppressed because one or more lines are too long

@ -1,219 +1,54 @@
"use strict"; $(() => {
let markersData = [];
(function(){ for(var r_idx in data['regions'])
var view = new window.WebServerMonitor.ViewModel(), {
requestChart, var region = data['regions'][r_idx]
cpuChart, for(var p_idx in region.points)
memoryChart; {
var point = region.points[p_idx];
var loc = point.gps.split(',');
var lat = parseFloat(loc[0].trim())
var lon = parseFloat(loc[1].trim())
markersData.push({ location: [lat, lon], tooltip: { text: point.name, },}, );
}
}
view.inherit(function(){ const markerUrl = './img/map-marker.png';
var gaugesPalette,
chartsPalette,
app = window.WebServerMonitor.app,
colors,
fonts,
allSeries = app.allSeries;
return { const mapWidget = $('#map').dxMap({
applyTheme: function (theme, animation) { provider: 'bing',
if (theme === 'dark') { apiKey: {
gaugesPalette = ['#7cd2c7', '#f9d191', '#f9d191', '#fd7888', '#8b98c2']; bing: 'AnpoY0kAA4Kk5A045nQxyVbrlkNTgOuMVBitLxN_iLnZdtONf21HxUTzXwNIebES',
chartsPalette = ['#58ffe8', '#5eceff', '#93a9ff']; },
colors = { zoom: 11,
fontColor:'#a7acbc', height: 440,
gridColor:'#515873', width: '100%',
bkgColor: '#363E5B', controls: true,
needle: '#ffffff', markerIconSrc: markerUrl,
shutter: { markers: markersData,
color: '#363e5b', type: 'roadmap'
opacity: 0.65 }).dxMap('instance');
}
};
fonts = {
sliderMarker: {
color: '#43474b',
size: 11,
weight: 400
}
};
} else {
gaugesPalette = ['#76c8bd', '#f7c676', '#f7c676', '#c5819a', '#96a3d4'];
chartsPalette = ['#76c8bd', '#75c0e0', '#c5cce7'];
colors = {
fontColor: '#7f7f7f',
gridColor: '#e9e9e9',
bkgColor: '#ffffff',
needle: '#43474b',
shutter: {
color: 'white',
opacity: 0.65
}
};
fonts = {
sliderMarker: {
color: 'white',
size: 11,
weight: 400
}
}; $('#use-custom-markers').dxCheckBox({
} value: true,
this.gaugeRequestsNumberOptions(app._createGaugeOptions(allSeries[36].y1, text: 'Use custom marker icons',
50, onValueChanged(data) {
[{ mapWidget.option('markers', markersData);
startValue: 0, mapWidget.option('markerIconSrc', data.value ? markerUrl : null);
endValue: 48, },
color: gaugesPalette[0] });
}, {
startValue: 52,
endValue: 98,
color: gaugesPalette[1]
}, {
startValue: 102,
endValue: 148,
color: gaugesPalette[2]
}, {
startValue: 152,
endValue: 200,
color: gaugesPalette[3]
}],
colors));
this.gaugeCPUOptions(app._createGaugeOptions(allSeries[36].y2,
25,
[{
startValue: 0,
endValue: 24,
color: gaugesPalette[0]
}, {
startValue: 26,
endValue: 49,
color: gaugesPalette[1]
}, {
startValue: 51,
endValue: 74,
color: gaugesPalette[2]
}, {
startValue: 76,
endValue: 100,
color: gaugesPalette[3]
}],
colors));
this.gaugeMemoryConsumptionOptions(app._createGaugeOptions(allSeries[36].y3,
250,
[{
startValue: 0,
endValue: 240,
color: gaugesPalette[4]
}, {
startValue: 260,
endValue: 490,
color: gaugesPalette[4]
}, {
startValue: 510,
endValue: 740,
color: gaugesPalette[4]
}, {
startValue: 760,
endValue: 1000,
color: gaugesPalette[4]
}],
colors));
this.chartRequestsNumberOptions(app._createChartOptions(allSeries, 200, 'y1', chartsPalette[0], colors, animation));
this.chartCPUOptions(app._createChartOptions(allSeries, 100, 'y2', chartsPalette[1], colors, animation));
this.chartMemoryConsumptionOptions(app._createChartOptions(allSeries, 1000, 'y3', chartsPalette[2], colors, animation));
$('#rangeSelectorContainer').empty();
$('#rangeSelectorContainer').removeData();
$('#rangeSelectorContainer').dxRangeSelector({
containerBackgroundColor: colors.bkgColor,
margin: {
bottom: 0,
left: 0,
top: 0,
right: 0
},
minorTick: {
visible: true
},
tickInterval: {
hours: 12
},
scale: {
minorTickInterval: { hours: 4 },
minRange: 'hour',
tick: {
color: colors.gridColor,
opacity: 1
},
label: {
font: {
color: colors.fontColor
}
}
},
dataSource: allSeries,
behavior: {
callValueChanged: 'onMoving',
animationEnabled: false
},
indent: {
left: 60,
right: 60
},
sliderMarker: {
format: 'hour',
font: fonts.sliderMarker,
color: colors.needle
},
shutter: colors.shutter,
onValueChanged: function(e) {
zoomChart(requestChart, e);
zoomChart(cpuChart, e);
zoomChart(memoryChart, e);
},
chart: {
palette: chartsPalette,
commonSeriesSettings: {
type: 'area',
argumentField: 'x'
},
topIndent: 0,
bottomIndent: 0,
valueAxis: {
visualRange: {
startValue: 0
}
},
series: [{
valueField: 'y1'
}, {
valueField: 'y2'
}, {
valueField: 'y3'
}]
}
});
},
requestsNumber: allSeries[36].y1,
CPU: allSeries[36].y2,
memoryConsumption: allSeries[36].y3,
gaugeRequestsNumberOptions: ko.observable({}),
gaugeCPUOptions: ko.observable({}),
gaugeMemoryConsumptionOptions: ko.observable({}),
chartRequestsNumberOptions: ko.observable({}),
chartCPUOptions: ko.observable({}),
chartMemoryConsumptionOptions: ko.observable({})
};
}());
ko.applyBindings(view);
requestChart = $('#RequestChartContainer').dxChart('instance'); $('#show-tooltips').dxButton({
cpuChart = $('#CPUChartContainer').dxChart('instance'); text: 'Show all tooltips',
memoryChart = $('#memoryChartContainer').dxChart('instance'); onClick() {
const newMarkers = $.map(markersData, (item) => $.extend(
true,
{},
item,
{ tooltip: { isShown: true } },
));
function zoomChart(chart, args) { mapWidget.option('markers', newMarkers);
clearTimeout(chart.zoomTimeout); },
chart.zoomTimeout = setTimeout(function () { });
chart.getArgumentAxis().visualRange(args.value); });
}, 30);
}
}());

@ -1,249 +0,0 @@
"use strict";
(function () {
var view = new window.WebServerMonitor.ViewModel("index");
view.inherit(function () {
var palette,
fontColor,
gridColor,
bkgColor,
app = window.WebServerMonitor.app,
labelTextColor,
labelColor;
return {
applyTheme: function (theme, animation) {
if (theme == 'dark') {
palette = 'Dark Palette';
fontColor = '#a7acbc';
gridColor = '#515873';
bkgColor = '#363E5B';
labelTextColor = '#363e5b';
labelColor = 'white';
} else {
palette = 'Light Palette';
fontColor = '#7f7f7f';
gridColor = '#e9e9e9';
bkgColor = '#ffffff';
labelTextColor = 'white';
labelColor = '#43474b';
}
this.pieChartOptions({
palette: palette,
size: {
height: 270
},
margin: {
top: 30
},
legend: {
visible: false
},
tooltip: {
enabled: true,
customizeText: function () {
return this.argumentText + '<br/>' + this.percentText;
}
},
animation: animation,
dataSource: app.arrayForBarChart,
series: {
border: {
color: bkgColor,
width: 2,
visible: true
},
hoverStyle: {
border: {
color: bkgColor,
width: 2,
visible: true
}
},
argumentField: 'country',
valueField: 'value'
}
});
this.barChartOptions({
commonAxisSettings: {
visible: false,
tick: {
visible: false
},
grid: {
color: gridColor,
opacity:1
},
label: {
font: {
color: fontColor
}
}
},
animation: animation,
margin: {
right: 177
},
commonSeriesSettings: {
type: 'bar'
},
valueAxis: {
visualRange: {
startValue: 0,
endValue: 1000
}
},
legend: { visible: false },
dataSource: app.arrayForBarChart,
series: [{
label: {
visible: true,
backgroundColor: labelColor,
font: {
color: labelTextColor,
size:11
}
},
argumentField: 'country',
valueField: 'value',
color: DevExpress.viz.getPalette(palette).simpleSet[2]
}]
});
this.stackedBarChartOptions({
palette: palette,
commonAxisSettings: {
visible: false,
tick: {
visible: false
},
grid: {
color: gridColor,
opacity: 1,
},
label: {
font: {
color: fontColor
}
},
opacity: 1
},
animation: animation,
commonSeriesSettings: {
argumentField: 'day',
type: 'stackedBar'
},
valueAxis: {
inverted: true,
label: {
customizeText: function () {
return 100 - this.value;
}
}
},
legend: {
margin: 30,
rowItemSpacing: 10,
markerSize: 20,
font: {
color:fontColor
}
},
margin: {
top: 16,
right: 41
},
dataSource: app.arrayForStackedBar,
series: [{
valueField: 'y1',
name: 'China'
}, {
valueField: 'y2',
name: 'USA'
}, {
valueField: 'y3',
name: 'Russia'
}, {
valueField: 'y4',
name: 'Canada'
}, {
valueField: 'y5',
name: 'Japan'
}, {
valueField: 'y6',
name: 'Others'
}]
});
this.lineChartOptions({
palette: palette,
commonAxisSettings: {
visible: false,
tick: {
visible: false
},
valueMarginsEnabled: false,
grid: {
color: gridColor,
visible: true,
opacity: 1
},
label: {
font: {
color: fontColor
}
},
opacity: 1
},
animation: animation,
size: {
width: 400
},
margin: {
top: 16
},
commonSeriesSettings: {
argumentField: 'hour',
type: 'spline',
point: { visible: false }
},
commonPaneSettings: {
border: {
visible: true,
color: gridColor,
opacity:1
}
},
argumentAxis: {
tickInterval: {
hours: 4
}
},
valueAxis: {
visualRange: {
startValue: 0,
endValue: 500
}
},
legend: { visible: false },
dataSource: app.arrayForLineChart,
series: [{
valueField: 'y1'
}, {
valueField: 'y2'
}, {
valueField: 'y3'
}, {
valueField: 'y4'
}, {
valueField: 'y5'
}, {
valueField: 'y6'
}]
});
},
pieChartOptions: ko.observable({}),
barChartOptions: ko.observable({}),
stackedBarChartOptions: ko.observable({}),
lineChartOptions: ko.observable({})
};
}());
ko.applyBindings(view);
}());

@ -64,7 +64,7 @@
.content .content
{ {
width: 1070px; width: 1070px;
height: 750px; height: 960px;
padding: 40px 100px; padding: 40px 100px;
} }
@ -103,7 +103,7 @@
.row .row
{ {
width: 1070px; width: 1070px;
height: 180px; height: 450px;
margin-top: 10px; margin-top: 10px;
overflow: hidden; overflow: hidden;
} }
@ -181,7 +181,7 @@
.helth .row .col2 .helth .row .col2
{ {
width: 210px; width: 210px;
height: 175px; height: 375px;
float: left; float: left;
margin: -10px 0 0 0; margin: -10px 0 0 0;
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.