| 
 | 1 | +<?php  | 
 | 2 | + | 
 | 3 | +/*  | 
 | 4 | + * This file is part of the Symfony package.  | 
 | 5 | + *  | 
 | 6 | + * (c) Fabien Potencier <fabien@symfony.com>  | 
 | 7 | + *  | 
 | 8 | + * For the full copyright and license information, please view the LICENSE  | 
 | 9 | + * file that was distributed with this source code.  | 
 | 10 | + */  | 
 | 11 | + | 
 | 12 | +namespace App\Repository;  | 
 | 13 | + | 
 | 14 | +use App\Example;  | 
 | 15 | +use App\UxPackage;  | 
 | 16 | + | 
 | 17 | +class ExampleRepository  | 
 | 18 | +{  | 
 | 19 | +    /**  | 
 | 20 | +     * @var list<Example>  | 
 | 21 | +     */  | 
 | 22 | +    private array $examples;  | 
 | 23 | + | 
 | 24 | +    public function __construct() {  | 
 | 25 | +        $this->examples = [  | 
 | 26 | +            new Example(UxPackage::Map, 'Basic map (Leaflet)', 'A basic map centered on Paris with zoom level 12', '/ux-map/basic?renderer=leaflet'),  | 
 | 27 | +            new Example(UxPackage::Map, 'Basic map (Google)', 'A basic map centered on Paris with zoom level 12', '/ux-map/basic?renderer=google'),  | 
 | 28 | +            new Example(UxPackage::Map, 'With markers, fit bounds (Leaflet)', 'A map with 2 markers, and the bounds are automatically adjusted to fit both markers', '/ux-map/with-markers-and-fit-bounds-to-markers?renderer=leaflet'),  | 
 | 29 | +            new Example(UxPackage::Map, 'With markers, fit bounds (Google)', 'A map with 2 markers, and the bounds are automatically adjusted to fit both markers', '/ux-map/with-markers-and-fit-bounds-to-markers?renderer=google'),  | 
 | 30 | +            new Example(UxPackage::Map, 'With markers, zoomed on Paris (Leaflet)', 'A map with 2 markers (Paris and Lyon), zoomed on Paris', '/ux-map/with-markers-and-zoomed-on-paris?renderer=leaflet'),  | 
 | 31 | +            new Example(UxPackage::Map, 'With markers, zoomed on Paris (Google)', 'A map with 2 markers (Paris and Lyon), zoomed on Paris', '/ux-map/with-markers-and-zoomed-on-paris?renderer=google'),  | 
 | 32 | +            new Example(UxPackage::Map, 'With markers and info windows (Leaflet)', 'A map with 2 markers (Paris and Lyon), each with an info window', '/ux-map/with-markers-and-info-windows?renderer=leaflet'),  | 
 | 33 | +            new Example(UxPackage::Map, 'With markers and info windows (Google)', 'A map with 2 markers (Paris and Lyon), each with an info window', '/ux-map/with-markers-and-info-windows?renderer=google'),  | 
 | 34 | +            new Example(UxPackage::Map, 'With custom icon markers (Leaflet)', 'A map with 3 markers (Paris, Lyon, Bordeaux), each with a custom icon', '/ux-map/with-markers-and-custom-icons?renderer=leaflet'),  | 
 | 35 | +            new Example(UxPackage::Map, 'With custom icon markers (Google)', 'A map with 3 markers (Paris, Lyon, Bordeaux), each with a custom icon', '/ux-map/with-markers-and-custom-icons?renderer=google'),  | 
 | 36 | +            new Example(UxPackage::Map, 'With polygons (Leaflet)', 'A map with two polygons, one that covers main cities in Italy, and one weird shape on France', '/ux-map/with-polygons?renderer=leaflet'),  | 
 | 37 | +            new Example(UxPackage::Map, 'With polygons (Google)', 'A map with two polygons, one that covers main cities in Italy, and one weird shape on France', '/ux-map/with-polygons?renderer=google'),  | 
 | 38 | +            new Example(UxPackage::Map, 'With polylines (Leaflet)', 'A map with two polylines: one through Paris/Lyon/Marseille/Bordeaux, and the other one through Rennes/Nantes/Tours', '/ux-map/with-polylines?renderer=leaflet'),  | 
 | 39 | +            new Example(UxPackage::Map, 'With polylines (Google)', 'A map with two polylines: one through Paris/Lyon/Marseille/Bordeaux, and the other one through Rennes/Nantes/Tours', '/ux-map/with-polylines?renderer=google'),  | 
 | 40 | +            new Example(UxPackage::Map, 'With circles (Leaflet)', 'A map with two circles: one centered on Paris, the other on Lyon', '/ux-map/with-circles?renderer=leaflet'),  | 
 | 41 | +            new Example(UxPackage::Map, 'With circles (Google)', 'A map with two circles: one centered on Paris, the other on Lyon', '/ux-map/with-circles?renderer=google'),  | 
 | 42 | +            new Example(UxPackage::Map, 'With rectangles (Leaflet)', 'A map with two rectangles: one from Paris to Lille, the other from Lyon to Bordeaux', '/ux-map/with-rectangles?renderer=leaflet'),  | 
 | 43 | +            new Example(UxPackage::Map, 'With rectangles (Google)', 'A map with two rectangles: one from Paris to Lille, the other from Lyon to Bordeaux', '/ux-map/with-rectangles?renderer=google'),  | 
 | 44 | +            new Example(UxPackage::React, 'Basic React Component', 'A basic React component that displays a welcoming message', '/ux-react/'),  | 
 | 45 | +            new Example(UxPackage::Svelte, 'Basic Svelte Component', 'A basic Svelte component that displays a welcoming message', '/ux-svelte/'),  | 
 | 46 | +            new Example(UxPackage::Vue, 'Basic Vue Component', 'A basic Vue component that displays a welcoming message', '/ux-vue/'),  | 
 | 47 | +        ];  | 
 | 48 | +    }  | 
 | 49 | + | 
 | 50 | +    /**  | 
 | 51 | +     * @return list<Example>  | 
 | 52 | +     */  | 
 | 53 | +    public function findAll(): array  | 
 | 54 | +    {  | 
 | 55 | +        return $this->examples;  | 
 | 56 | +    }  | 
 | 57 | + | 
 | 58 | +    public function findAllByPackage(): array  | 
 | 59 | +    {  | 
 | 60 | +        $grouped = [];  | 
 | 61 | + | 
 | 62 | +        foreach ($this->examples as $example) {  | 
 | 63 | +            $grouped[$example->uxPackage->value][] = $example;  | 
 | 64 | +        }  | 
 | 65 | + | 
 | 66 | +        return $grouped;  | 
 | 67 | +    }  | 
 | 68 | + | 
 | 69 | +    public function findOneByUrl(string $url): ?Example  | 
 | 70 | +    {  | 
 | 71 | +        foreach ($this->examples as $example) {  | 
 | 72 | +            if ($example->url === $url) {  | 
 | 73 | +                return $example;  | 
 | 74 | +            }  | 
 | 75 | +        }  | 
 | 76 | + | 
 | 77 | +        return null;  | 
 | 78 | +    }  | 
 | 79 | +}  | 
0 commit comments