3 Commits

Author SHA1 Message Date
soukainna
e5382917cd modify some style and add the update file to delete passenger 2023-01-17 15:09:41 +01:00
soukainna
ac413680e0 fix config.yaml to stock address 2023-01-04 16:08:08 +01:00
soukainna
405038be3a add depart and destination for members in the groupscovoiturage 2023-01-04 12:09:51 +01:00
23 changed files with 365 additions and 1105 deletions

View File

@@ -27,22 +27,18 @@ views:
- web/layouts/beneficiaries/_partials/beneficiary-journeys.html - web/layouts/beneficiaries/_partials/beneficiary-journeys.html
- web/layouts/beneficiaries/_partials/beneficiary-events.html - web/layouts/beneficiaries/_partials/beneficiary-events.html
- web/layouts/beneficiaries/_partials/beneficiary-files.html - web/layouts/beneficiaries/_partials/beneficiary-files.html
- web/layouts/beneficiaries/_partials/beneficiary-organizations.html
- web/layouts/beneficiaries/display.html - web/layouts/beneficiaries/display.html
update: update:
files: files:
- web/layouts/_partials/address_autocomplete.html - web/layouts/_partials/address_autocomplete.html
- web/layouts/beneficiaries/update.html - web/layouts/beneficiaries/update.html
members: conseillers:
display: display:
files: files:
- web/layouts/members/display.html - web/layouts/conseillers/display.html
update: update:
files: files:
- web/layouts/members/update.html - web/layouts/conseillers/update.html
list:
files:
- web/layouts/members/membersList.html
vehicles: vehicles:
search: search:
files: files:
@@ -89,7 +85,6 @@ views:
- web/layouts/agenda/home.html - web/layouts/agenda/home.html
display_event: display_event:
files: files:
- web/layouts/agenda/_partials/subscribers-table.html
- web/layouts/agenda/display-event.html - web/layouts/agenda/display-event.html
create_event: create_event:
files: files:
@@ -117,8 +112,12 @@ views:
- web/layouts/_partials/address_autocomplete.html - web/layouts/_partials/address_autocomplete.html
display: display:
files: files:
- web/layouts/_partials/address_autocomplete.html
- web/layouts/journeys/display_groups.html - web/layouts/journeys/display_groups.html
- web/layouts/journeys/_partials/map.html - web/layouts/journeys/_partials/map.html
update:
files:
- web/layouts/journeys/update_groups.html
support: support:
request: request:
files: files:
@@ -148,15 +147,7 @@ views:
- web/layouts/administration/_partials/groups_admins.html - web/layouts/administration/_partials/groups_admins.html
- web/layouts/administration/_partials/group_members.html - web/layouts/administration/_partials/group_members.html
- web/layouts/administration/display_group.html - web/layouts/administration/display_group.html
beneficaires_list: group:
files:
- web/layouts/administration/beneficaires_stats.html
events_list:
files:
- web/layouts/administration/events_stats.html
vehicles_list:
files:
- web/layouts/administration/vehicles_stats.html
settings: settings:
files: files:
- web/layouts/administration/_partials/groups_admins.html - web/layouts/administration/_partials/groups_admins.html

View File

@@ -11,7 +11,7 @@
<img class="h-10 w-10 rounded-co" src="/app/beneficiaries/{{.ID}}/picture" alt=""> <img class="h-10 w-10 rounded-co" src="/app/beneficiaries/{{.ID}}/picture" alt="">
</div> </div>
<div class="flex-1 min-w-0"> <div class="flex-1 min-w-0">
<a href="/app/members/{{.ID}}" class="focus:outline-none"> <a href="/app/profile/{{.ID}}" class="focus:outline-none">
<span class="absolute inset-0" aria-hidden="true"></span> <span class="absolute inset-0" aria-hidden="true"></span>
<p class="text-sm font-medium text-gray-900">{{.Data.first_name}} {{.Data.last_name}}</p> <p class="text-sm font-medium text-gray-900">{{.Data.first_name}} {{.Data.last_name}}</p>
<p class="text-sm text-gray-500 truncate">{{.Data.email}}</p> <p class="text-sm text-gray-500 truncate">{{.Data.email}}</p>

View File

@@ -1,156 +0,0 @@
{{define "content"}}
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="sm:flex sm:items-center">
<div class="sm:flex-auto">
<h1 class="text-2xl font-semibold text-gray-900">La liste des bénéficaires</h1>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<a href="/app/administration/">
<button type="button"
class="inline-flex items-center justify-center rounded-2xl border border-transparent bg-co-blue px-4 py-2 text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto">
Retour
</button>
</a>
</div>
</div>
</div>
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8" x-data="{
state: {{.ViewState.JSONWithLimits 0 10}},
current: 0,
nb_pages() {
let nbEl = this.state.count
return Math.ceil(nbEl/10)
},
async paginate(page) {
let start = (page-1)*10
if(start < 0|| start > this.state.count) {
return
}
let resp = await fetch('/api/cache/' + this.state.cache_id + '?limits.min=' + start + '&limits.max=' + (start+10))
let data = await resp.json()
this.state.beneficiaries = data
this.current=page-1
}
}">
<div class="mt-8 flex flex-col">
<div class="-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div class="inline-block min-w-full py-2 align-middle md:px-6 lg:px-8">
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md: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">
Nom
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Téléphone
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Adresse
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Labels
</th>
<th scope="col" class="relative py-3.5 pl-3 pr-4 sm:pr-6">
<span class="sr-only">Modifier</span>
</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200 bg-white">
<template x-for="beneficiary in state.beneficiaries">
<tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="flex items-center">
<div class="h-10 w-10 flex-shrink-0">
<img class="h-10 w-10 rounded-co"
:src="'/app/beneficiaries/' + beneficiary.id + '/picture'" alt="">
</div>
<div class="ml-4">
<div class="font-medium text-gray-900"><span
x-text="beneficiary.data.first_name"></span> <span
x-text="beneficiary.data.last_name"></span></div>
<div class="text-gray-500" x-text="beneficiary.data.email"></div>
</div>
</div>
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
<div class="text-gray-900" x-text="beneficiary.data.phone_number"></div>
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500"
x-text="beneficiary.data.address ? beneficiary.data.address.properties.label : ''">
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
<template x-for="tag in beneficiary.data.tags">
<span
class="inline-flex rounded-full bg-green-100 px-2 text-xs font-semibold leading-5 text-green-800"
x-text="tag"></span>
</template>
</td>
<td
class="relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6">
<a :href="'/app/beneficiaries/' + beneficiary.id"
class="text-co-blue hover:text-co-blue">Voir<span class="sr-only">, <span
x-text="beneficiary.data.first_name"></span> <span
x-text="beneficiary.data.last_name"></span></a>
</td>
</tr>
</template>
<!-- More people... -->
</tbody>
</table>
<div class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6">
<div class="flex-1 flex justify-between sm:hidden">
<a href="#" class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"
@click="paginate(current)"> Previous </a>
<a href="#" class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"
@click="paginate(current+2)"> Next </a>
</div>
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm text-gray-700">
Résultats
<span class="font-medium" x-text="Math.min((current * 10)+1, state.count)"></span>
Ă 
<span class="font-medium" x-text="Math.min((current * 10)+10, state.count)"></span>
sur
<span class="font-medium" x-text="state.count"></span>
</p>
</div>
<div>
<nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50"
@click="paginate(current)">
<span class="sr-only">Previous</span>
<!-- Heroicon name: solid/chevron-left -->
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
</svg>
</a>
<template x-for="i in nb_pages">
<a href="#" @click="paginate(i)"
class="relative inline-flex items-center px-4 py-2 border text-sm font-medium"
:class="i == current+1 ? 'z-10 bg-indigo-50 border-co-blue text-co-blue' : 'bg-white border-gray-300 text-gray-500 hover:bg-gray-50'"
x-text="i"></a>
</template>
<!-- Current: "z-10 bg-indigo-50 border-indigo-500 text-indigo-600", Default: "bg-white border-gray-300 text-gray-500 hover:bg-gray-50" -->
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50"
@click="paginate(current+2)">
<span class="sr-only">Next</span>
<!-- Heroicon name: solid/chevron-right -->
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
</svg>
</a>
</nav>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{end}}

View File

@@ -1,105 +0,0 @@
{{define "content"}}
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="sm:flex sm:items-center">
<div class="sm:flex-auto">
<h1 class="text-2xl font-semibold text-gray-900">La liste des événements</h1>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<a href="/app/administration/">
<button type="button"
class="inline-flex items-center justify-center rounded-2xl border border-transparent bg-co-blue px-4 py-2 text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto">
Retour
</button>
</a>
</div>
</div>
</div>
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="mt-8 flex flex-col">
<div class="-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div class="inline-block min-w-full py-2 align-middle md:px-6 lg:px-8">
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg">
<table class="min-w-full divide-y divide-gray-300">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Dispositif
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Structure
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Lieu
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Dates
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Places disponibles
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Bénéficiaires positionnés
</th>
<th scope="col" class="relative py-3.5 pl-3 pr-4 sm:pr-6">
<span class="sr-only">Actions</span>
</th>
</tr>
<tbody class="divide-y divide-gray-200 bg-white">
{{range .ViewState.events}}
<a href="/app/agenda/{{.ID}}">
<tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="font-medium text-gray-900">{{.Name}}</div>
<div class="text-gray-500">{{.Type}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >
{{range .Owners}}
{{if (index $.ViewState.groups .)}}
{{(index $.ViewState.groups .).Data.name}}
{{end}}
{{end}}
</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >{{if .Data.address}}{{.Data.address.properties.label}}{{end}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >
{{if eq .Startdate .Enddate}}
Le {{(timeFrom .Startdate).Format "02/01/2006"}}
{{else}}
Du {{(timeFrom .Startdate).Format "02/01/2006"}} <br />Au {{(timeFrom .Enddate).Format "02/01/2006"}}
{{end}}
</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
{{if ne .RemainingSubscriptions 999}}
<div class="text-gray-900" >{{.RemainingSubscriptions}}</div>
{{end}}
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="flex -space-x-1 overflow-hidden" >
{{range .Subscriptions}}
<img class="inline-block h-6 w-6 rounded-co ring-2 ring-white" src="/app/beneficiaries/{{.Subscriber}}/picture" >
{{end}}
</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<a href="/app/agenda/{{.ID}}" class="text-co-blue hover:text-co-blue">Voir</a>
</td>
</tr>
</a>
{{end}}
</tbody>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
{{end}}

View File

@@ -14,8 +14,8 @@
<div <div
class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate"> class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate">
<div class="flex-1 px-4 py-2 text-sm truncate"> <div class="flex-1 px-4 py-2 text-sm truncate">
<a href="/app/administration/stats/beneficaires" class="text-gray-900 font-medium hover:text-gray-600">Bénéficiaires</a> <a href="#" class="text-gray-900 font-medium hover:text-gray-600">Bénéficiaires</a>
<p class="text-gray-500">{{len .ViewState.beneficiaries }} bénéficiaires</p> <p class="text-gray-500">{{len (index .ViewState.groups 0).Members}} bénéficiaires</p>
</div> </div>
</div> </div>
</li> </li>
@@ -23,13 +23,13 @@
<li class="col-span-1 flex shadow-sm rounded-3xl"> <li class="col-span-1 flex shadow-sm rounded-3xl">
<div <div
class="flex-shrink-0 flex items-center justify-center w-16 bg-co-green text-white text-sm font-medium rounded-l-3xl"> class="flex-shrink-0 flex items-center justify-center w-16 bg-co-green text-white text-sm font-medium rounded-l-3xl">
{{.IconSet.Icon "hero:outline/calendar" "h-6 w-6"}} {{.IconSet.Icon "hero:outline/office-building" "h-6 w-6"}}
</div> </div>
<div <div
class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate"> class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate">
<div class="flex-1 px-4 py-2 text-sm truncate"> <div class="flex-1 px-4 py-2 text-sm truncate">
<a href="/app/administration/stats/events" class="text-gray-900 font-medium hover:text-gray-600">Évenements</a> <a href="#" class="text-gray-900 font-medium hover:text-gray-600">Organisations</a>
<p class="text-gray-500">{{len .ViewState.events}} évenements</p> <p class="text-gray-500">{{len .ViewState.groups}} organisations</p>
</div> </div>
</div> </div>
</li> </li>
@@ -42,8 +42,8 @@
<div <div
class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate"> class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate">
<div class="flex-1 px-4 py-2 text-sm truncate"> <div class="flex-1 px-4 py-2 text-sm truncate">
<a href="/app/members/" class="text-gray-900 font-medium hover:text-gray-600">Référents</a> <a href="#" class="text-gray-900 font-medium hover:text-gray-600">Référents</a>
<p class="text-gray-500">{{len .ViewState.accounts}} membres</p> <p class="text-gray-500">1 membres</p>
</div> </div>
</div> </div>
</li> </li>
@@ -51,13 +51,13 @@
<li class="col-span-1 flex shadow-sm rounded-3xl"> <li class="col-span-1 flex shadow-sm rounded-3xl">
<div <div
class="flex-shrink-0 flex items-center justify-center w-16 bg-co-yellow text-white text-sm font-medium rounded-l-3xl"> class="flex-shrink-0 flex items-center justify-center w-16 bg-co-yellow text-white text-sm font-medium rounded-l-3xl">
{{.IconSet.Icon "tabler-icons:car" "h-6 w-6"}} {{.IconSet.Icon "hero:outline/shield-check" "h-6 w-6"}}
</div> </div>
<div <div
class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate"> class="flex-1 flex items-center justify-between border-t border-r border-b border-gray-200 bg-white rounded-r-3xl truncate">
<div class="flex-1 px-4 py-2 text-sm truncate"> <div class="flex-1 px-4 py-2 text-sm truncate">
<a href="/app/administration/stats/vehicles" class="text-gray-900 font-medium hover:text-gray-600">Véhicules</a> <a href="#" class="text-gray-900 font-medium hover:text-gray-600">Accompagnement</a>
<p class="text-gray-500">{{len .ViewState.bookings}} réservations de véhicules</p> <p class="text-gray-500">0 actions réalisées</p>
</div> </div>
</div> </div>
</li> </li>
@@ -65,11 +65,8 @@
</div> </div>
<div class="max-w-7xl mt-10 mx-auto px-4 sm:px-6 md:px-8"> <div class="max-w-7xl mt-10 mx-auto px-4 sm:px-6 md:px-8">
<!-- <h2 class="text-xl font-semibold text-gray-500">Gestion des organisations</h2> -->
<div class="flex-1 px-4 py-2 text-sm truncate">
<h2 class="text-xl font-semibold text-gray-500">Gestion des organisations</h2> <h2 class="text-xl font-semibold text-gray-500">Gestion des organisations</h2>
<p class="text-gray-500">( {{len .ViewState.groups}} organisations )</p>
</div>
<div class="sm:flex sm:items-center"> <div class="sm:flex sm:items-center">
<div class="sm:flex-auto"> <div class="sm:flex-auto">
<p class="mt-2 text-sm text-gray-700"></p> <p class="mt-2 text-sm text-gray-700"></p>

View File

@@ -1,151 +0,0 @@
{{define "content"}}
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="sm:flex sm:items-center">
<div class="sm:flex-auto">
<h1 class="text-2xl font-semibold text-gray-900">La liste des voitures</h1>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<a href="/app/administration/">
<button type="button"
class="inline-flex items-center justify-center rounded-2xl border border-transparent bg-co-blue px-4 py-2 text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto">
Retour
</button>
</a>
</div>
</div>
</div>
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="mt-8 flex flex-col">
<div class="-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div class="inline-block min-w-full py-2 align-middle md:px-6 lg:px-8">
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md: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">
Statut Réservation
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Organisation
</th>
<th scope="col"
class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Numéro (Immat / Bicycode)
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Type
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Modèle
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Lieu
</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">
{{range .ViewState.vehicles}}
<tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6 text-center">
<div class="flex flex-col px-6">
{{if not .Bookings}}
<span class="mt-1 p-1 bg-gray-500 text-white text-xs font-bold rounded-xl" >
Disponible
</span>
{{else if len .Bookings | eq 1}}
{{range .Bookings}}
{{if .Data.administrator_unavailability}}
<span class="mt-1 p-1 bg-black text-white text-xs font-bold rounded-xl" >
Retiré
</span>
{{else if eq .Status -1 }}
<span class="mt-1 p-1 bg-gray-500 text-white text-xs font-bold rounded-xl" >
Disponible
</span>
{{else if eq .Status 1 }}
<span class="mt-1 p-1 bg-co-blue text-white text-xs font-bold rounded-xl" >
A venir
</span>
{{else if eq .Status 0 }}
<span class="mt-1 p-1 bg-co-green text-white text-xs font-bold rounded-xl" >
En cours
</span>
{{end}}
{{end}}
{{else if gt (len .Bookings) 1}}
{{range .Bookings}}
{{if .Data.administrator_unavailability}}
<span class="mt-1 p-1 bg-black text-white text-xs font-bold rounded-xl" >
Retiré
</span>
{{else}}
{{if eq .Status 1 }}
<span class="mt-1 p-1 bg-co-blue text-white text-xs font-bold rounded-xl" >
A venir
</span>
{{else if eq .Status 0 }}
<span class="mt-1 p-1 bg-co-green text-white text-xs font-bold rounded-xl" >
En cours
</span>
{{end}}
{{end}}
{{end}}
{{$allAvailable := true}}
{{range .Bookings}}
{{if ne .Status -1}}
{{ $allAvailable = false }}
{{break}}
{{end}}
{{end}}
{{if $allAvailable}}
<span class="mt-1 p-1 bg-gray-500 text-white text-xs font-bold rounded-xl" >
Disponible
</span>
{{end}}
{{end}}
</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >{{(index $.ViewState.admingroups (index .Administrators 0)).Data.name}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >{{.Data.licence_plate}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >
{{.Type}}
{{if eq .Type "Voiture"}}
{{ if .Data.automatic}} (boite auto){{ end }}
{{end}}
</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >{{.Data.name}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >{{if .Data.address}}{{.Data.address.properties.label}}{{end}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<a href="/app/vehicles-management/fleet/{{.ID}}"
class="text-co-blue hover:text-co-blue">Voir</a>
</td>
</tr>
{{end}}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{{end}}

View File

@@ -1,43 +0,0 @@
{{define "subscribers_table"}}
<table class="min-w-full divide-y divide-gray-300 border-t border-gray-200">
<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 ">
Bénéficiaire
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Prescripteur
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Date d'inscription
</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">
{{range .ViewState.event.Subscriptions}}
<tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6 text-center">
<a href="/app/beneficiaries/{{.Subscriber}}" class="flex">
<img class="h-6 w-6 rounded-co mr-2" src="/app/beneficiaries/{{.Subscriber}}/picture" alt=" "> {{ (index $.ViewState.subscribers .Subscriber).Data.first_name }} {{ (index $.ViewState.subscribers .Subscriber).Data.last_name }}
</a>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="flex"><img class="h-6 w-6 rounded-co mr-2" src="/app/beneficiaries/{{.Data.subscribed_by.user.id}}/picture" alt=" "> {{.Data.subscribed_by.user.display_name}}</div>
{{.Data.subscribed_by.group.name}}
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
{{(timeFormat .CreatedAt "02/01/2006")}}
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<!-- <a href=""
class="text-co-blue hover:text-co-blue">Voir</a> -->
</td>
</tr>
{{end}}
</tbody>
</table>
{{end}}

View File

@@ -65,21 +65,14 @@
</div> </div>
</div> </div>
</section> </section>
{{ if eq (index .ViewState.event.Owners 0) .Group.ID }}
<section aria-labelledby="subscribers-table"></section>
<div class="bg-white shadow sm:rounded-lg">
<div class="px-4 py-5 sm:px-6">
<h2 id="event-information-title" class="text-lg leading-6 font-medium text-gray-900">Tous les inscrits</h2>
</div>
{{template "subscribers_table" .}}
</div>
</section>
{{end}}
</div> </div>
<section aria-labelledby="subscribers-title" class="lg:col-start-3 lg:col-span-1"> <section aria-labelledby="subscribers-title" class="lg:col-start-3 lg:col-span-1">
<div class="bg-white px-4 py-5 shadow sm:rounded-lg sm:px-6" x-data="{ <div class="bg-white px-4 py-5 shadow sm:rounded-lg sm:px-6">
<h2 id="subscribers-title" class="text-lg font-medium text-gray-900">Inscrire un bénéficiaire</h2>
{{if gt .ViewState.event.RemainingSubscriptions 0}}
<form class="mt-4" action="/app/agenda/{{.ViewState.event.ID}}/subscribe" method="POST">
<div class="relative mt-1 mb-4" x-data="{
text: '', text: '',
error: false,
beneficiariesListOpen: false, beneficiariesListOpen: false,
beneficiaries: {{json .ViewState.beneficiaries}}, beneficiaries: {{json .ViewState.beneficiaries}},
filteredBeneficiaries: (text) => { filteredBeneficiaries: (text) => {
@@ -94,19 +87,8 @@
this.fields.beneficiaryid = beneficiary.id this.fields.beneficiaryid = beneficiary.id
this.text = beneficiary.data.first_name + ' ' + beneficiary.data.last_name this.text = beneficiary.data.first_name + ' ' + beneficiary.data.last_name
this.beneficiariesListOpen = false this.beneficiariesListOpen = false
},
submit(event) {
if(!this.fields.beneficiaryid) {
this.error = true
event.preventDefault()
}
return this.formValidation.valid
} }
}"> }">
<h2 id="subscribers-title" class="text-lg font-medium text-gray-900">Inscrire un bénéficiaire</h2>
{{if gt .ViewState.event.RemainingSubscriptions 0}}
<form class="mt-4" action="/app/agenda/{{.ViewState.event.ID}}/subscribe" method="POST" @submit="submit">
<div class="relative mt-1 mb-4">
<input @focus="beneficiariesListOpen = true" x-model="text" id="combobox" type="text" class="w-full rounded-2xl border border-gray-300 bg-white py-2 pl-3 pr-12 shadow-sm focus:border-co-blue focus:outline-none focus:ring-1 focus:ring-co-blue sm:text-sm" role="combobox" aria-controls="options" aria-expanded="false"> <input @focus="beneficiariesListOpen = true" x-model="text" id="combobox" type="text" class="w-full rounded-2xl border border-gray-300 bg-white py-2 pl-3 pr-12 shadow-sm focus:border-co-blue focus:outline-none focus:ring-1 focus:ring-co-blue sm:text-sm" role="combobox" aria-controls="options" aria-expanded="false">
<button @click="beneficiariesListOpen = ! beneficiariesListOpen" type="button" class="absolute inset-y-0 right-0 flex items-center rounded-r-2xl px-2 focus:outline-none"> <button @click="beneficiariesListOpen = ! beneficiariesListOpen" type="button" class="absolute inset-y-0 right-0 flex items-center rounded-r-2xl px-2 focus:outline-none">
@@ -131,7 +113,6 @@
</ul> </ul>
<input type="hidden" name="subscriber" x-model="fields.beneficiaryid"> <input type="hidden" name="subscriber" x-model="fields.beneficiaryid">
</div> </div>
<p class="text-co-red text-xs mb-4" x-show="error">Vous devez sélectionner un bénéficiaire</p>
<button type="submit" <button type="submit"
class="rounded-2xl border border-transparent bg-co-blue px-4 py-2 w-full text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto"> class="rounded-2xl border border-transparent bg-co-blue px-4 py-2 w-full text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto">
Inscrire le bénéficiaire Inscrire le bénéficiaire
@@ -141,20 +122,16 @@
<p class="p-12 text-gray-500 text-center text-md">Il n'y a plus de place disponible</p> <p class="p-12 text-gray-500 text-center text-md">Il n'y a plus de place disponible</p>
{{end}} {{end}}
{{if .ViewState.subscribers}} {{if .ViewState.subscribers}}
{{if ne (index .ViewState.event.Owners 0) .Group.ID}} <h2 id="subscribers-title" class="text-lg font-medium text-gray-900 mt-10">Inscrits</h2>
<h2 id="subscribers-title" class="text-lg font-medium text-gray-900 mt-10">Bénéficiaires {{.Group.Data.name}} inscrits</h2>
<div class="mt-2"> <div class="mt-2">
{{range .ViewState.subscribers}}
<ul class="p-1"> <ul class="p-1">
{{range .ViewState.event.Subscriptions}} <a href="/app/beneficiaries/{{.ID}}">
{{if eq $.Group.ID .Data.subscribed_by.group.id}} <li class="inline-flex text-sm p-2"><img class="h-6 w-6 rounded-co mr-2" src="/app/beneficiaries/{{.ID}}/picture"> {{.Data.first_name}} {{.Data.last_name}}</li>
<a href="/app/beneficiaries/{{.Subscriber}}">
<li class="inline-flex text-sm p-2"><img class="h-6 w-6 rounded-co mr-2" src="/app/beneficiaries/{{.Subscriber}}/picture"> {{ (index $.ViewState.subscribers .Subscriber).Data.first_name }} {{ (index $.ViewState.subscribers .Subscriber).Data.last_name }}</li>
</a> </a>
{{end}}
{{end}}
</ul> </ul>
</div>
{{end}} {{end}}
</div>
{{end}} {{end}}
</div> </div>
</section> </section>

View File

@@ -1,10 +0,0 @@
{{define "beneficiary_organizations"}}
<div class="px-4 py-6 sm:px-6">
<h3 class="text-lg">Organisations gestionnaires du bénéficiaire</h3>
<ul class="my-8">
{{range .ViewState.organizations}}
<li class="text-sm ml-8">{{.Data.name}}</li>
{{end}}
</ul>
</div>
{{end}}

View File

@@ -89,11 +89,11 @@
class="block w-full pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md"> class="block w-full pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md">
<!-- <option value="notes">Notes</option> --> <!-- <option value="notes">Notes</option> -->
<!-- <option value="journeys">Déplacements</option> <option value="journeys">Déplacements</option>
<option value="vehicles">Véhicules</option> <option value="vehicles">Véhicules</option>
<option value="events">Dispositifs</option> --> <option value="events">Dispositifs</option>
<option value="documents">Documents</option> <option value="documents">Documents</option>
</select> </select>
@@ -107,7 +107,7 @@
:class="tab == 'notes' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'"> :class="tab == 'notes' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'">
Notes </a> --> Notes </a> -->
<!-- <a href="#" @click="tab = 'journeys'" <a href="#" @click="tab = 'journeys'"
class="whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm" class="whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm"
:class="tab == 'journeys' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'"> :class="tab == 'journeys' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'">
Déplacements </a> Déplacements </a>
@@ -120,25 +120,22 @@
<a href="#" @click="tab = 'events'" <a href="#" @click="tab = 'events'"
class="whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm" class="whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm"
:class="tab == 'events' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'"> :class="tab == 'events' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'">
Dispositifs </a> --> Dispositifs </a>
<a href="#" @click="tab = 'documents'" <a href="#" @click="tab = 'documents'"
class="whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm" class="whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm"
:class="tab == 'documents' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'"> :class="tab == 'documents' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'">
Documents </a> Documents </a>
<a href="#" @click="tab = 'organizations'"
class="whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm"
:class="tab == 'organizations' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'">
Gestionnaires </a>
</nav> </nav>
</div> </div>
</div> </div>
</div> </div>
<div x-show="tab == 'journeys'">{{template "beneficiary_journeys" .}}</div>
<div x-show="tab == 'vehicles'">{{template "beneficiary_vehicles" .}}</div>
<div x-show="tab == 'events'">{{template "beneficiary_events" .}}</div>
<div x-show="tab == 'documents'">{{template "beneficiary_files" .}}</div> <div x-show="tab == 'documents'">{{template "beneficiary_files" .}}</div>
<div x-show="tab == 'notes'">{{template "beneficiary_notes" .}}</div> <div x-show="tab == 'notes'">{{template "beneficiary_notes" .}}</div>
<div x-show="tab == 'organizations'">{{template "beneficiary_organizations" .}}</div>
</div> </div>
</div> </div>
</section> </section>

View File

@@ -16,10 +16,10 @@
</div> </div>
<div <div
class="mt-6 flex flex-col-reverse justify-stretch space-y-4 space-y-reverse sm:flex-row-reverse sm:justify-end sm:space-x-reverse sm:space-y-0 sm:space-x-3 md:mt-0 md:flex-row md:space-x-3"> class="mt-6 flex flex-col-reverse justify-stretch space-y-4 space-y-reverse sm:flex-row-reverse sm:justify-end sm:space-x-reverse sm:space-y-0 sm:space-x-3 md:mt-0 md:flex-row md:space-x-3">
{{if eq .UserID .ViewState.admins.ID}} <!-- <button type="button"
<a href="/app/members/{{.ViewState.admins.ID}}/update" class="inline-flex"><button type="button" class="inline-flex items-center justify-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-2xl text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-co-blue">Supprimer</button> -->
<a href="/app/profile/{{.ViewState.admins.ID}}/update" class="inline-flex"><button type="button"
class="w-full px-4 py-2 border border-transparent text-sm font-medium rounded-2xl shadow-sm text-white bg-co-blue hover:bg-co-blue focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-co-blue">Modifier</button></a> class="w-full px-4 py-2 border border-transparent text-sm font-medium rounded-2xl shadow-sm text-white bg-co-blue hover:bg-co-blue focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-co-blue">Modifier</button></a>
{{end}}
</div> </div>
</div> </div>
@@ -58,13 +58,6 @@
<dd class="mt-1 text-sm text-gray-900">{{.ViewState.admins.Data.last_name}} <dd class="mt-1 text-sm text-gray-900">{{.ViewState.admins.Data.last_name}}
</dd> </dd>
</div> </div>
<div class="sm:col-span-1">
<dt class="text-sm font-medium text-gray-500">Organisations</dt>
{{range .ViewState.groups}}
<dd class="mt-1 text-sm text-gray-900">{{.}}
</dd>
{{end}}
</div>
</dl> </dl>
</div> </div>

View File

@@ -119,7 +119,7 @@
<div class="flex justify-end"> <div class="flex justify-end">
<p x-show="! isFormValid" class="px-4 py-2 text-sm text-co-red">Certains champs de sont pas valides.</p> <p x-show="! isFormValid" class="px-4 py-2 text-sm text-co-red">Certains champs de sont pas valides.</p>
<a href="/app/members/{{.ViewState.ID}}"> <a href="/app/profile/{{.ViewState.ID}}">
<button type="button" <button type="button"
class="bg-white py-2 px-4 border border-gray-300 rounded-2xl shadow-sm text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-co-blue">Annuler</button> class="bg-white py-2 px-4 border border-gray-300 rounded-2xl shadow-sm text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-co-blue">Annuler</button>
</a> </a>

View File

@@ -1,5 +1,5 @@
{{define "beneficiaries_widget"}} {{define "beneficiaries_widget"}}
<div class="col-span-1 bg-white rounded-2xl shadow divide-y divide-gray-200 flex flex-col"> <div class="col-span-1 bg-white rounded-2xl shadow divide-y divide-gray-200">
<div class="-ml-4 -mt-2 px-4 py-2 flex items-center justify-between flex-wrap sm:flex-nowrap"> <div class="-ml-4 -mt-2 px-4 py-2 flex items-center justify-between flex-wrap sm:flex-nowrap">
<div class="ml-4 mt-2"> <div class="ml-4 mt-2">
<h3 class="text-lg leading-6 font-medium text-gray-900">Bénéficiaires</h3> <h3 class="text-lg leading-6 font-medium text-gray-900">Bénéficiaires</h3>
@@ -9,7 +9,7 @@
<button type="button" class="relative inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-co-blue hover:bg-co-blue focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-co-blue">Voir</button> <button type="button" class="relative inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-co-blue hover:bg-co-blue focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-co-blue">Voir</button>
</div> --> </div> -->
</div> </div>
<ul role="list" class="divide-y divide-gray-200 flex-1"> <ul role="list" class="divide-y divide-gray-200">
{{range .latest}} {{range .latest}}
<li class="py-2 px-4 flex"> <li class="py-2 px-4 flex">
<a href="/app/beneficiaries/{{.ID}}" class="flex w-full"> <a href="/app/beneficiaries/{{.ID}}" class="flex w-full">

View File

@@ -25,6 +25,11 @@
<input id="ar" type="hidden" value="{{.ViewState.group.Data.arrive.geometry.coordinates}}"> <input id="ar" type="hidden" value="{{.ViewState.group.Data.arrive.geometry.coordinates}}">
<input id="des" type="hidden" value="{{.ViewState.group.Data.depart.geometry.coordinates}}"> <input id="des" type="hidden" value="{{.ViewState.group.Data.depart.geometry.coordinates}}">
<input id="arri" type="hidden" value="{{.ViewState.group.Data.arrive.geometry.coordinates}}"> <input id="arri" type="hidden" value="{{.ViewState.group.Data.arrive.geometry.coordinates}}">
{{range .ViewState.beneficiaries}}
{{if (index $.ViewState.groups .ID) }}
<input id="passager" type="hidden"value="{{(index $.ViewState.groups .ID).Data.depart.geometry.coordinates}}">
{{end}}
{{end}}
<div> <div>
<span id="polyline-info-content"></span> <span id="polyline-info-content"></span>
@@ -100,7 +105,7 @@ function errorRoute() {
var br = (wwr[0]) var br = (wwr[0])
destCoord = [r, br] destCoord = [r, br]
map.setZoom(9); map.setZoom(9);
//console.log("Ici : " [depCoord[0],depCoord[1]],[destCoord[0],destCoord[1]])
map.fitBounds([[depCoord[0],depCoord[1]],[destCoord[0],destCoord[1]]],{padding: 40}); map.fitBounds([[depCoord[0],depCoord[1]],[destCoord[0],destCoord[1]]],{padding: 40});
} }
@@ -115,10 +120,8 @@ function errorRoute() {
if (rideDuration != null && rideDistance != null) { if (rideDuration != null && rideDistance != null) {
document.getElementById("polyline-info-content").innerHTML = "Durée : " + (Math.round(((rideDuration / 60) + Number.EPSILON) * 100) / 100) + " min<br/>Distance : " + rideDistance + " km"; document.getElementById("polyline-info-content").innerHTML = "Durée : " + (Math.round(((rideDuration / 60) + Number.EPSILON) * 100) / 100) + " min<br/>Distance : " + rideDistance + " km";
} }
// $("#polyline-str").val(polylineString);
// $("#ride-duration").val(rideDuration); // console.log("rideDuration :", rideDuration, ", rideDistance ",rideDistance)
// $("#ride-distance").val(rideDistance);
console.log("rideDuration :", rideDuration, ", rideDistance ",rideDistance)
if(polylineCoord != null && polylineCoord.length > 0 ){ if(polylineCoord != null && polylineCoord.length > 0 ){
drawPolylineOnMap(polylineCoord) drawPolylineOnMap(polylineCoord)
@@ -130,10 +133,9 @@ function createPolyline() {
destination = [r, br] destination = [r, br]
console.log("origin : ", origin)
if(origin != null && destination != null && origin != "" && destination != ""){ if(origin != null && destination != null && origin != "" && destination != ""){
console.log("Get polyline infos")
var hash_locs = []; var hash_locs = [];
hash_locs.push({ hash_locs.push({
'lat' : (origin[1]), 'lat' : (origin[1]),
@@ -156,17 +158,15 @@ function createPolyline() {
success : retrievePolylineInfo, success : retrievePolylineInfo,
error: routeNotOptimized(body), error: routeNotOptimized(body),
}); });
console.log("JSON.stringify(body)",JSON.stringify(body))
} }
} }
var depCoord = [] var depCoord = []
var destCoord = [] var destCoord = []
var other = []
var a, b var a, b
depCoord = [a, b] depCoord = [a, b]
console.log("yeeesss: ", a)
//////////////////////////////
//mapboxgl.accessToken = 'pk.eyJ1Ijoic291a2FpbmFsYWZkaWxpIiwiYSI6ImNsYjB1djUxNjAwaWQzdm82dnJ5OXJrZzcifQ.0i8xkskwRps3W1PFwApL_Q';
const map = new maplibregl.Map({ const map = new maplibregl.Map({
container: 'map', container: 'map',
style: 'https://api.maptiler.com/maps/streets/style.json?key=get_your_own_OpIi9ZULNHzrESv6T2vL', style: 'https://api.maptiler.com/maps/streets/style.json?key=get_your_own_OpIi9ZULNHzrESv6T2vL',
@@ -175,9 +175,24 @@ function createPolyline() {
}); });
map.addControl(new maplibregl.NavigationControl(), 'bottom-right'); map.addControl(new maplibregl.NavigationControl(), 'bottom-right');
var markers = [] var markers = []
var pass = []
//////////////////Code to add position in the map///////////////
var ii = document.querySelectorAll("#passager")
for (var i = 0; i < ii.length; i++){
var v = ii[i].value
var val = ii[i].value.split(' ')
const wl = val[0].split('[')
const wwl = val[1].split(']')
al = (wl[1]);
bl = (wwl[0])
other = [al, bl]
{var marker = new maplibregl.Marker()
.setLngLat([al, bl])//position of passager
.addTo(map);
pass.push(marker)}
}
//destination
var i = document.getElementById('de').value var i = document.getElementById('de').value
var words = i.split(' '); var words = i.split(' ');
const w = words[0].split('[') const w = words[0].split('[')
@@ -185,8 +200,6 @@ function createPolyline() {
a = (w[1]); a = (w[1]);
b = (ww[0]) b = (ww[0])
depCoord = [a, b] depCoord = [a, b]
console.log("yeeesss: ", depCoord[0])
console.log(b)
//arrive //arrive
var ar = document.getElementById('ar').value var ar = document.getElementById('ar').value
var wordsr = ar.split(' '); var wordsr = ar.split(' ');
@@ -195,7 +208,7 @@ function createPolyline() {
var r = (wr[1]); var r = (wr[1]);
var br = (wwr[0]) var br = (wwr[0])
destCoord = [r, br] destCoord = [r, br]
console.log(br)
///// /////
{var marker = new maplibregl.Marker(); {var marker = new maplibregl.Marker();
marker.setLngLat([a, b])//starting position marker.setLngLat([a, b])//starting position
@@ -205,7 +218,7 @@ function createPolyline() {
center: [a, b] center: [a, b]
}); });
console.log("again: ", a , b)
markers.push(marker) markers.push(marker)
createPolyline() createPolyline()
} }

View File

@@ -63,7 +63,7 @@
</div> </div>
<div class="col-span-5"> <div class="col-span-5">
<label for="name" class="block text-sm font-medium text-gray-700">Nombre maximum de personne</label> <label for="name" class="block text-sm font-medium text-gray-700">Nombre maximum de personne</label>
<input type="text" name="number" id="number" <input type="number" name="number" id="number"
class="mt-1 focus:ring-co-blue focus:border-co-blue block w-full shadow-sm sm:text-sm rounded-2xl" class="mt-1 focus:ring-co-blue focus:border-co-blue block w-full shadow-sm sm:text-sm rounded-2xl"
x-model="fields.number" @blur="validateField('number')" x-model="fields.number" @blur="validateField('number')"
:class="formValidation.fields.number.valid == false ? 'border-co-red border-2' : 'border-gray-300'"> :class="formValidation.fields.number.valid == false ? 'border-co-red border-2' : 'border-gray-300'">
@@ -158,34 +158,12 @@
</div> </div>
<div class="mt-5 md:mt-0 md:col-span-2"> <div class="mt-5 md:mt-0 md:col-span-2">
<!-- <div class="flex items-start">
<div class="flex items-center h-5">
<input id="ponctuelleuelle" name="ponctuelleuelle" type="checkbox"
class="focus:ring-co-blue h-4 w-4 text-co-blue border-gray-300 rounded">
</div>
<div class="ml-3 text-sm">
<label for="ponctuelleuelle" class=" text-lg font-medium leading-6 text-gray-900">ponctuelleuelle</label>
</div>
</div> -->
<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
<div x-data="{selectedListID: ''}" x-init="$watch('selectedListID', value => console.log(value))"> <div x-data="{selectedListID: ''}" x-init="$watch('selectedListID', value => console.log(value))">
<input type="radio" value="recurrent" x-model="selectedListID">&nbsp Recurrent &nbsp&nbsp <input type="radio" value="recurrent" x-model="selectedListID">&nbsp Recurrent &nbsp&nbsp
<input type="radio" value="ponctuelle" x-model="selectedListID">&nbsp Ponctuelle <input type="radio" value="ponctuelle" x-model="selectedListID">&nbsp Ponctuelle
<!-- <p>value: <span x-text="selectedListID" name="selectedListID"></span></p> -->
<!-- <div x-data="{lists: [{id: 'ponctuelle', name: 'ponctuelle'}, {id: 'recurrent', name: 'recurrent'}], selectedListID: ''}">
<template x-for="list in lists" :key="list.id">
<div>
<input x-model="selectedListID" type="radio" :value="list.id.toString()" :id="list.name" >
<label :for="list.name" x-text="list.name"></label>
</div>
</template> -->
<input id="t" :name="selectedListID" type="hidden" :value="selectedListID"> <input id="t" :name="selectedListID" type="hidden" :value="selectedListID">
<!-- <p name="selectedListID">Selected value: <code x-text="selectedListID" ></code></p> -->
<!-- ******************************* -->
<div class="sm:col-span-6" x-show="selectedListID == 'ponctuelle'" > <div class="sm:col-span-6" x-show="selectedListID == 'ponctuelle'" >
<div class="py-4 grid grid-cols-2"> <div class="py-4 grid grid-cols-2">
<div class="lg:col-span-1"> <div class="lg:col-span-1">

View File

@@ -1,4 +1,5 @@
{{define "content"}} {{define "content"}}
<div x-data="{dialog: false, id: ''}">
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8"> <div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<h1 class="text-2xl font-semibold text-gray-900">Gestion du groupe</h1> <h1 class="text-2xl font-semibold text-gray-900">Gestion du groupe</h1>
<div class="sm:flex sm:items-center"> <div class="sm:flex sm:items-center">
@@ -122,162 +123,17 @@
</div> </div>
</div> </div>
</div>
</div> </div>
<div class="mt-8 max-w-3xl mx-auto grid grid-cols-1 gap-6 lg:max-w-7xl lg:grid-flow-col-dense lg:grid-cols-1">
<!-- *********************************** -->
<div class="lg:col-start-2 lg:col-span-2" x-data="{
state: {{.ViewState.list.JSONWithLimits 0 10}},
current: 0,
nb_pages() {
let nbEl = this.state.count
return Math.ceil(nbEl/10)
},
async paginate(page) {
let start = (page-1)*10
if(start < 0|| start > this.state.count) {
return
}
let resp = await fetch('/api/cache/' + this.state.cache_id + '?limits.min=' + start + '&limits.max=' + (start+10))
let data = await resp.json()
this.state.beneficiaries = data
this.current=page-1
this.state.group = data
}
}">
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8 mt-2 mb-4">
<div class="sm:flex sm:items-center">
<div class="sm:flex-auto">
{{template "map" .}}
</div>
</div>
</div>
<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
<div class="-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8 mt-2">
<!-- -->
<div class="inline-block min-w-full py-2 align-middle md:px-6 lg:px-8">
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md: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">
Nom du bénéficiaire
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Téléphone
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Email
</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200 bg-white">
<template x-for="beneficiary in state.beneficiaries">
<tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="flex items-center">
<div class="ml-4">
<div class="font-medium text-gray-900"><span
x-text="beneficiary.data.first_name"></span> <span
x-text="beneficiary.data.last_name"></span></div>
</div>
</div>
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
<div class="text-gray-900" x-text="beneficiary.data.phone_number"></div>
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500"
x-text="beneficiary.data.email">
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
<template x-for="tag in beneficiary.data.tags">
<span
class="inline-flex rounded-full bg-green-100 px-2 text-xs font-semibold leading-5 text-green-800"
x-text="tag"></span>
</template>
</td>
<td
class="relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6">
<a :href="'/app/beneficiaries/' + beneficiary.id"
class="text-co-blue hover:text-co-blue">Voir<span class="sr-only">, <span
x-text="beneficiary.data.first_name"></span> <span
x-text="beneficiary.data.last_name"></span></a>
</td>
</tr>
</template>
</tbody>
</table>
<div class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6">
<div class="flex-1 flex justify-between sm:hidden">
<a href="#" class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"
@click="paginate(current)"> Previous </a>
<a href="#" class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"
@click="paginate(current+2)"> Next </a>
</div>
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm text-gray-700">
Résultats
<span class="font-medium" x-text="Math.min((current * 10)+1, state.count)"></span>
Ă 
<span class="font-medium" x-text="Math.min((current * 10)+10, state.count)"></span>
sur
<span class="font-medium" x-text="state.count"></span>
</p>
</div>
<div>
<nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50"
@click="paginate(current)">
<span class="sr-only">Previous</span>
<!-- Heroicon name: solid/chevron-left -->
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
</svg>
</a>
<template x-for="i in nb_pages">
<a href="#" @click="paginate(i)"
class="relative inline-flex items-center px-4 py-2 border text-sm font-medium"
:class="i == current+1 ? 'z-10 bg-indigo-50 border-co-blue text-co-blue' : 'bg-white border-gray-300 text-gray-500 hover:bg-gray-50'"
x-text="i"></a>
</template>
<!-- Current: "z-10 bg-indigo-50 border-indigo-500 text-indigo-600", Default: "bg-white border-gray-300 text-gray-500 hover:bg-gray-50" -->
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50"
@click="paginate(current+2)">
<span class="sr-only">Next</span>
<!-- Heroicon name: solid/chevron-right -->
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
</svg>
</a>
</nav>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mt-8 max-w-3xl mx-auto grid grid-cols-1 gap-6 lg:max-w-7xl lg:grid-flow-col-dense lg:grid-cols-3">
<div class="space-y-6 lg:col-start-1 lg:col-span-1"> <div class="space-y-6 lg:col-start-1 lg:col-span-1">
<div class="bg-white shadow sm:rounded-2xl"> <div class="bg-white shadow sm:rounded-2xl">
<h2 id="timeline-title" class="text-lg font-medium text-gray-900 p-4 sm:px-6">Ajouter un passager</h2> <h2 id="timeline-title" class="text-lg font-medium text-gray-900 p-4 sm:px-6">Ajouter un passager</h2>
<div class="border-t border-gray-200 px-4 py-5 sm:px-6"> <div class="border-t border-gray-200 px-4 py-5 sm:px-6">
{{if gt .ViewState.group.Data.number .ViewState.number}}
<form method="GET" > <form method="GET" >
<div x-data="{ <div x-data="{
text: '{{if .ViewState.search}}{{.ViewState.search.beneficiary.Data.first_name}} {{.ViewState.search.beneficiary.Data.last_name}}{{end}}', text: '{{if .ViewState.search}}{{.ViewState.search.beneficiary.Data.first_name}} {{.ViewState.search.beneficiary.Data.last_name}}{{end}}',
@@ -325,18 +181,142 @@
</ul> </ul>
</div> </div>
<div class="space-y-6 lg:col-start-1 lg:col-span-1 ">
{{ $departureField := "departure" }}
{{ $departureLabel := "Départ" }}
{{ $departure := .ViewState.departure }}
{{ template "address_autocomplete" dict "FieldName" $departureField "FieldLabel" $departureLabel "Address" $departure }}
{{ $destinationField := "destination" }}
{{ $destinationLabel := "Destination" }}
{{ $destination := .ViewState.destination }}
{{ template "address_autocomplete" dict "FieldName" $destinationField "FieldLabel" $destinationLabel "Address" $destination }}
</div>
</div> </div>
<button type="submit" <button type="submit"
class="rounded-2xl border border-transparent bg-co-blue px-4 py-2 my-4 mt-8 w-full text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto"> class="rounded-2xl border border-transparent bg-co-blue px-4 py-2 my-4 mt-8 w-full text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto">
Ajouter Ajouter
</button> </button>
{{else}}
<p>Vous avez atteint le nombre maximum de passagers</p>
{{end}}
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
<!-- *********************************** -->
<div class="lg:col-start-2 lg:col-span-2">
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8 mt-2 mb-4">
<div class="sm:flex sm:items-center">
<div class="sm:flex-auto">
{{template "map" .}}
</div>
</div>
</div>
<div class="-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8 mt-2">
<!-- -->
<div class="inline-block min-w-full py-2 align-middle md:px-6 lg:px-8">
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md: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">
Nom du bénéficiaire
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Départ
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Déstination
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200 bg-white">
{{range .ViewState.beneficiaries}}
{{if (index $.ViewState.groups .ID) }}
<tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="flex items-center">
<div class="h-10 w-10 flex-shrink-0">
<img class="h-10 w-10 rounded-co"
:src="'/app/beneficiaries/' + `{{.ID}}`+ '/picture'" alt="">
</div>
<a :href="'/app/beneficiaries/' + `{{.ID}}`">
<div class="flex items-center">
<div class="ml-4">
<div class="text-co-blue hover:text-co-blue"><span
>{{.Data.first_name}}</span> <span
>{{.Data.last_name}}</span></div>
</div>
</div></a>
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
{{if (index $.ViewState.groups .ID).Data.depart}}
<div class="text-gray-900" >{{(index $.ViewState.groups .ID).Data.depart.properties.label}}</div>
{{else}}
<div class="text-gray-900" >...</div>
{{end}}
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
{{if (index $.ViewState.groups .ID).Data.arrive}}
<div class="text-gray-900" >{{(index $.ViewState.groups .ID).Data.arrive.properties.label}}</div>
{{else}}
<div class="text-gray-900" >...</div>
{{end}}
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
<a :href="'/app/journeys/groups_covoiturage/create/{{(index $.ViewState.groups .ID).ID}}/{{(index $.ViewState.groups .ID).Groupid}}/{{(index $.ViewState.groups .ID).Memberid}}'">
<div class="flex items-center">
<div class="ml-4">
<div class="text-co-blue hover:text-co-blue"><span
>retirer</span> </div>
</div>
</a>
</td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>

View File

@@ -63,15 +63,6 @@
</div> </div>
<div class="ml-4"> <div class="ml-4">
<!-- <div class="font-medium text-gray-900"> <span
x-text="beneficiary.data.name"></span> </div> -->
<!-- <div class="flex items-center font-medium text-gray-700 text-xl">
{{$.IconSet.Icon "hero:outline/user-group" "flex-shrink-0 mr-1.5 h-5 w-5"}}
<p>
<span
x-text="beneficiary.data.name"></span>
</p>
</div> -->
<div class="truncate"> <div class="truncate">
<div class="flex text-sm"> <div class="flex text-sm">
<p class="font-medium text-lg text-co-blue truncate" x-text="beneficiary.data.name"></p> <p class="font-medium text-lg text-co-blue truncate" x-text="beneficiary.data.name"></p>
@@ -99,7 +90,6 @@
</tr> </tr>
</template> </template>
<!-- More people... -->
</tbody> </tbody>
</table> </table>
<div class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6"> <div class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6">

View File

@@ -0,0 +1,32 @@
{{define "content"}}
<div>
<form method="POST">
<div class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity"></div>
<div class="fixed inset-0 z-10 overflow-y-auto">
<div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0">
<div class="relative transform overflow-hidden rounded-lg bg-white px-4 pt-5 pb-4 text-left shadow-xl transition-all sm:my-8 sm:w-full max-w-lg sm:p-6">
<div>
<div class="mx-auto flex h-12 w-12 items-center justify-center rounded-co bg-co-blue text-white">
{{.IconSet.Icon "hero:outline/information-circle" "h-6 w-6"}}
</div>
<div class="mt-3 text-center sm:mt-5">
<h3 class="text-lg font-medium leading-6 text-gray-900" id="modal-title">Confirmation de retrait</h3>
<div class="mt-2">
<p class="text-sm text-gray-500">Vous etes sur de retirer ce passager </p>
</div>
</div>
</div>
<div class="mt-5 sm:mt-6 sm:grid sm:grid-flow-row-dense sm:grid-cols-2">
<a href="/app/journeys/groups_covoiturage/create/{{.ViewState.groupid}}" class="mt-3 inline-flex w-full justify-center rounded-l-2xl border border-gray-300 bg-white px-4 py-2 text-base font-medium text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:col-start-1 sm:mt-0 sm:text-sm">Annuler</a>
<button type="submit" class="inline-flex w-full justify-center rounded-r-2xl border border-transparent bg-co-blue px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-co-blue focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:col-start-2 sm:text-sm">Confirmation</button>
</div>
</div>
</div>
</div>
</form>
</div>
{{end}}

View File

@@ -151,14 +151,14 @@
x-transition:leave-start="transform opacity-100 scale-100" x-transition:leave-start="transform opacity-100 scale-100"
x-transition:leave-end="transform opacity-0 scale-95"> x-transition:leave-end="transform opacity-0 scale-95">
<!-- Active: "bg-gray-100", Not Active: "" --> <!-- Active: "bg-gray-100", Not Active: "" -->
<a href="/app/members/{{.UserID}}" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1" <a href="/app/profile/{{.UserID}}" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1"
id="user-menu-item-0">Votre profil</a> id="user-menu-item-0">Votre profil</a>
<a href="/app/members/{{.UserID}}/update" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1" <a href="/app/profile/{{.UserID}}/update" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1"
id="user-menu-item-1">Paramètres</a> id="user-menu-item-1">Paramètres</a>
<a href="/auth/disconnect" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1" <!-- <a href="/app/disconnect" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1"
id="user-menu-item-2">Se déconnecter</a> id="user-menu-item-2">Se déconnecter</a> -->
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,154 +0,0 @@
{{define "content"}}
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="sm:flex sm:items-center">
<div class="sm:flex-auto">
<h1 class="text-2xl font-semibold text-gray-900">La listes des référents</h1>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<a href="/app/administration/">
<button type="button"
class="inline-flex items-center justify-center rounded-2xl border border-transparent bg-co-blue px-4 py-2 text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto">
Retour
</button>
</a>
</div>
</div>
</div>
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8" x-data="{
state: {{.ViewState.list.JSONWithLimits 0 10}},
current: 0,
nb_pages() {
let nbEl = this.state.count
return Math.ceil(nbEl/10)
},
async paginate(page) {
let start = (page-1)*10
if(start < 0|| start > this.state.count) {
return
}
let resp = await fetch('/api/cache/' + this.state.cache_id + '?limits.min=' + start + '&limits.max=' + (start+10))
let data = await resp.json()
this.state.members = data
this.current=page-1
}
}">
<div class="mt-8 flex flex-col">
<div class="-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div class="inline-block min-w-full py-2 align-middle md:px-6 lg:px-8">
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md: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">
Nom
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Téléphone
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Email
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900">
Organisations
</th>
<th scope="col" class="relative py-3.5 pl-3 pr-4 sm:pr-6">
<span class="sr-only"></span>
</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200 bg-white">
<template x-for="(member, i) in state.members" >
<tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="flex items-center">
<div class="h-10 w-10 flex-shrink-0">
<img class="h-10 w-10 rounded-co"
:src="'/app/members/' + member.id + '/picture'" alt="">
</div>
<div class="ml-4">
<div class="font-medium text-gray-900"><span
x-text="member.data.first_name"></span> <span
x-text="member.data.last_name"></span></div>
</div>
</div>
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
<div class="text-gray-900" x-text="member.data.phone_number"></div>
</td>
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500"
x-text="member.data.email">
</td>
<template x-for="(group, index) in state.groups" >
<template x-if="i === index">
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500"
x-text="group" >
</td>
</template></template>
<td
class="relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6">
<a :href="'/app/members/' + member.id"
class="text-co-blue hover:text-co-blue">Voir<span class="sr-only">, <span
x-text="member.data.first_name"></span> <span
x-text="member.data.last_name"></span></a>
</td>
</tr>
</template>
</tbody>
</table>
<div class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6">
<div class="flex-1 flex justify-between sm:hidden">
<a href="#" class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"
@click="paginate(current)"> Previous </a>
<a href="#" class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"
@click="paginate(current+2)"> Next </a>
</div>
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm text-gray-700">
Résultats
<span class="font-medium" x-text="Math.min((current * 10)+1, state.count)"></span>
Ă 
<span class="font-medium" x-text="Math.min((current * 10)+10, state.count)"></span>
sur
<span class="font-medium" x-text="state.count"></span>
</p>
</div>
<div>
<nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50"
@click="paginate(current)">
<span class="sr-only">Previous</span>
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
</svg>
</a>
<template x-for="i in nb_pages">
<a href="#" @click="paginate(i)"
class="relative inline-flex items-center px-4 py-2 border text-sm font-medium"
:class="i == current+1 ? 'z-10 bg-indigo-50 border-co-blue text-co-blue' : 'bg-white border-gray-300 text-gray-500 hover:bg-gray-50'"
x-text="i"></a>
</template>
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50"
@click="paginate(current+2)">
<span class="sr-only">Next</span>
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
</svg>
</a>
</nav>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{end}}

View File

@@ -1,19 +1,7 @@
{{define "content"}} {{define "content"}}
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8"> <div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="sm:flex sm:items-center">
<div class="sm:flex-auto">
<h1 class="text-2xl font-semibold text-gray-900">Réservations</h1> <h1 class="text-2xl font-semibold text-gray-900">Réservations</h1>
</div> </div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<a href="/app/administration/stats/vehicles/available">
<button type="button"
class="inline-flex items-center justify-center rounded-2xl border border-transparent bg-co-blue px-4 py-2 text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:w-auto">
Voitures disponibles
</button>
</a>
</div>
</div>
</div>
<div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8"> <div class="max-w-7xl mx-auto px-4 sm:px-6 md:px-8">
<div class="mt-8 flex flex-col"> <div class="mt-8 flex flex-col">
@@ -23,22 +11,13 @@
<table class="min-w-full divide-y divide-gray-300"> <table class="min-w-full divide-y divide-gray-300">
<thead class="bg-gray-50"> <thead class="bg-gray-50">
<tr> <tr>
<th scope="col" <!-- <th scope="col"
class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-6"> class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Statut Statut
</th> </th> -->
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6"> <th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Type Type
</th> </th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Véhicule
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Prescripteur
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Gestionnaire
</th>
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6"> <th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 sm:pl-6">
Beneficiaire Beneficiaire
</th> </th>
@@ -54,78 +33,21 @@
{{range .ViewState.bookings}} {{range .ViewState.bookings}}
<tr> <tr>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6 text-center"> <!-- <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
{{if .Data.administrator_unavailability}} <div class="text-gray-900" >aa</div>
<span class="p-1 bg-black text-white text-xs font-bold rounded-xl" > </td> -->
Retiré <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
</span> <div class="text-gray-900" >Voiture</div>
{{else}}
{{if eq .Status 1 }}
<span class="p-1 bg-co-blue text-white text-xs font-bold rounded-xl" >
A venir
</span>
{{end}}
{{if eq .Status 0 }}
<span class="p-1 bg-co-green text-white text-xs font-bold rounded-xl" >
En cours
</span>
{{end}}
{{if eq .Status -1 }}
<span class="p-1 bg-co-red text-white text-xs font-bold rounded-xl" >
Terminé
</span>
{{end}}
{{end}}
{{if not .bookings}}
<span class="p-1 bg-black text-white text-xs font-bold rounded-xl" >
Disponible
</span>
{{end}}
</td> </td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6"> <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >{{(index $.ViewState.vehicles_map .Vehicleid).Type}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >{{(index $.ViewState.vehicles_map .Vehicleid).Data.licence_plate}}</div>
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
{{if .Data.booked_by}}
{{if .Data.booked_by.user}}
<a href="/app/members/{{.Data.booked_by.user.id}}" class="flex inline">
<img class="h-5 w-5 rounded-co mr-1"
src="/app/members/{{.Data.booked_by.user.id}}/picture" alt="">
{{.Data.booked_by.user.display_name}}
</a>
{{end}}
{{if .Data.booked_by.group}}
({{.Data.booked_by.group.name}})
{{end}}
{{end}}
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
{{if gt (len (index $.ViewState.vehicles_map .Vehicleid).Administrators) 0}}
{{ (index $.ViewState.groups_map (index (index $.ViewState.vehicles_map .Vehicleid).Administrators 0)).Data.name }}
{{end}}
</td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
{{if not .Data.administrator_unavailability}}
<div class="text-gray-900" ><img class="h-6 w-6 rounded-co" <div class="text-gray-900" ><img class="h-6 w-6 rounded-co"
src="/app/beneficiaries/{{.Driver}}/picture" alt=""></div> src="/app/beneficiaries/{{.Driver}}/picture" alt=""></div>
{{end}}
</td> </td>
<!-- <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6"> <!-- <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<div class="text-gray-900" >aa</div> <div class="text-gray-900" >aa</div>
</td> --> </td> -->
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6"> <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
{{if not .Data.administrator_unavailability}}
<div class="text-gray-900" >Du {{(timeFrom .Startdate).Format "02/01/2006"}} au {{(timeFrom .Enddate).Format "02/01/2006"}}</div> <div class="text-gray-900" >Du {{(timeFrom .Startdate).Format "02/01/2006"}} au {{(timeFrom .Enddate).Format "02/01/2006"}}</div>
{{else}}
<div class="text-gray-900" >Du {{(timeFrom .Unavailablefrom).Format "02/01/2006"}} au {{(timeFrom .Unavailableto).Format "02/01/2006"}}</div>
{{end}}
</td> </td>
<td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6"> <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-6">
<a href="/app/vehicles/bookings/{{.ID}}" <a href="/app/vehicles/bookings/{{.ID}}"

View File

@@ -6,50 +6,18 @@
<div class="sm:flex-auto"> <div class="sm:flex-auto">
<p class="mt-2 text-sm text-gray-700"></p> <p class="mt-2 text-sm text-gray-700"></p>
</div> </div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none" <!-- <div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
x-data="{ <button type="button"
changeVehicle: false,
selectedvehicle: ''
}">
<button type="button" @click="changeVehicle = ! changeVehicle"
class="inline-flex items-center justify-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-2xl text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-co-blue"> class="inline-flex items-center justify-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-2xl text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-co-blue">
Changer de véhicule Changer de véhicule
</button> </button>
<!-- <a href="/app/vehicles-management/bookings/{{.ViewState.booking.ID}}/delete"> <a href="/app/vehicles-management/bookings/{{.ViewState.booking.ID}}/delete">
<button type="button" <button type="button"
class="inline-flex items-center justify-center rounded-2xl border border-transparent bg-co-red px-4 py-2 text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-red focus:ring-offset-2 sm:w-auto"> class="inline-flex items-center justify-center rounded-2xl border border-transparent bg-co-red px-4 py-2 text-sm font-medium text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-co-red focus:ring-offset-2 sm:w-auto">
Annuler Annuler
</button> </button>
</a> --> </a>
</div> -->
<div class="relative z-10" aria-labelledby="modal-title" role="dialog" aria-modal="true" x-show="changeVehicle">
<div class="fixed inset-0 bg-gray-900 bg-opacity-30 transition-opacity"></div>
<div class="fixed inset-0 z-10 overflow-y-auto">
<div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0">
<div class="relative transform overflow-hidden rounded-3xl bg-white px-4 pt-5 pb-4 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-sm sm:p-6">
<div class="text-center">
<h3 class="text-lg font-medium leading-6 text-gray-900" id="modal-title">Changer de véhicule</h3>
</div>
<form method="POST" action="/app/vehicles-management/bookings/{{.ViewState.booking.ID}}/change-vehicle" class="mt-4">
<select x-model="selectedvehicle" id="vehicle" name="vehicle" class="mt-1 block w-full rounded-2xl border-gray-300 py-2 pl-3 pr-10 text-base focus:border-co-blue focus:outline-none focus:ring-co-blue sm:text-sm">
<option value=""></option>
{{range .ViewState.alternative_vehicles }}
<option value="{{.ID}}">{{.Data.name}} ({{.Type}})</option>
{{end}}
</select>
<div class="mt-5 sm:mt-6">
<button type="submit" class="inline-flex w-full justify-center rounded-2xl border border-transparent bg-co-blue px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-co-blue focus:outline-none focus:ring-2 focus:ring-co-blue focus:ring-offset-2 sm:text-sm">Changer de véhicule</button>
</div>
</form>
<div class="mt-5 sm:mt-6">
<button @click="changeVehicle=false" type="button" class="inline-flex w-full justify-center max-w-xs bg-white hover:bg-gray-50 border-gray-300 border px-4 py-2 text-gray-700 items-center text-sm rounded-2xl focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-co-blue">Annuler</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
<div class="mt-8 max-w-3xl mx-auto grid grid-cols-1 gap-6 lg:max-w-7xl lg:grid-flow-col-dense lg:grid-cols-3"> <div class="mt-8 max-w-3xl mx-auto grid grid-cols-1 gap-6 lg:max-w-7xl lg:grid-flow-col-dense lg:grid-cols-3">
<div class="space-y-6 lg:col-start-1 lg:col-span-1"> <div class="space-y-6 lg:col-start-1 lg:col-span-1">
@@ -161,7 +129,7 @@
<div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4"> <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4">
<dt class="text-sm font-medium text-gray-500">Type</dt> <dt class="text-sm font-medium text-gray-500">Type</dt>
<dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
{{.ViewState.vehicle.Type}}</dd> Voiture</dd>
</div> </div>
{{if .ViewState.vehicle.Data.address}} {{if .ViewState.vehicle.Data.address}}
<div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4"> <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4">

View File

@@ -834,14 +834,14 @@ html {
grid-column: span 5 / span 5; grid-column: span 5 / span 5;
} }
.m-4 {
margin: 1rem;
}
.m-2 { .m-2 {
margin: 0.5rem; margin: 0.5rem;
} }
.m-4 {
margin: 1rem;
}
.-mx-4 { .-mx-4 {
margin-left: -1rem; margin-left: -1rem;
margin-right: -1rem; margin-right: -1rem;
@@ -977,10 +977,6 @@ html {
margin-bottom: 2.5rem; margin-bottom: 2.5rem;
} }
.ml-8 {
margin-left: 2rem;
}
.-mt-2 { .-mt-2 {
margin-top: -0.5rem; margin-top: -0.5rem;
} }
@@ -1228,6 +1224,16 @@ html {
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
} }
.translate-y-4 {
--tw-translate-y: 1rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-0 {
--tw-translate-y: 0px;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-95 { .scale-95 {
--tw-scale-x: .95; --tw-scale-x: .95;
--tw-scale-y: .95; --tw-scale-y: .95;
@@ -1659,11 +1665,6 @@ html {
background-color: rgb(238 242 255 / var(--tw-bg-opacity)); background-color: rgb(238 242 255 / var(--tw-bg-opacity));
} }
.bg-black {
--tw-bg-opacity: 1;
background-color: rgb(0 0 0 / var(--tw-bg-opacity));
}
.bg-indigo-600 { .bg-indigo-600 {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(79 70 229 / var(--tw-bg-opacity)); background-color: rgb(79 70 229 / var(--tw-bg-opacity));
@@ -1679,6 +1680,11 @@ html {
background-color: rgb(107 114 128 / var(--tw-bg-opacity)); background-color: rgb(107 114 128 / var(--tw-bg-opacity));
} }
.bg-black {
--tw-bg-opacity: 1;
background-color: rgb(0 0 0 / var(--tw-bg-opacity));
}
.bg-opacity-75 { .bg-opacity-75 {
--tw-bg-opacity: 0.75; --tw-bg-opacity: 0.75;
} }
@@ -2041,6 +2047,11 @@ html {
color: rgb(0 0 0 / var(--tw-text-opacity)); color: rgb(0 0 0 / var(--tw-text-opacity));
} }
.text-green-600 {
--tw-text-opacity: 1;
color: rgb(22 163 74 / var(--tw-text-opacity));
}
.placeholder-gray-500::-moz-placeholder { .placeholder-gray-500::-moz-placeholder {
--tw-placeholder-opacity: 1; --tw-placeholder-opacity: 1;
color: rgb(107 114 128 / var(--tw-placeholder-opacity)); color: rgb(107 114 128 / var(--tw-placeholder-opacity));
@@ -2295,6 +2306,11 @@ html {
background-color: rgb(29 78 216 / var(--tw-bg-opacity)); background-color: rgb(29 78 216 / var(--tw-bg-opacity));
} }
.hover\:bg-indigo-700:hover {
--tw-bg-opacity: 1;
background-color: rgb(67 56 202 / var(--tw-bg-opacity));
}
.hover\:bg-opacity-5:hover { .hover\:bg-opacity-5:hover {
--tw-bg-opacity: 0.05; --tw-bg-opacity: 0.05;
} }
@@ -2478,14 +2494,14 @@ html {
grid-column: span 4 / span 4; grid-column: span 4 / span 4;
} }
.sm\:col-start-1 {
grid-column-start: 1;
}
.sm\:col-start-2 { .sm\:col-start-2 {
grid-column-start: 2; grid-column-start: 2;
} }
.sm\:col-start-1 {
grid-column-start: 1;
}
.sm\:-mx-6 { .sm\:-mx-6 {
margin-left: -1.5rem; margin-left: -1.5rem;
margin-right: -1.5rem; margin-right: -1.5rem;
@@ -2557,6 +2573,10 @@ html {
max-width: 24rem; max-width: 24rem;
} }
.sm\:max-w-lg {
max-width: 32rem;
}
.sm\:flex-auto { .sm\:flex-auto {
flex: 1 1 auto; flex: 1 1 auto;
} }
@@ -2569,6 +2589,23 @@ html {
flex: 1 1 0%; flex: 1 1 0%;
} }
.sm\:translate-y-0 {
--tw-translate-y: 0px;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.sm\:scale-95 {
--tw-scale-x: .95;
--tw-scale-y: .95;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.sm\:scale-100 {
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.sm\:grid-flow-row-dense { .sm\:grid-flow-row-dense {
grid-auto-flow: row dense; grid-auto-flow: row dense;
} }
@@ -2609,6 +2646,10 @@ html {
gap: 1rem; gap: 1rem;
} }
.sm\:gap-3 {
gap: 0.75rem;
}
.sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) { .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) {
--tw-space-y-reverse: 0; --tw-space-y-reverse: 0;
margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));