Merge branch 'dev/tabulator-bugfix' into 'develop'
Dev/tabulator bugfix See merge request easy-solutions/apps/easyportal!43
This commit is contained in:
commit
91f3e06dd5
|
|
@ -1,7 +1,7 @@
|
||||||
import {Controller} from '@hotwired/stimulus'
|
import {Controller} from '@hotwired/stimulus'
|
||||||
// Important: include a build with Ajax + pagination (TabulatorFull is simplest)
|
// Important: include a build with Ajax + pagination (TabulatorFull is simplest)
|
||||||
import {TabulatorFull as Tabulator} from 'tabulator-tables';
|
import {TabulatorFull as Tabulator} from 'tabulator-tables';
|
||||||
import {eyeIconLink, TABULATOR_FR_LANG} from "../js/global.js";
|
import {capitalizeFirstLetter, eyeIconLink, TABULATOR_FR_LANG} from "../js/global.js";
|
||||||
import { Modal } from "bootstrap";
|
import { Modal } from "bootstrap";
|
||||||
|
|
||||||
export default class extends Controller {
|
export default class extends Controller {
|
||||||
|
|
@ -197,6 +197,7 @@ export default class extends Controller {
|
||||||
if (this.currentOrgId) {
|
if (this.currentOrgId) {
|
||||||
formData.append('_method', 'PUT');
|
formData.append('_method', 'PUT');
|
||||||
}
|
}
|
||||||
|
formData.set('name', capitalizeFirstLetter(formData.get('name')));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ import {
|
||||||
eyeIconLink,
|
eyeIconLink,
|
||||||
sendEmailIcon,
|
sendEmailIcon,
|
||||||
TABULATOR_FR_LANG,
|
TABULATOR_FR_LANG,
|
||||||
trashIconForm
|
trashIconForm,
|
||||||
|
capitalizeFirstLetter
|
||||||
} from "../js/global.js";
|
} from "../js/global.js";
|
||||||
import { Modal } from "bootstrap";
|
import { Modal } from "bootstrap";
|
||||||
import base_controller from "./base_controller.js";
|
import base_controller from "./base_controller.js";
|
||||||
|
|
@ -161,8 +162,8 @@ export default class extends base_controller {
|
||||||
return wrapper;
|
return wrapper;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{title: "<b>Nom</b>", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
{title: "<b>Nom</b>", field: "surname", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
||||||
{title: "<b>Prénom</b>", field: "prenom", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
{title: "<b>Prénom</b>", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
||||||
{title: "<b>Email</b>", field: "email", headerFilter: "input", widthGrow: 3, vertAlign: "middle"},
|
{title: "<b>Email</b>", field: "email", headerFilter: "input", widthGrow: 3, vertAlign: "middle"},
|
||||||
{
|
{
|
||||||
title: "<b>Statut</b>", field: "statut", vertAlign: "middle",
|
title: "<b>Statut</b>", field: "statut", vertAlign: "middle",
|
||||||
|
|
@ -301,6 +302,7 @@ export default class extends base_controller {
|
||||||
// Add filters
|
// Add filters
|
||||||
if (params.filter) {
|
if (params.filter) {
|
||||||
params.filter.forEach(filter => {
|
params.filter.forEach(filter => {
|
||||||
|
console.log("Adding filter to query:", filter.field, filter.value);
|
||||||
queryParams.append(`filter[${filter.field}]`, filter.value);
|
queryParams.append(`filter[${filter.field}]`, filter.value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -639,8 +641,8 @@ export default class extends base_controller {
|
||||||
return wrapper;
|
return wrapper;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{title: "<b>Nom</b>", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
{title: "<b>Nom</b>", field: "surname", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
||||||
{title: "<b>Prénom</b>", field: "prenom", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
{title: "<b>Prénom</b>", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"},
|
||||||
{title: "<b>Email</b>", field: "email", headerFilter: "input", widthGrow: 3, vertAlign: "middle"},
|
{title: "<b>Email</b>", field: "email", headerFilter: "input", widthGrow: 3, vertAlign: "middle"},
|
||||||
{
|
{
|
||||||
title: "<b>Statut</b>", field: "statut", vertAlign: "middle",
|
title: "<b>Statut</b>", field: "statut", vertAlign: "middle",
|
||||||
|
|
@ -1032,6 +1034,7 @@ export default class extends base_controller {
|
||||||
const formData = new FormData(form);
|
const formData = new FormData(form);
|
||||||
const ucSurname = formData.get('surname').toUpperCase();
|
const ucSurname = formData.get('surname').toUpperCase();
|
||||||
formData.set('surname', ucSurname);
|
formData.set('surname', ucSurname);
|
||||||
|
formData.set('name', capitalizeFirstLetter(formData.get('name'))); // Capitalize first letter of name
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/user/new/ajax', { // Adjust path if prefix is different
|
const response = await fetch('/user/new/ajax', { // Adjust path if prefix is different
|
||||||
|
|
@ -1101,6 +1104,7 @@ export default class extends base_controller {
|
||||||
|
|
||||||
// Force Uppercase on Surname as requested
|
// Force Uppercase on Surname as requested
|
||||||
formData.set('surname', formData.get('surname').toUpperCase());
|
formData.set('surname', formData.get('surname').toUpperCase());
|
||||||
|
formData.set('name', capitalizeFirstLetter(formData.get('name'))); // Capitalize first letter of name
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`/user/edit/${this.currentUserId}/ajax`, {
|
const response = await fetch(`/user/edit/${this.currentUserId}/ajax`, {
|
||||||
|
|
|
||||||
|
|
@ -79,4 +79,8 @@ export function sendEmailIcon(userId, orgId) {
|
||||||
return `<a href="#" class="color-primary resend-invitation pt-3" data-id="${userId}" data-org-id="${orgId}" title="Renvoyer l'invitation" >
|
return `<a href="#" class="color-primary resend-invitation pt-3" data-id="${userId}" data-org-id="${orgId}" title="Renvoyer l'invitation" >
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="35px" height="35px" viewBox="0 0 24 24"><path fill="currentColor" d="M18.175 17H15q-.425 0-.712-.288T14 16t.288-.712T15 15h3.175l-.9-.9Q17 13.825 17 13.413t.3-.713q.275-.275.7-.275t.7.275l2.6 2.6q.125.125.2.312t.075.388t-.075.387t-.2.313l-2.6 2.6q-.275.275-.687.288T17.3 19.3q-.275-.275-.275-.7t.275-.7zM4 17q-.825 0-1.412-.587T2 15V5q0-.825.588-1.412T4 3h13q.825 0 1.413.588T19 5v4.075q0 .4-.3.7t-.7.3q-.425 0-.712-.288T17 9.076V6.4L10.4 11L4 6.425V15h7.075q.425 0 .713.288t.287.712t-.287.713t-.713.287zM5.45 5l4.95 3.55L15.5 5zM4 15V5z"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" width="35px" height="35px" viewBox="0 0 24 24"><path fill="currentColor" d="M18.175 17H15q-.425 0-.712-.288T14 16t.288-.712T15 15h3.175l-.9-.9Q17 13.825 17 13.413t.3-.713q.275-.275.7-.275t.7.275l2.6 2.6q.125.125.2.312t.075.388t-.075.387t-.2.313l-2.6 2.6q-.275.275-.687.288T17.3 19.3q-.275-.275-.275-.7t.275-.7zM4 17q-.825 0-1.412-.587T2 15V5q0-.825.588-1.412T4 3h13q.825 0 1.413.588T19 5v4.075q0 .4-.3.7t-.7.3q-.425 0-.712-.288T17 9.076V6.4L10.4 11L4 6.425V15h7.075q.425 0 .713.288t.287.712t-.287.713t-.713.287zM5.45 5l4.95 3.55L15.5 5zM4 15V5z"/></svg>
|
||||||
</a>`
|
</a>`
|
||||||
|
}
|
||||||
|
|
||||||
|
export function capitalizeFirstLetter(string) {
|
||||||
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||||
}
|
}
|
||||||
|
|
@ -107,7 +107,7 @@ class OrganizationController extends AbstractController
|
||||||
}
|
}
|
||||||
|
|
||||||
$organization->setProjectPrefix($this->organizationsService->generateUniqueProjectPrefix());
|
$organization->setProjectPrefix($this->organizationsService->generateUniqueProjectPrefix());
|
||||||
|
$organization->setName(ucFirst($organization->getName()));
|
||||||
$this->entityManager->persist($organization);
|
$this->entityManager->persist($organization);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
|
|
@ -165,6 +165,7 @@ class OrganizationController extends AbstractController
|
||||||
if ($logoFile) {
|
if ($logoFile) {
|
||||||
$this->organizationsService->handleLogo($organization, $logoFile);
|
$this->organizationsService->handleLogo($organization, $logoFile);
|
||||||
}
|
}
|
||||||
|
$organization->setName(ucFirst($organization->getName()));
|
||||||
$this->entityManager->persist($organization);
|
$this->entityManager->persist($organization);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
$this->actionService->createAction("Edit Organization", $actingUser, $organization, $organization->getName());
|
$this->actionService->createAction("Edit Organization", $actingUser, $organization, $organization->getName());
|
||||||
|
|
|
||||||
|
|
@ -531,8 +531,8 @@ class UserController extends AbstractController
|
||||||
return [
|
return [
|
||||||
'id' => $user->getId(),
|
'id' => $user->getId(),
|
||||||
'pictureUrl' => $user->getPictureUrl(),
|
'pictureUrl' => $user->getPictureUrl(),
|
||||||
'name' => $user->getSurname(),
|
'surname' => $user->getSurname(),
|
||||||
'prenom' => $user->getName(),
|
'name' => $user->getName(),
|
||||||
'email' => $user->getEmail(),
|
'email' => $user->getEmail(),
|
||||||
'isConnected' => $this->userService->isUserConnected($user->getUserIdentifier()),
|
'isConnected' => $this->userService->isUserConnected($user->getUserIdentifier()),
|
||||||
'showUrl' => $this->generateUrl('user_show', ['id' => $user->getId()]),
|
'showUrl' => $this->generateUrl('user_show', ['id' => $user->getId()]),
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ class OrganizationsRepository extends ServiceEntityRepository
|
||||||
// 2. Filters
|
// 2. Filters
|
||||||
if (!empty($filters['name'])) {
|
if (!empty($filters['name'])) {
|
||||||
$qb->andWhere('o.name LIKE :name')
|
$qb->andWhere('o.name LIKE :name')
|
||||||
->setParameter('name', '%' . strtolower($filters['name']) . '%');
|
->setParameter('name', '%' . ucfirst($filters['name']) . '%');
|
||||||
}
|
}
|
||||||
if (!empty($filters['email'])) {
|
if (!empty($filters['email'])) {
|
||||||
$qb->andWhere('o.email LIKE :email')
|
$qb->andWhere('o.email LIKE :email')
|
||||||
|
|
|
||||||
|
|
@ -45,14 +45,13 @@ class UserRepository extends ServiceEntityRepository implements PasswordUpgrader
|
||||||
$qb = $this->createQueryBuilder('u')
|
$qb = $this->createQueryBuilder('u')
|
||||||
->where('u.isDeleted = :del')
|
->where('u.isDeleted = :del')
|
||||||
->setParameter('del', false);
|
->setParameter('del', false);
|
||||||
|
if (!empty($filters['surname'])) {
|
||||||
if (!empty($filters['name'])) {
|
$qb->andWhere('u.surname LIKE :surname')
|
||||||
$qb->andWhere('u.surname LIKE :name')
|
->setParameter('surname', '%' . strtoupper($filters['surname']) . '%');
|
||||||
->setParameter('name', '%' . strtolower($filters['name']) . '%');
|
|
||||||
}
|
}
|
||||||
if (!empty($filters['prenom'])) {
|
if (!empty($filters['name'])) {
|
||||||
$qb->andWhere('u.name LIKE :prenom')
|
$qb->andWhere('u.name LIKE :name')
|
||||||
->setParameter('prenom', '%' . strtolower($filters['prenom']) . '%');
|
->setParameter('name', '%' . ucFirst($filters['name']) . '%');
|
||||||
}
|
}
|
||||||
if (!empty($filters['email'])) {
|
if (!empty($filters['email'])) {
|
||||||
$qb->andWhere('u.email LIKE :email')
|
$qb->andWhere('u.email LIKE :email')
|
||||||
|
|
|
||||||
|
|
@ -58,13 +58,13 @@ class UsersOrganizationsRepository extends ServiceEntityRepository
|
||||||
->setParameter('org', $org);
|
->setParameter('org', $org);
|
||||||
|
|
||||||
// Apply filters
|
// Apply filters
|
||||||
if (!empty($filters['name'])) {
|
if (!empty($filters['surname'])) {
|
||||||
$qb->andWhere('u.surname LIKE :name')
|
$qb->andWhere('u.surname LIKE :surname')
|
||||||
->setParameter('name', '%' . strtolower($filters['name']) . '%');
|
->setParameter('surname', '%' . strtoupper($filters['surname']) . '%');
|
||||||
}
|
}
|
||||||
if (!empty($filters['prenom'])) {
|
if (!empty($filters['name'])) {
|
||||||
$qb->andWhere('u.name LIKE :prenom')
|
$qb->andWhere('u.name LIKE :name')
|
||||||
->setParameter('prenom', '%' . strtolower($filters['prenom']) . '%');
|
->setParameter('name', '%' . ucFirst($filters['name']) . '%');
|
||||||
}
|
}
|
||||||
if (!empty($filters['email'])) {
|
if (!empty($filters['email'])) {
|
||||||
$qb->andWhere('u.email LIKE :email')
|
$qb->andWhere('u.email LIKE :email')
|
||||||
|
|
|
||||||
|
|
@ -418,8 +418,8 @@ class UserService
|
||||||
}
|
}
|
||||||
return [
|
return [
|
||||||
'pictureUrl' => $user->getPictureUrl(),
|
'pictureUrl' => $user->getPictureUrl(),
|
||||||
'name' => $user->getSurname(),
|
'surname' => $user->getSurname(),
|
||||||
'prenom' => $user->getName(),
|
'name' => $user->getName(),
|
||||||
'email' => $user->getEmail(),
|
'email' => $user->getEmail(),
|
||||||
'isConnected' => $this->isUserConnected($user->getUserIdentifier()),
|
'isConnected' => $this->isUserConnected($user->getUserIdentifier()),
|
||||||
'statut' => $statut,
|
'statut' => $statut,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue