ep3-bs icon indicating copy to clipboard operation
ep3-bs copied to clipboard

Tagesansicht auf ein Bildschirm

Open Bakati opened this issue 4 years ago • 69 comments

Hallo an Alle, Wenn ich die Seite aufrufen kommt richtigerweise heutige Tag zur Ansicht. Auf ein Terminal lauft die Seite den ganzen Tag um die aktuellen Buchungen zu sehen, auf den Browser läuft auch ein Auto Refresh (Auto Reload ohne Cache). Die Tages Stunden werden problemlos aktualisiert. Das Problem, wenn der Tag vorüber ist springt die Anzeige nicht auf den nächsten Tag. Ich lasse momentan zwei Tage auf dem Monitor anzeigen. Habe auch versucht nur ein Tag oder mehrere Tage leider kein Erfolg. Könnte jemand mir sagen wie ich das Problem lösen kann?

Vielen Dank

Bakati avatar Jul 01 '20 10:07 Bakati

Entscheidend ist, was in der URL steht.

Ruft man das System erstmalig über die Domain auf, ist der URL-Pfad leer und es wird immer der jeweils aktuelle Tag angezeigt.

Klickt man die Tage durch oder auf "Heute", steht in der URL ?date=2020-07-01 - dann ist die Ansicht auf dieses Datum festgelegt.

tkrebs avatar Jul 01 '20 11:07 tkrebs

Lieber Tobias, vielen Dank für die prompte Antwort. Richtig, das habe ich auch gesehen aber, hier drückt niemand auf eine taste da die Monitor nur als Anzeige verwendet wird. Also ich rufe die URL auf und lasse es alle 3 min. auto reloaden, wie gesagt ohne den cache zu verwenden. Meine Meinung nach die Anzeige sollte am Mitternacht aud den nächsten Tag springen aber leider nicht.

Muss ich dafür unbeding den Browser schliessen und dann wieder öffnen? Genügt es nicht die Seite zu refreshen? Liebe Grüße

Bakati avatar Jul 01 '20 15:07 Bakati

Versuche doch mal am Browser den Cache zu deaktivieren. Nachteil ist natürlich dann, dass Du alle 3 Minuten die komplette Seite lädst und damit viel mehr Traffic erzeugst. Aber dann kannst Du zumindest testen ob es daran liegt. Ansonsten müsstest Du den Browser um Mitternacht per Script neu starten und beim beenden automatisch den Cache leeren lassen.

cbits68 avatar Jul 01 '20 16:07 cbits68

Sorry, habe gerade erst gesehen, dass Du bereits ohne Cache arbeitest. Ist denn ein Benutzer eingeloggt oder lässt Du die Anzeige ohne Anmeldung laufen. Raspberry PI mit Raspbian?

cbits68 avatar Jul 01 '20 17:07 cbits68

Möglicherweise wird das Datum noch in einem Cookie gespeichert. Wenn du im Webbrowser Cookies für die Domain des Buchungssystems deaktivierst sollte es funktionieren.

tkrebs avatar Jul 01 '20 17:07 tkrebs

Das mit Cookies habe ich noch nicht gedacht, super Idee. Danke, ich werde es sofort ausprobieren.

Ansonsten habe ich den Browser vor Mitternacht per Script heruntergefahren und nach Mitternacht hoch, wie gesagt ohne Erfolg.
Gibt es beim Hochfahren eine Möglichkeit von Auto Login damit man alle Stunden des Tages sehen kann? Bisher habe ohne Anmeldung hochgefahren, aber es wäre super wenn es ginge. Danke an euch alle

Bakati avatar Jul 01 '20 18:07 Bakati

Bin auch gerade dabei ein Display für das Clubhaus mit RasPI zu basteln (Kiosk Mode). Da gibt es etwas, das quasi die Eingaben/Maus simuliert, so dass man Beim Starten ein autologin simulieren kann. Bin aber aus Zeitgründen Un Corona noch nicht so weit. Sollte erst ein Terminal mit Touchscreen werden, ist aber derzeit nicht sinnvoll, da es nach jeder Nutzung desinfiziert werden müsste. Die Display Funktion im Clubhaus finde ich aber schon sinnvoll, da wir standardmäßig die namentliche Buchungsanzeige nicht aktivieren wollen. Für uns ist das dann im Clubhaus quasi die Digitalisierung der Magnettafel.

cbits68 avatar Jul 01 '20 18:07 cbits68

Also bei uns ist namentliche Buchungsanzeige nur im Clubhaus erwünscht, daher die AUto Login auf dem großen Display der nur als Anzeige dient. leider kenn ich mit mit RasPI überhaupt nicht aus :(

Bakati avatar Jul 01 '20 18:07 Bakati

Wenn ich es realisiert habe, kann ich gern eine Anleitung schreiben. Das schöne am Raspberry PI ist der geringe Stromverbrauch und dass man ihn einfach hinten am Monitor befestigen kann. Beim Touchscreen hatte ich einige Probleme mit der Bildschirmtastatur, sonst hat es auch gut funktioniert. Ist jetzt aber aktuell durch Corona auf Eis gelegt....

cbits68 avatar Jul 01 '20 19:07 cbits68

Das wäre großartig. Danke

Bakati avatar Jul 01 '20 19:07 Bakati

Wenn Du Google Chrome auf dem Display nutzt, sollte das aber eigentlich auch mit dem autologin möglich sein. Auf dem Raspberry PI ist nur Chromium verfügbar, da funktioniert es leider nicht.

cbits68 avatar Jul 02 '20 08:07 cbits68

Super. Werde ausprobieren und berichten. Danke

Bakati avatar Jul 02 '20 09:07 Bakati

Hi @Bakati,

hier nur ein paar spontane Gedankengänge um das Auto-Login-Problem und die Auswahl des richtigen Tages zu lösen. Auf einem Raspberry kann man auch Ubuntu Mate installieren .. dort gibt es auch den Firefox und man kann ein AutoAuth-Add-on installieren.

Man könnte ans Ende der layout.phtml Datei ein Seiten-Reload mit Datumsübergabe einfügen ... sähe dann in etwas so aus. .. die Funktion darf natürlich nicht bei jedem normalen User ausgeführt werden. Man darf diesen Code nur bei einem spezielle "Kisok-Mode"-User ausführen lassen; was man auch recht einfach implementieren kann.

        // Alle 60 Sekunden sich selber mit dem aktuellen Tagesdatum aufrufen lassen
        $(document).ready(function(){
            setInterval(function()
            { 
                start = Date.now();
                const dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: '2-digit', day: '2-digit' });
                const [{ value: month },,{ value: day },,{ value: year }] = dateTimeFormat.formatToParts(start);
                location.href = "?date=" + `${year}-${month}-${day}`;
            }, 60000);
        });

Shineson1001 avatar Jul 02 '20 20:07 Shineson1001

Hi @ Shineson1001,

vielen Dank, auch eine tolle Idee, ich hoffe das ich sie umsetzen kann.

Bakati avatar Jul 03 '20 06:07 Bakati

Hi Shineson1001, das klingt nach einer einfacheren Lösung als mit Raspbian und Chromium. Werde ich mal ausprobieren. Wie kann man denn den Code auf den "Kiosk-Mode" User beschränken? Bisher habe ich immer versucht das Problem von der Client Seite zu lösen, aber die Idee mit dem serverbasierten Code für den User finde ich echt spannend!

cbits68 avatar Jul 03 '20 08:07 cbits68

Hi @cbits68, ich denke morgen werde ich Zeit dafür finden. Ich würde dann die User-Prüfung mit dem Usernamen machen .. soblad diese mit "Kiosk-" beginnt wird der Seiten-Reload Mechanismus aktiv.

Shineson1001 avatar Jul 03 '20 11:07 Shineson1001

Hi @cbits68,

hier die Änderungen: Neue Datei public/js/controller/frontend/autoreload.js

// Alle 60 Sekunden sich selber mit dem aktuellen Tagesdatum aufrufen lassen
$(document).ready(function(){
    setInterval(function()
    { 
        start = Date.now();
        const dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: '2-digit', day: '2-digit' });
        const [{ value: month },,{ value: day },,{ value: year }] = dateTimeFormat.formatToParts(start);
        location.href = "?date=" + `${year}-${month}-${day}`;
    }, 60000);
});

Anpassung module/Frontend/view/frontend/index/userpanel.online.phtml

...
                <?= sprintf($this->t('Online as %s'), $this->user->need('alias')) ?>

                <?php 
                    // Usernamen pruefen um evtl. den Kiosk-Mode zu aktivieren
                    $useralias = $this->user->need('alias');
                    
                    $pos = strpos($useralias, 'Kiosk-');
                    
                    if($pos === 0)
                    {
                        $this->headScript()->appendFile($this->basePath('js/controller/frontend/autoreload.js'));
                    }
                ?>

Shineson1001 avatar Jul 05 '20 08:07 Shineson1001

Hi @Shineson1001, funktioniert Perfekt! Vielen Dank. Ubuntu Mate läuft auch schon auf dem Raspberry PI ;-) Muss jetzt nur noch den Kiosk Modus konfigurieren und den automatischen Login mit dem AutoAuth Add-On unter Firefox einstellen ;-) Im Clubhaus werde ich dann Monitor und RasPi an eine Zeitschaltuhr hängen, so dass die nicht 7*24 Stunden durchlaufen. Vor dem Ausschalten fahre ich den RasPi natürlich per CronJob sauber runter ;-) Da der RasPi ja selbstständig hochfährt, sobald der Strom wieder da ist, sollte das Display dann auch ohne Eingriffe funktionieren.

