Untitled

mail@pastecode.io avatar
unknown
php_laravel_blade
5 months ago
9.4 kB
0
Indexable
<!DOCTYPE html>
<html lang="en" style="background-color:#172554;">
<head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TransDev AlpineJS</title>

    <script>
        var appSettings = {
            apiBaseUrl: '{{$device->getApiBaseUrl()}}',
            deviceID: 'bf629d6e-c34d-413f-82ff-a603234752b6',
            refreshRate: {{$device->layout->refresh_rate ?? 30}}, // time in s between each departure API call

            // Type B = Both (departures & adverts)
            // TYPE A = Adverts
            // Type D = Departures
            displayType: 'B',
            backgroundColor: '{{$device->layout->background_color}}',
            primaryColor: '{{$device->layout->primary_color}}',
            secondaryColor: '{{$device->layout->secondary_color}}',
            lines: {{$device->layout->lines ?? 10}},

            displayMessageOnError: '{{$device->layout->display_error_message}}', // display error message when API is not reachable
            departuresInterval: 2, // time in s the departure screen is displayed
            adInterval: {{$device->layout->ad_interval ?? 10}} // default time in s the add screen is displayed - can be overwritten by each advert
        }
    </script>

    <script>
        if (typeof window.queueMicrotask !== "function") {
            window.queueMicrotask = function (callback) {
                Promise.resolve()
                    .then(callback)
                    .catch(e => setTimeout(() => {
                        throw e;
                    }));
            };
        }
    </script>

    @vite('resources/js/src/main.ts')
</head>
<body class="overflow-hidden h-screen w-screen max-h-screen max-w-screen bg-white">
<div x-data="transdevApp" class="overflow-hidden fixed z-[9999] h-screen w-screen max-h-screen max-w-screen">
    <!-- introLayer -->
    <template x-if="!firstDataGet" x-cloak>
        <div id="introLayer" class="flex flex-col h-full w-full z-50 justify-center items-center bg-slate-800">
            <span class="text-3xl text-gray-200">Welcome layer</span>
        </div>
    </template>
    <!-- adsLayer -->
    <div id="adsLayer" x-cloak x-show="adsLayerVisible" class="fixed h-full w-full z-40 flex justify-center items-center bg-blue-950">
        <template x-for="(singleAd, id) in ads" :key="id">
            <img class="object-contain" x-cloak x-show="currentAd == singleAd.id" :src="appSettings.adsPath + singleAd.media"/>
        </template>
    </div>
    <!-- infoLayer -->
    <div class="h-full w-full">
        <table id="infoLayer" class="w-full table-fixed border-collapse">
            <thead>
            <tr class="bg-white text-black">
                <th class="font-diatype lg:text-xl text-sm py-2 px-1 sm:px-4 md:px-6 md:py-8 lg:px-8 lg:py-10 border-b-2 border-lime-600">Abfahrt</th>
                <th class="font-diatype lg:text-xl text-sm py-2 px-1 sm:px-4 md:px-6 md:py-8 lg:px-8 lg:py-10 border-b-2 border-lime-600">Gleis</th>
                <th class="font-diatype lg:text-xl text-sm py-2 px-1 sm:py-8 lg:px-8 lg:py-10 border-b-2 border-lime-600">Linie</th>
                <th class="font-diatype lg:text-xl text-sm py-2 px-1 sm:py-8 lg:px-8 lg:py-10 border-b-2 border-lime-600">Richtung</th>
                <th class="font-diatype lg:text-xl text-sm py-2 px-2 sm:px-4 md:px-6 md:py-8 lg:px-8 lg:py-10 border-b-2 border-lime-600">Hinweis</th>
                <th class="font-diatype lg:text-xl text-sm py-2 px-1 sm:px-4 md:px-6 md:py-8 lg:py-10 relative">
                    <div class="absolute inset-0 right-0 flex lg:top-[109px] md:top-[80px] top-10 items-center justify-end sm:justify-between">
                        <div class="hidden lg:block w-96 border-t-2 border-lime-600"></div>
                        <img src="/img/vrrLogo.svg" alt="VRR Logo" class="h-8 w-8 sm:h-12 sm:w-12 md:h-32 md:w-24 lg:h-44 lg:w-32">
                        <div class="w-full border-t-2 border-lime-600 lg:hidden"></div>
                        <div class="hidden lg:block w-20 border-t-2 border-lime-600"></div>
                    </div>
                </th>
            </tr>
            </thead>
            <tbody>
            <template x-for="(scheduleEntity, id) in scheduleData" :key="id">
                <tr class="even:bg-white bg-gray-400 bg-opacity-10">
                    <td class="text-center font-diatype lg:text-xl text-sm py-4 px-2 sm:py-6 sm:px-4 md:py-8 md:px-6 lg:py-10 lg:px-8">
                        <template x-if="scheduleEntity.delay > 0">
                            <div>
                                <div x-text="scheduleEntity.estimatedString" class="font-bold text-red-600"></div>
                                <div class="text-red-600">
                                    <span x-text="scheduleEntity.delay + ' Min. später'"></span>
                                </div>
                            </div>
                        </template>
                        <template x-if="scheduleEntity.delay === 0">
                            <div x-text="scheduleEntity.departureString"></div>
                        </template>
                    </td>
                    <td class="text-center font-diatype lg:text-xl text-sm py-4 px-2 sm:py-6 sm:px-4 md:py-8 md:px-6 lg:py-10 lg:px-8" x-text="scheduleEntity.platform"></td>
                    <td class="text-center font-diatype lg:text-xl text-sm py-4 px-2 sm:py-6 sm:px-4 md:py-8 md:px-6 lg:py-10 lg:px-8">
                        <div class="flex items-center justify-center">
                            <template x-if="scheduleEntity.transportIcon">
                                <img class="tramLogo mr-2" x-bind:src="'/img/' + scheduleEntity.transportIcon" style="height: 3vh;width: 3vh;">
                            </template>
                            <div class="text-blue-800 text-center font-diatype lg:text-xl text-sm" x-text="scheduleEntity.transportTitle"></div>
                        </div>
                    </td>
                    <td class="text-center font-diatype lg:text-xl text-sm py-4 px-2 sm:py-6 sm:px-4 md:py-8 md:px-6 lg:py-10 lg:px-8" x-text="scheduleEntity.destination"></td>
                    <td class="py-4 px-2 sm:py-6 sm:px-4 md:py-8 md:px-6 lg:py-10 lg:px-8">
                        <div class="flex items-center text-center justify-center gap-2">
                            <div class="font-bold font-diatype lg:text-xl text-sm" x-text="scheduleEntity.departureString"></div>
                            <template x-if="scheduleEntity.delay > 0">
                                <div class="text-red-600 font-diatype lg:text-xl text-sm">
                                    <div x-text="scheduleEntity.delay + ' Min. später - Neue Abfahrt: ' + scheduleEntity.estimatedString"></div>
                                </div>
                            </template>
                        </div>
                    </td>
                    <td class="py-4 px-2 sm:py-6 sm:px-4 md:py-8 md:px-6 lg:py-10 lg:px-8"></td>
                </tr>
            </template>
            <tr id="hasNoData" class="hidden">
                <td colspan="5" class="text-center font-diatype ">
                    <div class="flex justify-between items-center border-t border-gray-300 py-4">
                        <span class="lg:text-xl sm:text-2xl md:text-3xl">17:45 Uhr</span>
                        <img src="/img/vrrLogo.svg" alt="VRR Logo" class="h-8 w-8 sm:h-12 sm:w-12 md:h-32 md:w-32 lg:h-44 lg:w-44">
                    </div>
                    <div class="text-center font-diatype text-lg sm:lg:text-xl md:text-2xl lg:text-3xl mt-4">
                        Sehr geehrte Fahrgäste, bitte beachten Sie den Aushangfahrplan sowie die Durchsage und Hinweise
                        am Bahnsteig.
                    </div>
                </td>
            </tr>
            </tbody>
        </table>
    </div>

    <div id="statusBar"
         class="h-12 bg-blue-100 text-xs font-thin fixed bottom-0 left-0 w-full z-[10000] flex flex-wrap justify-between items-center p-2">
        <span class="text-center p-2">AlpineJS</span>
        <span class="text-center p-2">
        <button class="bg-slate-500 text-white p-1 border-1 rounded-sm" @click="loadAdsList()">Ads reboot</button>
    </span>
        <span class="text-center p-2">
        Schedule Tick: <span x-text="scheduleTickNr"></span><br>
        Ads Tick: <span x-text="adsTickNr"></span>
    </span>
        <span class="text-center p-2">
        Loads In Progress: <br><span x-text="loadsInProgress"></span>
    </span>
        <span class="text-center p-2">
        Ads (current ID / available nr / all):<br>
        (<span x-text="currentAd"></span> / <span x-text="availableAds.length"></span> / <span
                x-text="ads.length"></span>)
    </span>
        <span class="text-center p-2">
        Ads Layer Visible: <br><span x-text="adsLayerVisible"></span>
    </span>
        <span class="text-center p-2">
        Had fetch errors: <br><span x-text="hasErrors"></span>
    </span>
        <span class="text-center p-2">
        <span x-text="heapSize"></span>
    </span>
        <span class="text-center p-2">
        Last departures update:<br><span x-text="lastSuccessfulAPIFetch"></span>
    </span>
    </div>
</div>
</body>
</html>
Leave a Comment