mirror of
https://github.com/nidebr/as-stats-gui.git
synced 2025-02-20 11:23:18 +08:00
add filter tag
This commit is contained in:
parent
c4e397cff5
commit
73e49e99cb
@ -7,3 +7,5 @@ twig:
|
||||
decimals: 2
|
||||
decimal_point: ','
|
||||
thousands_separator: ' '
|
||||
form_themes:
|
||||
- 'core/form/_theme.html.twig'
|
||||
|
@ -24,3 +24,8 @@
|
||||
.sticky-top-legend {
|
||||
top: 5px !important;
|
||||
}
|
||||
|
||||
.form-check {
|
||||
min-height: unset !important;
|
||||
margin-bottom: unset !important;
|
||||
}
|
||||
|
@ -44,9 +44,15 @@ class IndexController extends BaseController
|
||||
$form = $this->createForm(LegendForm::class);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$data = $asDataRepository::get($this->base_data['top'], null, (array) $form->getData());
|
||||
} else {
|
||||
$data = $asDataRepository::get($this->base_data['top']);
|
||||
}
|
||||
|
||||
return $this->render('pages/index.html.twig', [
|
||||
'base_data' => $this->base_data,
|
||||
'data' => $asDataRepository::get($this->base_data['top']),
|
||||
'data' => $data,
|
||||
'knownlinks' => KnowlinksRepository::get(),
|
||||
'form' => [
|
||||
'legend' => $form->createView(),
|
||||
@ -57,9 +63,10 @@ class IndexController extends BaseController
|
||||
#[Route(
|
||||
path: '/{topinterval}',
|
||||
name: 'index_topinterval',
|
||||
methods: ['GET'],
|
||||
methods: ['GET|POST'],
|
||||
)]
|
||||
public function indexTopInterval(
|
||||
Request $request,
|
||||
ConfigApplication $Config,
|
||||
GetAsDataRepository $asDataRepository,
|
||||
string $topinterval,
|
||||
@ -70,11 +77,23 @@ class IndexController extends BaseController
|
||||
$Config::getAsStatsConfigTopInterval()[$topinterval]['label']
|
||||
);
|
||||
|
||||
$form = $this->createForm(LegendForm::class);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$data = $asDataRepository::get($this->base_data['top'], $topinterval, (array) $form->getData());
|
||||
} else {
|
||||
$data = $asDataRepository::get($this->base_data['top'], $topinterval);
|
||||
}
|
||||
|
||||
return $this->render('pages/index.html.twig', [
|
||||
'base_data' => $this->base_data,
|
||||
'data' => $asDataRepository::get($this->base_data['top'], $topinterval),
|
||||
'data' => $data,
|
||||
'hours' => $Config::getAsStatsConfigTopInterval()[$topinterval]['label'],
|
||||
'knownlinks' => KnowlinksRepository::get(),
|
||||
'form' => [
|
||||
'legend' => $form->createView(),
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -20,9 +20,12 @@ class LegendForm extends AbstractType
|
||||
foreach (KnowlinksRepository::get() as $knowlink) {
|
||||
$builder
|
||||
->add(\sprintf('%s', $knowlink['tag']), CheckboxType::class, [
|
||||
'label' => false,
|
||||
'label' => $knowlink['descr'],
|
||||
'translation_domain' => false,
|
||||
'required' => false,
|
||||
'label_attr' => [
|
||||
'class' => 'small float-left',
|
||||
],
|
||||
])
|
||||
;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ class GetAsDataRepository
|
||||
* @throws Exception
|
||||
* @throws DbErrorException
|
||||
*/
|
||||
public static function get(int $top, ?string $topInterval = null): array
|
||||
public static function get(int $top, ?string $topInterval = null, array $selectedLinks = []): array
|
||||
{
|
||||
if (0 === $top) {
|
||||
return [];
|
||||
@ -33,7 +33,7 @@ class GetAsDataRepository
|
||||
$data = new DbAsStatsRepository($dbName);
|
||||
$asInfoRepository = new DbAsInfoRepository();
|
||||
|
||||
foreach ($data->getASStatsTop($top, []) as $as => $nbytes) {
|
||||
foreach ($data->getASStatsTop($top, KnowlinksRepository::select($selectedLinks)) as $as => $nbytes) {
|
||||
$return['asinfo'][$as]['info'] = $asInfoRepository->getAsInfo($as);
|
||||
|
||||
$return['asinfo'][$as]['v4'] = [
|
||||
|
@ -60,4 +60,16 @@ class KnowlinksRepository
|
||||
|
||||
return $knownlinks;
|
||||
}
|
||||
|
||||
public static function select(array $selectedLink): array
|
||||
{
|
||||
$selected_links = [];
|
||||
|
||||
foreach ($selectedLink as $tag => $check) {
|
||||
if ($check) {
|
||||
$selected_links[] = $tag;
|
||||
}
|
||||
}
|
||||
return $selected_links;
|
||||
}
|
||||
}
|
||||
|
11
templates/core/form/_theme.html.twig
Normal file
11
templates/core/form/_theme.html.twig
Normal file
@ -0,0 +1,11 @@
|
||||
{% use "bootstrap_5_layout.html.twig" %}
|
||||
|
||||
{# Checkbox #}
|
||||
|
||||
{% block checkbox_row -%}
|
||||
<div{% with {attr: row_attr|merge({class: (row_attr.class|default(''))|trim})} %}{{ block('attributes') }}{% endwith %}>{#--#}
|
||||
{{- form_widget(form) -}}
|
||||
<em>{{- form_help(form) -}}</em>
|
||||
{{- form_errors(form) -}}
|
||||
</div>
|
||||
{%- endblock checkbox_row %}
|
@ -1,17 +1,24 @@
|
||||
<div class="col-lg-2 col-sm-12">
|
||||
<div class="sticky-top sticky-top-legend">
|
||||
{{ form_start(form.legend) }}
|
||||
<div class="card">
|
||||
{{ form_start(form.legend) }}
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">
|
||||
<strong>Legend</strong>
|
||||
</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless table-vcenter table-sm">
|
||||
<table class="table table-borderless table-sm">
|
||||
<tbody>
|
||||
{% if knownlinks is defined %}
|
||||
{% for link in knownlinks %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
{% for field in form.legend %}
|
||||
{% if field.vars.name == link.tag %}
|
||||
{{ form_row(field) }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
<table class="table-legend">
|
||||
<tr>
|
||||
@ -24,14 +31,6 @@
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="small">{{ link.descr }}</td>
|
||||
<td>
|
||||
{% for field in form.legend %}
|
||||
{% if field.vars.name == link.tag %}
|
||||
{{ form_widget(field) }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
@ -39,7 +38,10 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(form.legend) }}
|
||||
<div class="card-footer">
|
||||
<button type="submit" class="btn btn-tabler btn-icon float-end">{{ icon('filter') }}</i></button>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(form.legend) }}
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user