Gruß Andreas

cbits68 avatar Jul 06 '20 07:07 cbits68

Hi @ Shineson1001 toll gemacht. Bei mir läuft die Anzeige 7*24 und auf ein Windows PC. Wenn diese Reload funktioniert brauche dann AutoAuth Add-On nicht mehr, oder verstehe ich es falsch? Ich könnte mit ein User der "Kiosk-xy" einloggen und dei Anzeige ohne den Firefox herunterfahern und wieder hochfahren weiter laufen lassen durch den Reload funktion sollte auch immer den aktuellen Tag anzeigen. Ist es richtig so?

Vielen Dank für Deine tolle Arbeit. Liebe Grüße

Bakati avatar Jul 06 '20 07:07 Bakati

Hi @Bakati, ja, wenn du den Rechner immer an und den Browser, mit eingeloggten "Kiosk-xy"-User, geöffnet lässt, dann braucht man kein AutoAuth-Add-On.

Shineson1001 avatar Jul 06 '20 08:07 Shineson1001

Hi @cbits68, so würde ich mir das auch einrichten. Berichte mal, ob das System zuverläßig läuft.

Shineson1001 avatar Jul 06 '20 08:07 Shineson1001

Mit dem AutoAuth Add-On komme ich noch nicht wirklich klar. Firefox speichert zwar die Anmeldeinformationen, aber im Add-On finde ich keine Einträge bei Saved Credentials :-( Googlen hilft hier bisher auch nicht weiter, eine Doku habe ich nicht gefunden und auf Github steht: "AutoAuth is a simple Firefox Addon based on WebExtension that submits HTTP authentication credentials automatically. It does not send credentials to pages that have a custom login form." Ob das mit dem ep3 Login funktioniert und mit https ist mir noch unklar.

cbits68 avatar Jul 06 '20 09:07 cbits68

Hi @ Shineson1001 Ok, werde erst heute einrichten spätestens bis morgen werde ich euch wissen lassen. Noch eine Frage. Die neue Datei soll 1zu 1 erstellt werden und die Anpasung in der module/Frontend/view/frontend/index/userpanel.online.phtml irgendwo eingefügt werden?

Bakati avatar Jul 06 '20 09:07 Bakati

so ist es. Den Code in der userpanel.online.phtml einfach ans Ende kopieren ...

cbits68 avatar Jul 06 '20 09:07 cbits68

Super Danke. Übrigens ich habe mit Chrome Auto Login sehr gute Erfolge gehabt. Es funktioniert gut. Probiere mal.

Bakati avatar Jul 06 '20 09:07 Bakati

Ja, da bin ich bereits dabei😉

cbits68 avatar Jul 06 '20 09:07 cbits68

Sorry für meine blöde Frage. Ist es so richtig?

...

    <td style="padding-left: 12px; border-left: solid 1px #CCC;">

        <a href="<?= $this->url('service/help') ?>" class="default-button" data-tooltip="<?= sprintf($this->t('Get additional %shelp and information%s'), '<b>', '</b>') ?>"><b>?</b></a>

    </td>

</tr>
= sprintf($this->t('Online as %s'), $this->user->need('alias')) ?>
            <?php 
                // Usernamen pruefen um evtl. den Kiosk-Mode zu aktivieren
                $useralias = $this->user->need('alias');
                
                $pos = strpos($useralias, 'Kiosk-');
                
                if($pos == 0)
                {
                    $this->headScript()->appendFile($this->basePath('js/controller/frontend/autoreload.js'));
                }
            ?>

Bakati avatar Jul 06 '20 09:07 Bakati

Chrome mit Auto Login Extention funktioniert :-)

cbits68 avatar Jul 06 '20 09:07 cbits68

Hi @ Shineson1001, gibt noch einen kleinen Schönheitsfehler. Nach der Anpassung im Code wird der angemeldete Benutzer doppelt angezeigt. Das betrifft alle Benutzer, nicht nur den Kiosk User.

Ich nehme die Anpassungen gleich noch mal raus, um zu schauen ob das wirklich daher kommt. image

cbits68 avatar Jul 06 '20 10:07 cbits68

Hi @cbits68,

                <?= sprintf($this->t('Online as %s'), $this->user->need('alias')) ?>

Der Code ist bei dir wahrscheinlich jetzt doppelt in der Datei verhanden .. einfach den letzten rauslöschen.

Shineson1001 avatar Jul 06 '20 10:07 Shineson1001