add tailiwindi
This commit is contained in:
parent
314063f15c
commit
f38c05d97c
27 changed files with 1139 additions and 494 deletions
|
@ -1,45 +1,69 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}FoodOrder index{% endblock %}
|
||||
{% block title %}Food Orders{% endblock %}
|
||||
|
||||
{% block header %}Food Orders{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<h1>FoodOrder index</h1>
|
||||
<div>
|
||||
<button
|
||||
<div class="sm:flex sm:items-center sm:justify-between mb-6">
|
||||
<div class="min-w-0 flex-1">
|
||||
<p class="text-sm text-gray-500">
|
||||
Manage your food orders and create new ones.
|
||||
</p>
|
||||
</div>
|
||||
<div class="mt-4 flex sm:ml-4 sm:mt-0">
|
||||
<button
|
||||
hx-get="{{ path('app_food_order_new') }}"
|
||||
hx-trigger="click"
|
||||
hx-target="closest div"
|
||||
>Create new</button>
|
||||
hx-target="#new-order-form"
|
||||
class="block rounded-md bg-indigo-600 px-3 py-2 text-center text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
|
||||
>Create new order</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>CreatedBy</th>
|
||||
<th>Vendor</th>
|
||||
<th>CreatedAt</th>
|
||||
<th>ClosedAt</th>
|
||||
<th>actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for food_order in food_orders %}
|
||||
{{ include('food_order/table_row.html.twig') }}
|
||||
{% endfor %}
|
||||
{% if food_orders|length < 10 %}
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
check the <a href="{{ path('app_food_order_archive') }}">archive</a>
|
||||
for older orders
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div id="new-order-form" class="mb-8"></div>
|
||||
|
||||
<div class="mt-8 flow-root">
|
||||
<div class="-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
|
||||
<div class="inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8">
|
||||
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 sm:rounded-lg">
|
||||
<table class="min-w-full divide-y divide-gray-300">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th scope="col" class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-6">Created By</th>
|
||||
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Vendor</th>
|
||||
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Created At</th>
|
||||
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Closed At</th>
|
||||
<th scope="col" class="relative py-3.5 pl-3 pr-4 sm:pr-6">
|
||||
<span class="sr-only">Actions</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-200 bg-white">
|
||||
{% for food_order in food_orders %}
|
||||
{{ include('food_order/table_row.html.twig') }}
|
||||
{% endfor %}
|
||||
{% if food_orders|length < 10 %}
|
||||
<tr>
|
||||
<td colspan="5" class="whitespace-nowrap py-4 pl-4 pr-3 text-sm font-medium text-gray-500 sm:pl-6">
|
||||
Check the <a href="{{ path('app_food_order_archive') }}" class="text-indigo-600 hover:text-indigo-900">archive</a>
|
||||
for older orders
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 flex items-center justify-center gap-x-6">
|
||||
{% if prev_page > 0 %}
|
||||
<a href="{{ path('app_food_order_archive', {'page': prev_page}) }}" class="rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50">Previous Page</a>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% if prev_page > 0 %}
|
||||
<a href="{{ path('app_food_order_archive', {'page': prev_page}) }}">previous page</a> |
|
||||
{% endif %}
|
||||
{% if next_page > current_page %}
|
||||
<a href="{{ path('app_food_order_archive', {'page': next_page}) }}">next page</a>
|
||||
{% endif %}
|
||||
{% if next_page > current_page %}
|
||||
<a href="{{ path('app_food_order_archive', {'page': next_page}) }}" class="rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50">Next Page</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,2 +1,11 @@
|
|||
{{ include('_form.html.twig') }}
|
||||
|
||||
<div class="bg-white shadow sm:rounded-lg">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<h3 class="text-base font-semibold leading-6 text-gray-900">Create New Order</h3>
|
||||
<div class="mt-2 max-w-xl text-sm text-gray-500">
|
||||
<p>Fill out the form below to create a new food order.</p>
|
||||
</div>
|
||||
<div class="mt-5">
|
||||
{{ include('_form.html.twig') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,71 +1,101 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}FoodOrder{% endblock %}
|
||||
{% block title %}Order Details{% endblock %}
|
||||
|
||||
{% block header %}Order Details{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<h1>FoodOrder</h1>
|
||||
<div class="bg-white shadow sm:rounded-lg mb-8">
|
||||
<div class="px-4 py-5 sm:px-6">
|
||||
<h3 class="text-lg font-medium leading-6 text-gray-900">Order Information</h3>
|
||||
<p class="mt-1 max-w-2xl text-sm text-gray-500">Details about the food order from {{ food_order.foodVendor.name }}.</p>
|
||||
</div>
|
||||
<div class="border-t border-gray-200">
|
||||
<dl>
|
||||
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
||||
<dt class="text-sm font-medium text-gray-500">Vendor</dt>
|
||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-2 sm:mt-0">{{ food_order.foodVendor.name }}</dd>
|
||||
</div>
|
||||
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
||||
<dt class="text-sm font-medium text-gray-500">Vendor Phone</dt>
|
||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-2 sm:mt-0">{{ food_order.foodVendor.phone }}</dd>
|
||||
</div>
|
||||
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
||||
<dt class="text-sm font-medium text-gray-500">Created By</dt>
|
||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-2 sm:mt-0">{{ food_order.createdBy }}</dd>
|
||||
</div>
|
||||
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
||||
<dt class="text-sm font-medium text-gray-500">Created At</dt>
|
||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-2 sm:mt-0">{{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}</dd>
|
||||
</div>
|
||||
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
||||
<dt class="text-sm font-medium text-gray-500">Closed At</dt>
|
||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-2 sm:mt-0">{{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : 'Not closed yet' }}</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Vendor</th>
|
||||
<td>{{ food_order.foodVendor.name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Vendorphone</th>
|
||||
<td>{{ food_order.foodVendor.phone }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Created By</th>
|
||||
<td>{{ food_order.createdBy }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CreatedAt</th>
|
||||
<td>{{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ClosedAt</th>
|
||||
<td>{{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<a class="button" href="{{ path('app_food_order_index') }}">back to list</a>
|
||||
{% if(food_order.isClosed) %}
|
||||
<a class="button" href="{{ path('app_food_order_open', {'id': food_order.id}) }}">reopen</a>
|
||||
{% else %}
|
||||
<a class="button" href="{{ path('app_food_order_close', {'id': food_order.id}) }}">close</a>
|
||||
{% endif %}
|
||||
|
||||
<h2>Items</h2>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Index</th>
|
||||
<th>username</th>
|
||||
<th>name</th>
|
||||
<th>extras</th>
|
||||
<th>actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in food_order.orderItemsSortedByName %}
|
||||
<tr>
|
||||
<td>{{ loop.index }}</td>
|
||||
<td>{{ item.createdBy }}</td>
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.extras }}</td>
|
||||
<td>
|
||||
{% if(food_order.isClosed) %}
|
||||
{% else %}
|
||||
<a href="{{ path('app_order_item_edit', {'id': item.id}) }}">edit</a>
|
||||
<a href="{{ path('app_order_item_copy', {'id': item.id}) }}">copy</a>
|
||||
<a href="{{ path('app_order_item_delete', {'id': item.id}) }}">remove</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<a class="button" href="{{ path('app_order_item_new', {'foodOrder': food_order.id}) }}">New Item</a>
|
||||
<div class="flex space-x-4 mb-8">
|
||||
<a href="{{ path('app_food_order_index') }}" class="inline-flex items-center rounded-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50">
|
||||
Back to list
|
||||
</a>
|
||||
{% if(food_order.isClosed) %}
|
||||
<a href="{{ path('app_food_order_open', {'id': food_order.id}) }}" class="inline-flex items-center rounded-md bg-green-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600">
|
||||
Reopen Order
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ path('app_food_order_close', {'id': food_order.id}) }}" class="inline-flex items-center rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600">
|
||||
Close Order
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow sm:rounded-lg mb-8">
|
||||
<div class="px-4 py-5 sm:px-6 flex justify-between items-center">
|
||||
<div>
|
||||
<h3 class="text-lg font-medium leading-6 text-gray-900">Order Items</h3>
|
||||
<p class="mt-1 max-w-2xl text-sm text-gray-500">Items included in this order.</p>
|
||||
</div>
|
||||
<div>
|
||||
<a href="{{ path('app_order_item_new', {'foodOrder': food_order.id}) }}" class="inline-flex items-center rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
|
||||
Add New Item
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5">
|
||||
<table class="min-w-full divide-y divide-gray-300">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th scope="col" class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-6">#</th>
|
||||
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Username</th>
|
||||
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Item Name</th>
|
||||
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">Extras</th>
|
||||
<th scope="col" class="relative py-3.5 pl-3 pr-4 sm:pr-6">
|
||||
<span class="sr-only">Actions</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-200 bg-white">
|
||||
{% for item in food_order.orderItemsSortedByName %}
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm font-medium text-gray-900 sm:pl-6">{{ loop.index }}</td>
|
||||
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">{{ item.createdBy }}</td>
|
||||
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">{{ item.name }}</td>
|
||||
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">{{ item.extras }}</td>
|
||||
<td class="relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6">
|
||||
{% if(food_order.isClosed) %}
|
||||
<span class="text-gray-400">Order closed</span>
|
||||
{% else %}
|
||||
<a href="{{ path('app_order_item_edit', {'id': item.id}) }}" class="text-indigo-600 hover:text-indigo-900 mr-2">Edit</a>
|
||||
<a href="{{ path('app_order_item_copy', {'id': item.id}) }}" class="text-indigo-600 hover:text-indigo-900 mr-2">Copy</a>
|
||||
<a href="{{ path('app_order_item_delete', {'id': item.id}) }}" class="text-red-600 hover:text-red-900">Remove</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<tr>
|
||||
<td>{{ food_order.createdBy }}</td>
|
||||
<td>{{ food_order.foodVendor.name }}</td>
|
||||
<td>{{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}</td>
|
||||
<td>{{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}</td>
|
||||
<td>
|
||||
<a href="{{ path('app_food_order_show', {'id': food_order.id}) }}">show</a>
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm font-medium text-gray-900 sm:pl-6">{{ food_order.createdBy }}</td>
|
||||
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">{{ food_order.foodVendor.name }}</td>
|
||||
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">{{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}</td>
|
||||
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">{{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}</td>
|
||||
<td class="relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6">
|
||||
<a href="{{ path('app_food_order_show', {'id': food_order.id}) }}" class="text-indigo-600 hover:text-indigo-900">View<span class="sr-only">, order from {{ food_order.createdBy }}</span></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue