Skip to content

Commit

Permalink
imp: Rework the design of the filters
Browse files Browse the repository at this point in the history
  • Loading branch information
marien-probesys committed Jun 4, 2024
1 parent d1cc409 commit 585f3ce
Show file tree
Hide file tree
Showing 21 changed files with 459 additions and 775 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,9 @@ export default class extends Controller {
itemNode (value, name) {
const item = this.templateTarget.content.firstElementChild.cloneNode(true);

item.setAttribute('data-value', value);
item.querySelector('[data-target="name"]').textContent = name;

const unselectButton = item.querySelector('[data-target="unselect"]');
unselectButton.setAttribute('data-value', value);

return item;
}
}
1 change: 1 addition & 0 deletions assets/stylesheets/application.css
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
@import "./components/lists.css";
@import "./components/messages.css";
@import "./components/modal.css";
@import "./components/multiselect-actors.css";
@import "./components/notifications.css";
@import "./components/pagination.css";
@import "./components/panel.css";
Expand Down
8 changes: 0 additions & 8 deletions assets/stylesheets/components/buttons.css
Original file line number Diff line number Diff line change
Expand Up @@ -139,14 +139,6 @@ button[disabled],
transform: translateX(5px);
}

.button__caption {
display: block;
margin-bottom: -0.2rem;

color: var(--color-grey10);
font-size: var(--font-size-small);
}

.button-group {
display: inline-flex;
}
Expand Down
22 changes: 22 additions & 0 deletions assets/stylesheets/components/multiselect-actors.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/* This file is part of Bileto. */
/* Copyright 2022-2024 Probesys */
/* SPDX-License-Identifier: AGPL-3.0-or-later */

.multiselect-actors__button {
--button-padding: var(--space-smaller) var(--space-small);
--button-background-color: transparent;
--button-color: var(--color-primary12);

font-weight: 500;

border: 1px solid currentcolor;
}

.multiselect-actors__button:not([disabled]):hover,
.multiselect-actors__button:not([aria-disabled]):hover,
.multiselect-actors__button:not([disabled]):focus,
.multiselect-actors__button:not([aria-disabled]):focus,
.multiselect-actors__button:not([disabled]):active,
.multiselect-actors__button:not([aria-disabled]):active {
--button-background-color: var(--color-primary4);
}
4 changes: 4 additions & 0 deletions assets/stylesheets/utils/cols.css
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@
}
}

.cols--wrap {
flex-wrap: wrap;
}

.cols.text--center {
justify-content: center;
}
Expand Down
4 changes: 4 additions & 0 deletions assets/stylesheets/utils/text.css
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
font-style: italic;
}

.text--bold {
font-weight: bold;
}

.text--center {
text-align: center;
}
Expand Down
5 changes: 5 additions & 0 deletions src/Controller/Organizations/TicketsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public function index(
Request $request,
OrganizationRepository $organizationRepository,
TicketSearcher $ticketSearcher,
ActorsLister $actorsLister,
UserRepository $userRepository,
TranslatorInterface $translator,
): Response {
Expand Down Expand Up @@ -110,6 +111,10 @@ public function index(
'sort' => $sort,
'ticketFilter' => $ticketFilter,
'searchMode' => $searchMode,
'openStatuses' => Ticket::getStatusesWithLabels('open'),
'finishedStatuses' => Ticket::getStatusesWithLabels('finished'),
'allUsers' => $actorsLister->findByOrganization($organization),
'agents' => $actorsLister->findByOrganization($organization, roleType: 'agent'),
'errors' => $errors,
]);
}
Expand Down
63 changes: 0 additions & 63 deletions src/Controller/Tickets/FiltersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,69 +17,6 @@

class FiltersController extends BaseController
{
#[Route('/tickets/filters/{filter}/edit', name: 'edit filter', methods: ['GET', 'HEAD'], priority: 1)]
public function edit(
string $filter,
Request $request,
ActorsLister $actorsLister,
): Response {
/** @var string $textualQuery */
$textualQuery = $request->query->get('query', '');

/** @var string $from */
$from = $request->query->get('from', '');

try {
$query = Query::fromString($textualQuery);
} catch (\Exception $e) {
$query = null;
}

$ticketFilter = null;

if ($query) {
$ticketFilter = TicketFilter::fromQuery($query);
}

if (!$ticketFilter) {
$ticketFilter = new TicketFilter();
}

if ($filter === 'status') {
return $this->render("tickets/filters/edit_status.html.twig", [
'ticketFilter' => $ticketFilter,
'openStatuses' => Ticket::getStatusesWithLabels('open'),
'finishedStatuses' => Ticket::getStatusesWithLabels('finished'),
'query' => $textualQuery,
'from' => $from,
]);
} elseif ($filter === 'type') {
return $this->render("tickets/filters/edit_type.html.twig", [
'ticketFilter' => $ticketFilter,
'query' => $textualQuery,
'from' => $from,
]);
} elseif ($filter === 'priority' || $filter === 'urgency' || $filter === 'impact') {
return $this->render("tickets/filters/edit_priority.html.twig", [
'ticketFilter' => $ticketFilter,
'query' => $textualQuery,
'from' => $from,
]);
} elseif ($filter === 'actors' || $filter === 'assignee' || $filter === 'requester' || $filter === 'involves') {
$allUsers = $actorsLister->findAll();
$agents = $actorsLister->findAll(roleType: 'agent');
return $this->render("tickets/filters/edit_actors.html.twig", [
'ticketFilter' => $ticketFilter,
'allUsers' => $allUsers,
'agents' => $agents,
'query' => $textualQuery,
'from' => $from,
]);
} else {
throw $this->createNotFoundException('Filter parameter is not supported.');
}
}

#[Route('/tickets/filters/combine', name: 'combine filters', methods: ['POST'], priority: 1)]
public function combine(Request $request): Response
{
Expand Down
6 changes: 6 additions & 0 deletions src/Controller/TicketsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use App\SearchEngine\TicketSearcher;
use App\SearchEngine\Query;
use App\Security\Authorizer;
use App\Service\ActorsLister;
use App\Service\Sorter\OrganizationSorter;
use App\Service\TicketTimeline;
use App\Utils\Pagination;
Expand All @@ -33,6 +34,7 @@ public function index(
OrganizationRepository $orgaRepository,
UserRepository $userRepository,
TicketSearcher $ticketSearcher,
ActorsLister $actorsLister,
TranslatorInterface $translator,
): Response {
/** @var \App\Entity\User $user */
Expand Down Expand Up @@ -97,6 +99,10 @@ public function index(
'sort' => $sort,
'ticketFilter' => $ticketFilter,
'searchMode' => $searchMode,
'openStatuses' => Ticket::getStatusesWithLabels('open'),
'finishedStatuses' => Ticket::getStatusesWithLabels('finished'),
'allUsers' => $actorsLister->findAll(),
'agents' => $actorsLister->findAll(roleType: 'agent'),
'errors' => $errors,
]);
}
Expand Down
14 changes: 14 additions & 0 deletions src/SearchEngine/TicketFilter.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,20 @@ public function getFilter(string $filter): array
return $this->filters[$filter] ?? [];
}

/**
* @param string[] $filtersToFind
*/
public function hasAnyFilters(array $filtersToFind): bool
{
foreach ($filtersToFind as $filterToFind) {
if (isset($this->filters[$filterToFind])) {
return true;
}
}

return false;
}

/**
* @param value-of<self::SUPPORTED_FILTERS> $filter
* @param string[] $values
Expand Down
4 changes: 4 additions & 0 deletions templates/organizations/tickets/index.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@
searchMode: searchMode,
query: query,
ticketFilter: ticketFilter,
openStatuses: openStatuses,
finishedStatuses: finishedStatuses,
allUsers: allUsers,
agents: agents,
from: path('organization tickets', { uid: organization.uid }),
error: errors.search ?? ''
},
Expand Down
Loading

0 comments on commit 585f3ce

Please sign in to comment.