13 changed files with 186 additions and 23 deletions
@ -0,0 +1,25 @@ |
|||
import {StatsOfPeakOfDay} from "./StatsOfPeakOfDay"; |
|||
import {StatsOfPeakOfPerFiveMinutes} from "./StatsOfPeakOfPerFiveMinutes"; |
|||
|
|||
export class GraphData { |
|||
labels: any[] = []; |
|||
data: {data:any[], label: string, backgroundColor: string}[] = []; |
|||
|
|||
static fromStatsOfPeakOfDay(d: StatsOfPeakOfDay[], color: string) { |
|||
const g = new GraphData(); |
|||
g.labels = d.map((gg) => gg.date); |
|||
g.data.push( |
|||
{label: "Игроков", data: d.map((gg) => gg.avg), backgroundColor: color} |
|||
) |
|||
return g; |
|||
} |
|||
|
|||
static fromStatsOfPeakOfPerFiveMinutes(d: StatsOfPeakOfPerFiveMinutes[], color: string) { |
|||
const g = new GraphData(); |
|||
g.labels = d.map((gg) => gg.timestamp.toLocaleString()); |
|||
g.data.push( |
|||
{label: "Игроков", data: d.map((gg) => gg.max), backgroundColor: color} |
|||
) |
|||
return g; |
|||
} |
|||
} |
@ -1,15 +1,60 @@ |
|||
<div class="content-in-center-header" style="flex-direction: column;"> |
|||
<h1>Статистика</h1> |
|||
<h3>Скоро и ты сюда попадешь браток</h3> |
|||
<h3>Разнообразная статистика с наших серверов</h3> |
|||
</div> |
|||
|
|||
<div class="content-in-center"> |
|||
<div class="content-in-border"> |
|||
<h2>График онлайна</h2> |
|||
<div *ngIf="!init"> |
|||
<div style="display: flex; justify-content: space-between"> |
|||
<mat-form-field appearance="fill"> |
|||
<mat-label>Статистика по</mat-label> |
|||
<mat-select [(ngModel)]="selectedPeriod"> |
|||
<mat-option *ngFor="let s of periods" [value]="s"> |
|||
{{s.name}} |
|||
</mat-option> |
|||
</mat-select> |
|||
</mat-form-field> |
|||
<mat-form-field appearance="fill" *ngIf="selectedPeriod.value=='minutes'"> |
|||
<mat-label>Количество минут</mat-label> |
|||
<mat-select [(ngModel)]="selectedMinute"> |
|||
<mat-option *ngFor="let s of minutes" [value]="s"> |
|||
Разница в {{s}} минут |
|||
</mat-option> |
|||
</mat-select> |
|||
</mat-form-field> |
|||
<mat-form-field appearance="fill"> |
|||
<mat-label>Количество дней</mat-label> |
|||
<mat-select [(ngModel)]="selectedDays"> |
|||
<mat-option *ngFor="let s of days" [value]="s"> |
|||
За {{s}} дней |
|||
</mat-option> |
|||
</mat-select> |
|||
</mat-form-field> |
|||
<mat-form-field appearance="fill"> |
|||
<mat-label>Сервер</mat-label> |
|||
<mat-select [(ngModel)]="selectedServer"> |
|||
<mat-option *ngFor="let s of serverList" [value]="s"> |
|||
{{s.name}} |
|||
</mat-option> |
|||
</mat-select> |
|||
</mat-form-field> |
|||
</div> |
|||
<div class="chart-container"> |
|||
<canvas id="MyChart" >{{ chart }}</canvas> |
|||
</div> |
|||
<mat-progress-bar *ngIf="loading" mode="indeterminate"></mat-progress-bar> |
|||
<button mat-button mat-raised-button (click)="getGraph()" style="width: 100%">Обновить</button> |
|||
</div> |
|||
<button mat-button mat-raised-button *ngIf="init" (click)="getGraph()">Загрузить график</button> |
|||
</div> |
|||
<div class="content-in-border"> |
|||
<h2>Уникальные игроки</h2> |
|||
<div></div> |
|||
</div> |
|||
<div class="content-in-border"> |
|||
<h2>Страны</h2> |
|||
<h2>Последние выданые випки</h2> |
|||
<div></div> |
|||
</div> |
|||
</div> |
|||
|
Loading…
Reference in new issue