
* api: fix types for config API * api: remove broken swagger UI * admin: re-fix system task enum * events: make event optional * events: fix Schema for notification transport test * flows: use APIView for Flow Executor * core: fix schema for Metrics APIs * web: rewrite to use generated API client * web: generate API Client in CI * admin: use x_cord and y_cord to prevent yaml issues * events: fix linting errors * web: don't lint generated code * core: fix fields not being required in TypeSerializer * flows: fix missing permission_classes * web: cleanup * web: fix rendering of graph on Overview page * web: cleanup imports * core: fix missing background image filter * flows: fix flows not advancing properly * stages/*: fix warnings during get_challenge * web: send Flow response as JSON instead of FormData * web: fix styles for horizontal tabs * web: add base chart class and custom chart for application view * root: generate ts client for e2e tests * web: don't attempt to connect to websocket in selenium tests * web: fix UserTokenList not being included in the build * web: fix styling for static token list * web: fix CSRF Token missing * stages/authenticator_static: fix error when disable static tokens * core: fix display issue when updating user info * web: fix Flow executor not showing spinner when redirecting
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { customElement } from "lit-element";
|
|
import Chart from "chart.js";
|
|
import { AdminApi, LoginMetrics } from "../../api";
|
|
import { AKChart } from "./Chart";
|
|
import { DEFAULT_CONFIG } from "../../api/Config";
|
|
|
|
@customElement("ak-charts-admin-login")
|
|
export class AdminLoginsChart extends AKChart<LoginMetrics> {
|
|
|
|
apiRequest(): Promise<LoginMetrics> {
|
|
return new AdminApi(DEFAULT_CONFIG).adminMetricsList();
|
|
}
|
|
|
|
getDatasets(data: LoginMetrics): Chart.ChartDataSets[] {
|
|
return [
|
|
{
|
|
label: "Failed Logins",
|
|
backgroundColor: "rgba(201, 25, 11, .5)",
|
|
spanGaps: true,
|
|
data: data.loginsFailedPer1h?.map((cord) => {
|
|
return {
|
|
x: cord.xCord,
|
|
y: cord.yCord,
|
|
};
|
|
}),
|
|
},
|
|
{
|
|
label: "Successful Logins",
|
|
backgroundColor: "rgba(189, 229, 184, .5)",
|
|
spanGaps: true,
|
|
data: data.loginsPer1h?.map((cord) => {
|
|
return {
|
|
x: cord.xCord,
|
|
y: cord.yCord,
|
|
};
|
|
}),
|
|
},
|
|
];
|
|
}
|
|
|
|
}
|