Compare commits
1 commit
4d2ae3a6ab
...
4e7c014eac
Author | SHA1 | Date | |
---|---|---|---|
4e7c014eac |
8 changed files with 3 additions and 222 deletions
|
@ -14,11 +14,9 @@ import './javascript/theme.js';
|
|||
import './javascript/emoji-footprint.js';
|
||||
import './javascript/modes.js';
|
||||
import './javascript/htmx.js';
|
||||
import emojiButtonListener from './javascript/emoji-button.js';
|
||||
import 'bootstrap';
|
||||
import { initRadioState } from './javascript/radioState.js';
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
initRadioState();
|
||||
emojiButtonListener();
|
||||
});
|
|
@ -1,14 +0,0 @@
|
|||
const emojiButtonListener = function () {
|
||||
const buttons = document.querySelectorAll('.emoji-buttons .btn.btn-primary');
|
||||
|
||||
buttons.forEach(button => {
|
||||
button.addEventListener('click', function() {
|
||||
const emojiField = document.querySelector('#food_vendor_emojis');
|
||||
if (emojiField) {
|
||||
emojiField.value += this.textContent;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default emojiButtonListener;
|
|
@ -27,6 +27,6 @@ return [
|
|||
'type' => 'css',
|
||||
],
|
||||
'htmx.org' => [
|
||||
'version' => '2.0.5',
|
||||
'version' => '1.9.12',
|
||||
],
|
||||
];
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Auto-generated Migration: Please modify to your needs!
|
||||
*/
|
||||
final class Version20250621131822 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
// this up() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE food_vendor ADD COLUMN emojis VARCHAR(30) DEFAULT NULL
|
||||
SQL);
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
// this down() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TEMPORARY TABLE __temp__food_vendor AS SELECT name, phone, menu_link, id FROM food_vendor
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE food_vendor
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE food_vendor (name VARCHAR(50) NOT NULL, phone VARCHAR(50) DEFAULT '', menu_link VARCHAR(255) DEFAULT NULL, id BLOB NOT NULL, PRIMARY KEY(id))
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
INSERT INTO food_vendor (name, phone, menu_link, id) SELECT name, phone, menu_link, id FROM __temp__food_vendor
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE __temp__food_vendor
|
||||
SQL);
|
||||
}
|
||||
}
|
|
@ -7,27 +7,23 @@ use App\Repository\FoodVendorRepository;
|
|||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use InvalidArgumentException;
|
||||
use Symfony\Bridge\Doctrine\IdGenerator\UlidGenerator;
|
||||
use Symfony\Bridge\Doctrine\Types\UlidType;
|
||||
use Symfony\Component\Serializer\Annotation\Groups;
|
||||
use Symfony\Component\Uid\Ulid;
|
||||
use Symfony\Component\Validator\Constraints\Length;
|
||||
|
||||
use function mb_strlen;
|
||||
|
||||
#[ORM\Entity(repositoryClass: FoodVendorRepository::class)]
|
||||
#[ApiResource]
|
||||
class FoodVendor
|
||||
{
|
||||
#[ORM\Column(length: 50)]
|
||||
#[Groups(['food_order:latest', 'food_vendor:read'])]
|
||||
#[Groups(['food_order:latest'])]
|
||||
private string|null $name = null;
|
||||
|
||||
#[ORM\Column(length: 50, nullable: true, options: [
|
||||
'default' => '',
|
||||
])]
|
||||
#[Groups(['food_order:latest', 'food_vendor:read'])]
|
||||
#[Groups(['food_order:latest'])]
|
||||
private string|null $phone = null;
|
||||
|
||||
/**
|
||||
|
@ -46,14 +42,6 @@ class FoodVendor
|
|||
#[Groups(['food_order:latest'])]
|
||||
private string|null $menuLink = null;
|
||||
|
||||
/**
|
||||
* String of emojis (max 30 characters)
|
||||
*/
|
||||
#[ORM\Column(length: 30, nullable: true)]
|
||||
#[Groups(['food_order:latest', 'food_vendor:read'])]
|
||||
#[Length(max: 10)]
|
||||
private string|null $emojis = null;
|
||||
|
||||
public function __construct(
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
|
||||
|
@ -167,19 +155,4 @@ class FoodVendor
|
|||
$this->phone = $phone;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getEmojis(): string|null
|
||||
{
|
||||
return $this->emojis;
|
||||
}
|
||||
|
||||
public function setEmojis(string|null $emojis): static
|
||||
{
|
||||
if ($emojis !== null && mb_strlen($emojis) > 30) {
|
||||
throw new InvalidArgumentException('A maximum of 30 characters is allowed for emojis');
|
||||
}
|
||||
|
||||
$this->emojis = $emojis;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,6 @@ final class FoodVendorType extends AbstractType
|
|||
->add('name')
|
||||
->add('menuLink')
|
||||
->add('phone')
|
||||
->add('emojis')
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,121 +9,5 @@
|
|||
{{ include('food_vendor/_form.html.twig', {'button_label': 'Update'}) }}
|
||||
</div>
|
||||
|
||||
<div class="mb-4 emoji-buttons" data-role="emoji-selector">
|
||||
<button class="btn btn-primary">🍕</button>
|
||||
<button class="btn btn-primary">🍔</button>
|
||||
<button class="btn btn-primary">🌮</button>
|
||||
<button class="btn btn-primary">🍜</button>
|
||||
<button class="btn btn-primary">🥗</button>
|
||||
<button class="btn btn-primary">☕</button>
|
||||
<button class="btn btn-primary">🍣</button>
|
||||
<button class="btn btn-primary">🍤</button>
|
||||
<button class="btn btn-primary">🍦</button>
|
||||
<button class="btn btn-primary">🍩</button>
|
||||
<button class="btn btn-primary">🍪</button>
|
||||
<button class="btn btn-primary">🍰</button>
|
||||
<button class="btn btn-primary">🍫</button>
|
||||
<button class="btn btn-primary">🍿</button>
|
||||
<button class="btn btn-primary">🍩</button>
|
||||
<button class="btn btn-primary">🍭</button>
|
||||
<button class="btn btn-primary">🍮</button>
|
||||
<button class="btn btn-primary">🍯</button>
|
||||
<button class="btn btn-primary">🍎</button>
|
||||
<button class="btn btn-primary">🍊</button>
|
||||
<button class="btn btn-primary">🍋</button>
|
||||
<button class="btn btn-primary">🍌</button>
|
||||
<button class="btn btn-primary">🍉</button>
|
||||
<button class="btn btn-primary">🍇</button>
|
||||
<button class="btn btn-primary">🍓</button>
|
||||
<button class="btn btn-primary">🍈</button>
|
||||
<button class="btn btn-primary">🍒</button>
|
||||
<button class="btn btn-primary">🍍</button>
|
||||
<button class="btn btn-primary">🥭</button>
|
||||
<button class="btn btn-primary">🥥</button>
|
||||
<button class="btn btn-primary">🥝</button>
|
||||
<button class="btn btn-primary">🍅</button>
|
||||
<button class="btn btn-primary">🍆</button>
|
||||
<button class="btn btn-primary">🥑</button>
|
||||
<button class="btn btn-primary">🥦</button>
|
||||
<button class="btn btn-primary">🥒</button>
|
||||
<button class="btn btn-primary">🌽</button>
|
||||
<button class="btn btn-primary">🥕</button>
|
||||
<button class="btn btn-primary">🧄</button>
|
||||
<button class="btn btn-primary">🧅</button>
|
||||
<button class="btn btn-primary">🥔</button>
|
||||
<button class="btn btn-primary">🍠</button>
|
||||
<button class="btn btn-primary">🥐</button>
|
||||
<button class="btn btn-primary">🥯</button>
|
||||
<button class="btn btn-primary">🍞</button>
|
||||
<button class="btn btn-primary">🥖</button>
|
||||
<button class="btn btn-primary">🥨</button>
|
||||
<button class="btn btn-primary">🧀</button>
|
||||
<button class="btn btn-primary">🥚</button>
|
||||
<button class="btn btn-primary">🍳</button>
|
||||
<button class="btn btn-primary">🥞</button>
|
||||
<button class="btn btn-primary">🧇</button>
|
||||
<button class="btn btn-primary">🥓</button>
|
||||
<button class="btn btn-primary">🥩</button>
|
||||
<button class="btn btn-primary">🍗</button>
|
||||
<button class="btn btn-primary">🍖</button>
|
||||
<button class="btn btn-primary">🌭</button>
|
||||
<button class="btn btn-primary">🍔</button>
|
||||
<button class="btn btn-primary">🍟</button>
|
||||
<button class="btn btn-primary">🍕</button>
|
||||
<button class="btn btn-primary">🥪</button>
|
||||
<button class="btn btn-primary">🌮</button>
|
||||
<button class="btn btn-primary">🌯</button>
|
||||
<button class="btn btn-primary">🥙</button>
|
||||
<button class="btn btn-primary">🧆</button>
|
||||
<button class="btn btn-primary">🥘</button>
|
||||
<button class="btn btn-primary">🍲</button>
|
||||
<button class="btn btn-primary">🥣</button>
|
||||
<button class="btn btn-primary">🥗</button>
|
||||
<button class="btn btn-primary">🍿</button>
|
||||
<button class="btn btn-primary">🧈</button>
|
||||
<button class="btn btn-primary">🧂</button>
|
||||
<button class="btn btn-primary">🥫</button>
|
||||
<button class="btn btn-primary">🍱</button>
|
||||
<button class="btn btn-primary">🍛</button>
|
||||
<button class="btn btn-primary">🍚</button>
|
||||
<button class="btn btn-primary">🍙</button>
|
||||
<button class="btn btn-primary">🍘</button>
|
||||
<button class="btn btn-primary">🍢</button>
|
||||
<button class="btn btn-primary">🍡</button>
|
||||
<button class="btn btn-primary">🍧</button>
|
||||
<button class="btn btn-primary">🍨</button>
|
||||
<button class="btn btn-primary">🍦</button>
|
||||
<button class="btn btn-primary">🥧</button>
|
||||
<button class="btn btn-primary">🍰</button>
|
||||
<button class="btn btn-primary">🎂</button>
|
||||
<button class="btn btn-primary">🍮</button>
|
||||
<button class="btn btn-primary">🍭</button>
|
||||
<button class="btn btn-primary">🍬</button>
|
||||
<button class="btn btn-primary">🍫</button>
|
||||
<button class="btn btn-primary">🍿</button>
|
||||
<button class="btn btn-primary">🍩</button>
|
||||
<button class="btn btn-primary">🍪</button>
|
||||
<button class="btn btn-primary">🌰</button>
|
||||
<button class="btn btn-primary">🥜</button>
|
||||
<button class="btn btn-primary">🍯</button>
|
||||
<button class="btn btn-primary">🥛</button>
|
||||
<button class="btn btn-primary">🍼</button>
|
||||
<button class="btn btn-primary">☕</button>
|
||||
<button class="btn btn-primary">🍵</button>
|
||||
<button class="btn btn-primary">🍶</button>
|
||||
<button class="btn btn-primary">🍾</button>
|
||||
<button class="btn btn-primary">🍷</button>
|
||||
<button class="btn btn-primary">🍸</button>
|
||||
<button class="btn btn-primary">🍹</button>
|
||||
<button class="btn btn-primary">🍺</button>
|
||||
<button class="btn btn-primary">🍻</button>
|
||||
<button class="btn btn-primary">🥂</button>
|
||||
<button class="btn btn-primary">🥃</button>
|
||||
<button class="btn btn-primary">🥤</button>
|
||||
<button class="btn btn-primary">🧃</button>
|
||||
<button class="btn btn-primary">🧉</button>
|
||||
<button class="btn btn-primary">🧊</button>
|
||||
</div>
|
||||
|
||||
<a class="btn btn-secondary" href="{{ path('app_food_vendor_index') }}">back to list</a>
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,7 +5,6 @@ namespace App\Tests\Unit\Entity;
|
|||
use App\Entity\FoodOrder;
|
||||
use App\Entity\FoodVendor;
|
||||
use App\Entity\MenuItem;
|
||||
use InvalidArgumentException;
|
||||
use Symfony\Component\Uid\Ulid;
|
||||
|
||||
use function describe;
|
||||
|
@ -21,17 +20,6 @@ describe(FoodVendor::class, function (): void {
|
|||
$vendor->setPhone('1234567890');
|
||||
$this->assertEquals('1234567890', $vendor->getPhone());
|
||||
|
||||
// Test emojis field
|
||||
$this->assertNull($vendor->getEmojis());
|
||||
$emojis = '😀😂🎉👍❤️';
|
||||
$vendor->setEmojis($emojis);
|
||||
$this->assertEquals($emojis, $vendor->getEmojis());
|
||||
|
||||
// Test emojis validation
|
||||
$tooManyEmojis = '😀😂🎉👍❤️🚀🎈🎁🎊🎋🎍🎎🎏🎐🎑🎒🎓🎔🎕🎖🎗🎘🎙🎚🎛🎜🎝🎞🎟🎠🎡🎢';
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
$vendor->setEmojis($tooManyEmojis);
|
||||
|
||||
$this->assertCount(0, $vendor->getFoodOrders());
|
||||
$order1 = new FoodOrder;
|
||||
$vendor->addFoodOrder($order1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue