diff --git a/config.yaml b/config.yaml index 24cce69..fd812ee 100644 --- a/config.yaml +++ b/config.yaml @@ -1,5 +1,43 @@ name: PARCOURSMOB +menu_items: + - name: dashboard + title: Tableau de bord + link: /app/ + icon: hero:outline/home + - name: beneficiaries + title: Bénéficiaires + link: /app/beneficiaries/ + icon: hero:outline/user-group + - name: journeys + title: Déplacements + link: /app/journeys/ + icon: hero:outline/map + - name: solidarity_transport + title: Transport solidaire + link: /app/solidarity-transport/ + icon: tabler-icons:car + - name: vehicles + title: Véhicules partagés + link: /app/vehicles/ + icon: tabler-icons:car + - name: vehicles_management + title: Gestion des véhicules + link: /app/vehicles-management/ + icon: hero:outline/briefcase + - name: agenda + title: Agenda dispositifs + link: /app/agenda/ + icon: hero:outline/calendar + - name: directory + title: Répertoire solutions + link: /app/directory/ + icon: hero:outline/document-text + - name: support + title: Support + link: /app/support/ + icon: hero:outline/support + views: generic: files: @@ -30,6 +68,7 @@ views: - web/layouts/beneficiaries/_partials/beneficiary-files.html - web/layouts/beneficiaries/_partials/beneficiary-organizations.html - web/layouts/beneficiaries/_partials/beneficiary-diags.html + - web/layouts/beneficiaries/_partials/beneficiary-wallet.html - web/layouts/beneficiaries/display.html create_diag: files: @@ -147,7 +186,7 @@ views: journeys: search: files: - - web/layouts/_partials/address_autocomplete.html + - web/layouts/_partials/orb_address_autocomplete.html - web/layouts/journeys/_partials/journeys-all.html - web/layouts/journeys/_partials/journeys-others.html - web/layouts/journeys/_partials/journeys-carpool.html @@ -207,6 +246,7 @@ views: overview: files: - web/layouts/solidarity_transport/_partials/drivers_list.html + - web/layouts/solidarity_transport/_partials/bookings_list.html - web/layouts/solidarity_transport/overview.html driver_create: files: @@ -214,9 +254,18 @@ views: - web/layouts/solidarity_transport/driver_create.html driver_display: files: + - web/layouts/_partials/address_autocomplete.html - web/layouts/solidarity_transport/_partials/driver_availabilities.html - web/layouts/solidarity_transport/_partials/driver_documents.html - web/layouts/solidarity_transport/driver_display.html + driver_journey: + files: + - web/layouts/solidarity_transport/_partials/journey_preview.html + - web/layouts/solidarity_transport/driver_journey.html + booking_display: + files: + - web/layouts/solidarity_transport/_partials/journey_preview.html + - web/layouts/solidarity_transport/booking_display.html administration: home: diff --git a/web/assets/css/main.css b/web/assets/css/main.css index d7c2afd..79ed3a0 100644 --- a/web/assets/css/main.css +++ b/web/assets/css/main.css @@ -25,4 +25,7 @@ html { font-family: Bitter, serif; } + input { + padding: 2px; + } } diff --git a/web/assets/js/main.js b/web/assets/js/main.js index 0b0b059..bd5f41d 100644 --- a/web/assets/js/main.js +++ b/web/assets/js/main.js @@ -1,6 +1,10 @@ import '@kingshott/iodine'; import Alpine from 'alpinejs' +import { Protocol } from "pmtiles"; window.Alpine = Alpine -Alpine.start() \ No newline at end of file +Alpine.start() + +let protocol = new Protocol(); +maplibregl.addProtocol("pmtiles",protocol.tile); diff --git a/web/layouts/_partials/address_autocomplete.html b/web/layouts/_partials/address_autocomplete.html index 84e47c7..9d28ad7 100644 --- a/web/layouts/_partials/address_autocomplete.html +++ b/web/layouts/_partials/address_autocomplete.html @@ -1,13 +1,12 @@ {{ define "address_autocomplete" }} - -
+}'>
{{ end }} + +{{define "geojson"}}{ + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [{{index .geometry.coordinates 0}}, {{index .geometry.coordinates 1}}], + }, + "properties": { + "label": "{{.properties.label}}" + } +}{{end}} diff --git a/web/layouts/_partials/mainmenu.html b/web/layouts/_partials/mainmenu.html index fa64067..bb5f172 100644 --- a/web/layouts/_partials/mainmenu.html +++ b/web/layouts/_partials/mainmenu.html @@ -1,19 +1,20 @@ {{define "mainmenu"}} -{{range .LayoutState.MenuItems}} +{{range .LayoutState.Menu}} +{{if moduleAvailable .name }} {{end}} - +{{end}} {{end}} diff --git a/web/layouts/_partials/orb_address_autocomplete.html b/web/layouts/_partials/orb_address_autocomplete.html new file mode 100644 index 0000000..0c5bee5 --- /dev/null +++ b/web/layouts/_partials/orb_address_autocomplete.html @@ -0,0 +1,59 @@ + +{{ define "address_autocomplete" }} + +
+ + + + + +
+{{ end }} + +{{define "geojson"}}{ + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [{{index .Point 0}}, {{index .Point 1}}], + }, + "properties": { + "label": "{{.Properties.label}}" + } +}{{end}} diff --git a/web/layouts/beneficiaries/_partials/beneficiary-wallet.html b/web/layouts/beneficiaries/_partials/beneficiary-wallet.html new file mode 100644 index 0000000..793c7bf --- /dev/null +++ b/web/layouts/beneficiaries/_partials/beneficiary-wallet.html @@ -0,0 +1,46 @@ +{{define "beneficiary_wallet"}} +
+
+

Solde : {{if .ViewState.beneficiary.Data.wallet}}{{ .ViewState.beneficiary.Data.wallet }}{{else}}0{{end}} €

+ + +
+ +
+{{end}} diff --git a/web/layouts/beneficiaries/display.html b/web/layouts/beneficiaries/display.html index 77d7dfb..36e49c4 100644 --- a/web/layouts/beneficiaries/display.html +++ b/web/layouts/beneficiaries/display.html @@ -133,6 +133,11 @@ :class="tab == 'documents' ? 'border-co-blue text-co-blue' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'"> Documents + + Compte mobilité + @@ -149,6 +154,7 @@
{{template "beneficiary_files" .}}
{{template "beneficiary_notes" .}}
+
{{template "beneficiary_wallet" .}}
{{template "beneficiary_organizations" .}}
diff --git a/web/layouts/dashboard/dashboard.html b/web/layouts/dashboard/dashboard.html index 0b01f54..f2fcefa 100644 --- a/web/layouts/dashboard/dashboard.html +++ b/web/layouts/dashboard/dashboard.html @@ -69,9 +69,15 @@ {{template "beneficiaries_widget" .ViewState.beneficiaries}} - {{template "agenda_widget" .ViewState.events}} - {{template "bookings_widget" .ViewState.fleets}} + + {{if moduleAvailable "agenda"}} + {{template "agenda_widget" .ViewState.events}} + {{end}} + + {{if moduleAvailable "vehicles_management"}} + {{template "bookings_widget" .ViewState.fleets}} + {{end}} -{{end}} \ No newline at end of file +{{end}} diff --git a/web/layouts/journeys/_partials/journeys-all.html b/web/layouts/journeys/_partials/journeys-all.html index f00d7a5..7a97be6 100644 --- a/web/layouts/journeys/_partials/journeys-all.html +++ b/web/layouts/journeys/_partials/journeys-all.html @@ -53,7 +53,7 @@ {{end}} - {{ if gt (len .ViewState.journeys.Journeys) 0}} + {{ if and .ViewState.journeys (gt (len .ViewState.journeys.Journeys) 0)}}
{{.IconSet.Icon "tabler-icons:bus" "h-6 w-6 inline-flex mr-4"}} @@ -101,33 +101,10 @@ --> +

Transport solidaire

- - - - - - - - - {{ range .ViewState.solidarity_drivers }} - - - - - {{ end }} - -
- Conducteurs disponibles - -   -
{{ .Data.first_name }} {{ .Data.last_name }} - - Organiser le transport solidaire - -
+ + {{template "journeys_solidarity_transport" .}} +
{{end}} diff --git a/web/layouts/journeys/_partials/journeys-others.html b/web/layouts/journeys/_partials/journeys-others.html index 39f2176..4a27833 100644 --- a/web/layouts/journeys/_partials/journeys-others.html +++ b/web/layouts/journeys/_partials/journeys-others.html @@ -1,6 +1,7 @@ {{define "journeys_others"}} +{{if moduleAvailable "vehicles"}}
{{.IconSet.Icon "tabler-icons:car" "h-6 w-6 inline-flex mr-4"}} @@ -34,5 +35,5 @@ - -{{end}} \ No newline at end of file +{{end}} +{{end}} diff --git a/web/layouts/journeys/_partials/journeys-public-transit.html b/web/layouts/journeys/_partials/journeys-public-transit.html index 59bbfab..ed0a52b 100644 --- a/web/layouts/journeys/_partials/journeys-public-transit.html +++ b/web/layouts/journeys/_partials/journeys-public-transit.html @@ -1,10 +1,11 @@ {{define "journeys_public_transit"}} -{{ if eq (len .ViewState.journeys.Journeys) 0}} +{{ if or (not .ViewState.journeys) (eq (len .ViewState.journeys.Journeys) 0)}}

Aucun transport en commun pour ce trajet.

{{end}} {{$first := true}} +{{if .ViewState.journeys}} {{range .ViewState.journeys.Journeys}} {{if $first}} {{$first = false}} @@ -78,4 +79,5 @@
{{end}} -{{end}} \ No newline at end of file +{{end}} +{{end}} diff --git a/web/layouts/journeys/_partials/journeys-solidarity-transport.html b/web/layouts/journeys/_partials/journeys-solidarity-transport.html index f47dff4..5cc2539 100644 --- a/web/layouts/journeys/_partials/journeys-solidarity-transport.html +++ b/web/layouts/journeys/_partials/journeys-solidarity-transport.html @@ -1,7 +1,7 @@ {{define "journeys_solidarity_transport"}} -{{ if eq (len .ViewState.solidarity_drivers) 0}} +{{ if eq (len .ViewState.driver_journeys) 0}}

Aucun conducteur solidaire disponible pour ce trajet.

{{else}} @@ -12,6 +12,14 @@ class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-6"> Conducteurs disponibles + + Distance conducteur + + + Distance passager +   @@ -19,13 +27,16 @@ - {{ range .ViewState.solidarity_drivers }} + {{ range .ViewState.driver_journeys }} + {{ $driver := (index $.ViewState.solidarity_drivers .DriverId)}} - {{ .Data.first_name }} {{ .Data.last_name }} + {{ $driver.Data.first_name }} {{ $driver.Data.last_name }} + {{ .DriverDistance }} km + {{ .PassengerDistance }} km - Organiser le transport solidaire + href="/app/solidarity-transport/drivers/{{$driver.ID}}/journeys/{{.Id}}"> + Organiser diff --git a/web/layouts/layout.html b/web/layouts/layout.html index d8eabd1..126a357 100644 --- a/web/layouts/layout.html +++ b/web/layouts/layout.html @@ -10,6 +10,10 @@ + + + + diff --git a/web/layouts/solidarity_transport/_partials/bookings_list.html b/web/layouts/solidarity_transport/_partials/bookings_list.html new file mode 100644 index 0000000..66366da --- /dev/null +++ b/web/layouts/solidarity_transport/_partials/bookings_list.html @@ -0,0 +1,82 @@ + +{{ define "solidarity_bookings_list" }} +{{if eq (len .ViewState.bookings) 0}} +
Aucun trajet déclaré
+{{else}} + + + + + + + + + + + + + + {{range .ViewState.bookings}} + + + + + + + + + + {{ end }} + +
+ Conducteur + + Passager + + Départ + + Destination + + Date + + Statut + +   +
+ + {{ (index $.ViewState.drivers_map .DriverId).Data.first_name }} + {{ (index $.ViewState.drivers_map .DriverId).Data.last_name }} + + + + {{ (index $.ViewState.passengers_map .PassengerId).Data.first_name }} + {{ (index $.ViewState.passengers_map .PassengerId).Data.last_name }} + + + {{ .Journey.PassengerPickup.Properties.label }} + + {{ .Journey.PassengerDrop.Properties.label }} + + {{ .Journey.PassengerPickupDate.Format "02/01/2006 15:04" }} + + {{ if eq .Status "WAITING_CONFIRMATION"}} + Attente confirmation + {{ else if eq .Status "VALIDATED"}} + Validé + {{ else if eq .Status "CANCELLED"}} + Annulé + {{ end }} + + + Voir + +
+{{end}} +{{end}} diff --git a/web/layouts/solidarity_transport/_partials/driver_availabilities.html b/web/layouts/solidarity_transport/_partials/driver_availabilities.html index e3178d7..832f093 100644 --- a/web/layouts/solidarity_transport/_partials/driver_availabilities.html +++ b/web/layouts/solidarity_transport/_partials/driver_availabilities.html @@ -9,21 +9,21 @@
- {{ range .ViewState.driver.Data.solidarity_transport_availabilities }} + {{ range .ViewState.availabilities }}
- {{ if eq .day 0.0}}Dimanche - {{ else if eq .day 1.0}}Lundi - {{ else if eq .day 2.0}}Mardi - {{ else if eq .day 3.0}}Mercredi - {{ else if eq .day 4.0}}Jeudi - {{ else if eq .day 5.0}}Vendredi - {{ else if eq .day 6.0}}Samedi + {{ if eq .Day 0}}Dimanche + {{ else if eq .Day 1}}Lundi + {{ else if eq .Day 2}}Mardi + {{ else if eq .Day 3}}Mercredi + {{ else if eq .Day 4}}Jeudi + {{ else if eq .Day 5}}Vendredi + {{ else if eq .Day 6}}Samedi {{ end }} - {{.start_time}} - {{ .end_time }} + {{.StartTime}} - {{ .EndTime }}
 
- +
{{ end }}
@@ -49,6 +49,12 @@
+
+ + {{ $fieldName := "address" }} + {{ template "address_autocomplete" (dict "FieldName" $fieldName "Address" .ViewState.driver.Data.address) }} + +
Lundi    Mardi    diff --git a/web/layouts/solidarity_transport/_partials/drivers_list.html b/web/layouts/solidarity_transport/_partials/drivers_list.html index 40a7e25..e3fdbb2 100644 --- a/web/layouts/solidarity_transport/_partials/drivers_list.html +++ b/web/layouts/solidarity_transport/_partials/drivers_list.html @@ -29,7 +29,15 @@ - Disponibilités + Adresse + + + Téléphone + + + Profil validé @@ -41,7 +49,11 @@ {{ range .ViewState.drivers }} {{ .Data.first_name }} {{ .Data.last_name }} - + {{if .Data.address}}{{.Data.address.properties.label}}{{end}} + {{ .Data.phone_number }} + + Oui + diff --git a/web/layouts/solidarity_transport/_partials/journey_preview.html b/web/layouts/solidarity_transport/_partials/journey_preview.html new file mode 100644 index 0000000..ee454d1 --- /dev/null +++ b/web/layouts/solidarity_transport/_partials/journey_preview.html @@ -0,0 +1,268 @@ +{{define "journey_preview"}} +
+
+
+

Le trajet

+

Informations sur le trajet

+
+
+
+
+
+
+
Départ passager
+
{{.driver_journey.PassengerPickup.Properties.label}}
+
+
+
Destination passager
+
{{.driver_journey.PassengerDrop.Properties.label}}
+
+
+
Départ conducteur
+
{{.driver_journey.DriverDeparture.Properties.label}}
+
+
+
Destination conducteur
+
{{.driver_journey.DriverArrival.Properties.label}}
+
+
+
Kilomètres passager
+
{{.driver_journey.PassengerDistance}} km
+
+
+
Kilomètres conducteur
+
{{.driver_journey.DriverDistance}} km
+
+
+
Horaire départ conducteur
+
{{ .driver_journey.DriverDepartureDate.Format "02/01/2006 15:04"}}
+
+
+
Horaire rendez vous passager
+
{{ .driver_journey.PassengerPickupDate.Format "02/01/2006 15:04"}}
+
+
+
Temps de trajet (passager)
+
{{ printf "%.0f" .driver_journey.Duration.Minutes }} min
+
+
+
Prix (passager)
+
{{ .driver_journey.Price.Amount }} {{ .driver_journey.Price.Currency}}
+
+
+
+
+
+ +
+
+
+
+
+
+
+

Conducteur

+

{{.driver.Data.first_name}} {{.driver.Data.last_name}}

+
+
+
+
+ {{if .driver.Data.email}} +
+
Email
+
{{.driver.Data.email}}
+
+ {{end}} + {{if .driver.Data.phone_number}} +
+
Téléphone
+
{{.driver.Data.phone_number}}
+
+ {{end}} + {{if .driver.Data.birthdate}} +
+
Date de naissance
+
{{(timeFrom .driver.Data.birthdate).Format + "02/01/2006"}}
+
+ {{end}} + {{if and .driver.Data.gender (ne .driver.Data.gender "0")}} +
+
Genre
+
{{genderISO5218 .driver.Data.gender}}
+
+ {{end}} + {{if .driver.Data.address}} +
+
Adresse
+
{{.driver.Data.address.properties.label}}
+
+ {{end}} + {{if .driver.Data.file_number}} +
+
Numéro de dossier (CAF / Pole emploi)
+
{{.driver.Data.file_number}}
+
+ {{end}} +
+
+ +
+
+
+
+

Passager

+

{{if ne .passenger.ID "" }}{{.passenger.Data.first_name}} {{.passenger.Data.last_name}}{{end}}

+
+
+
+ {{if eq .passenger.ID ""}} + + +
+ + +
+ + + + +
    + + + + +
+
+
+ +
+ + + {{ else }} +
+ {{if .passenger.Data.email}} +
+
Email
+
{{.passenger.Data.email}}
+
+ {{end}} + {{if .passenger.Data.phone_number}} +
+
Téléphone
+
{{.passenger.Data.phone_number}}
+
+ {{end}} + {{if .passenger.Data.birthdate}} +
+
Date de naissance
+
{{(timeFrom .passenger.Data.birthdate).Format + "02/01/2006"}}
+
+ {{end}} + {{if and .passenger.Data.gender (ne .passenger.Data.gender "0")}} +
+
Genre
+
{{genderISO5218 .passenger.Data.gender}}
+
+ {{end}} + {{if .passenger.Data.address}} +
+
Adresse
+
{{.passenger.Data.address.properties.label}}
+
+ {{end}} + {{if .passenger.Data.file_number}} +
+
Numéro de dossier (CAF / Pole emploi)
+
{{.passenger.Data.file_number}}
+
+ {{end}} +
+
Compte mobilié (solde)
+
{{if .passenger.Data.wallet}}{{ .passenger.Data.wallet }}{{else}}0{{end}} EUR
+
+
+
+ + {{end}} +
+
+ +{{end}} diff --git a/web/layouts/solidarity_transport/booking_display.html b/web/layouts/solidarity_transport/booking_display.html new file mode 100644 index 0000000..bac779d --- /dev/null +++ b/web/layouts/solidarity_transport/booking_display.html @@ -0,0 +1,35 @@ +{{define "content"}} +
+

+ Transport solidaire +

+ {{ if eq .ViewState.booking.Status "WAITING_CONFIRMATION"}} +
Attente confirmation
+ {{ else if eq .ViewState.booking.Status "VALIDATED"}} +
Validé
+ {{ else if eq .ViewState.booking.Status "CANCELLED"}} +
Annulé
+ {{ end }} +
+ + {{if eq .ViewState.booking.Status "WAITING_CONFIRMATION" }} + + {{end}} + {{if ne .ViewState.booking.Status "WAITING_CONFIRMATION" }} + + {{end}} + {{if ne .ViewState.booking.Status "CANCELLED" }} + + {{end}} +
+
+
+ {{template "journey_preview" (dict "driver_journey" .ViewState.booking.Journey "driver" .ViewState.driver "passenger" .ViewState.passenger "beneficiaries" .ViewState.beneficiaries)}} +
+ +{{ end }} diff --git a/web/layouts/solidarity_transport/driver_create.html b/web/layouts/solidarity_transport/driver_create.html index e627986..c7c305b 100644 --- a/web/layouts/solidarity_transport/driver_create.html +++ b/web/layouts/solidarity_transport/driver_create.html @@ -58,7 +58,7 @@
@@ -66,7 +66,7 @@
@@ -74,7 +74,7 @@
@@ -83,7 +83,7 @@ @@ -92,10 +92,12 @@ + {{ $fieldName := "address" }} + {{ template "address_autocomplete" dict "FieldName" $fieldName }} @@ -114,7 +116,7 @@