Du bist nicht angemeldet. [Anmelden]
Optionen
Thema bewerten
Variablenausgabe und Countdown in HTML-UI - #2886623 - 26.01.2018, 23:23:38
Tagtraum
Famil​ymitg​lied​

Registriert: 08.04.2003
Beiträge: 107
Hallo zusammen,

Frage 1: Wie kann eine normale Variable in die HTML-UI verschoben werden?
Mir fehlt hier nur Wissen des Syntax.
Im Moment zeige ich Daten aus Persistenzen an, das klappt:
Code:
appView.sendEvent('ausgabe', { UserPersistenceNumber: user.getPersistence().getNumber('ausgabe', 0) });

Versucht man nun die Ausgabe
Code:
appView.sendEvent('restwert', { UserPersistenceNumber: m3 });

wird in der UI angezeigt: (.Sch.atz.suc.he .in .0 S.td,. 9 .Min., 4.9 S.ek) --> in der Variable m3 steht das ganze ohne die unsinnigen Punkte, in obigem Syntax müsste offenbar etwas anderes als UserPersistenceNumber stehen, denn es hat ja damit gar nichts zu tun, sondern ist eine im Code generierte Variable. Was müsste das sein?

Frage 2: Wie würdet ihr einen laufenden Countdown in der UI realisieren?
Gibt es da schon Code-Beispiele bzw. wie würde man ansetzen?


Danke schon mal im Voraus.

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Tagtraum] - #2886665 - 27.01.2018, 12:55:59
DdvOiD glücklich
​Still lovin

Registriert: 24.02.2005
Beiträge: 638
Ort: Deutschland, NRW, Kempen
1: Im Grunde genau so, wie du es schon tust - ob du dir nun direkt einen wert aus der Persistenz holst, oder diesen vorher in einer variable zwischenspeicherst -
Warum das nun so komisch aussieht, kann ich dir nicht sagen, da ich nicht weiß was die variable m3 beinhaltet & wie diese ausgegeben wird.
- Bitte nachreichen, oder mich mal im Chat anschreiben

2. eine einfache Möglichkeit wäre hier ein einfacher Interval (setInterval) - der von einem Wert runterzählt & diesen wert ausgibt

var time = 10;
var interval = setInterval(function () {
if(--time == 0) {
clearInterval(interval);
}
console.log(time);
}, 1000);
Um eine sicherer (und betrugsfreie) variante zu haben, solltest du jedoch niemals client-seitig solche Berechnungen durchführen - sondern serverseitig und die Daten lediglich zur anzeige zum Client schicken
_________________________
Ich weiß ich bin ein A-loch... :-D , doch Scheiß egal ob ihr mich liebt... ICH hab mich gern :-]

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Tagtraum] - #2886669 - 27.01.2018, 13:29:40
Recaro
​Whiplasher

Registriert: 23.09.2013
Beiträge: 56
Ort: Hamburg
1. Wo wird m3 initilisiert? Kannst du das veröffentlichen?

2. Da gibt es mehrere Möglichkeiten. Die von DdvoiD genannte in der einen Wert bis auf 0 runterrechnet, wo der Wert den man abzieht meist dem Interval entspricht oder aber du notierst dir beim Start Date.now()+deineZeitinMS und ziehst beim Intervall immer Date.now() ab und die Differenz ist deine Restzeit. Letzteres hat den Vorteil dass man die Geschwindigkeit einstellen kann wie man mag. Ganz ok wenn man z.B. ProgressBars ruckelfreier laufen lassen möchte statt im Sekundentakt. Das ganze habe ich einmal server- und einmal clientseitig.

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Recaro] - #2886691 - 27.01.2018, 16:40:31
Tagtraum
Famil​ymitg​lied​

Registriert: 08.04.2003
Beiträge: 107
m3 wird nach Definition des HTML-Files initialisiert:

Code:
var htmlFile = new HTMLFile('home.html', {});
appView= AppContent.overlayContent(htmlFile, 300, 600);
if(user.canSendAppContent(appView)===true) {
user.sendAppContent(appView);
[hier wird m3 initialisiert und es wird ein String zusammengesetzt, der ungefähr so aussieht 
"(Schatzsuche in 0 Std, 9 Min, 49 Sek)" und nach m3 eingespeichert]
appView.sendEvent('schatzsuche', { UserPersistenceNumber: m3 });
}	


Die Frage ist, was dort in der letzten Zeile stehen müsste, mit Persistenzen hat m3 eigentlich nichts zu tun. Hierzu müsste man den Syntax/die Verwendung von sendEvent besser kennen.

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Tagtraum] - #2886692 - 27.01.2018, 17:23:43
Recaro
​Whiplasher

Registriert: 23.09.2013
Beiträge: 56
Ort: Hamburg
Moin Tagtraum,

In deinem Code schreibst du:

Zitat:
[hier wird m3 initialisiert und es wird ein String zusammengesetzt, der ungefähr so aussieht
"(Schatzsuche in 0 Std, 9 Min, 49 Sek)" und nach m3 eingespeichert]


Das ist aber nicht sehr hilfreich, da hier evtl. oder sehr wahrscheinlich schon der Fehler liegt. Deswegen nochmal die Frage wo m3 die Zuweisung erhält? Nicht als Beschreibung "hier" sondern den direkten Code.

Ist schon auffällig dass alle 4 Zeichen ein . kommt.


Die sendEvent-Mothode ist eigentlich ziemlich simpel. Übergabe eines EventNamens mit dazugehörigen Daten zum auswerten für den Clientpart. Aber ich vermute das weißt du eigentlich schon.

MfG =)

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Recaro] - #2886695 - 27.01.2018, 17:49:22
Tagtraum
Famil​ymitg​lied​

Registriert: 08.04.2003
Beiträge: 107
Code:
var htmlFile = new HTMLFile('home.html', {});
		appView= AppContent.overlayContent(htmlFile, 300, 600);
		if(user.canSendAppContent(appView)===true){
		user.sendAppContent(appView);
		var d = new Date(); var zeit = d.getTime();
		var digtime = user.getPersistence().getNumber('digtime', 0);
		var m3 = '';
		if (digtime>zeit) {
		var differenz = digtime - zeit;
		differenz = (differenz-(differenz%1000))/1000;
		var sek = differenz%60;
		var mingesamt = (differenz-sek)/60; var min = mingesamt%60;
		var std = (mingesamt-min)/60;
		m3=m3+"(Schatzsuche in "+std+" Std, "+min+" Min, "+sek+" Sek)";
		}
		else {
		m3=m3+'(Kostenlose Schatzsuche möglich)'; 
		}
		appView.sendEvent('schatzsuche', { UserPersistenceNumber: m3 });
		}	


Zur sendEvent-Methode: Es ist komisch, dass dort UserPersistenceNumber in dem Befehl steht. m3 kommt gar nicht aus einer Persistenz, der Zusammenhang ist mir unklar. Eher würde ich so etwas erwarten wie
Code:
appView.sendEvent('schatzsuche', { String: m3 });

.. weil ein String übergeben wird, oder?

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Tagtraum] - #2886697 - 27.01.2018, 18:00:29
Recaro
​Whiplasher

Registriert: 23.09.2013
Beiträge: 56
Ort: Hamburg
Moin,

Eines noch vorweg: Komme selber aus der C-Welt und mach das noch nicht so lange mit JS, also muss ich auch nicht immer richtig liegen.

Ich sehe bei dem von dir geposteten Code keinen Fehler der die "." innerhalb des Textes erklärt. Hast du den Clienttteil auch noch da? Also wo gibst du m3 aus?

Es ist egal was dort steht, ob UserPers.... String oder Banane. Es ist nur der Name des Feldes womit du nachher auf m3 kommst. Also in deinem fall event.data.UserPersistenceNumber, würdest du es umbenennen würdest du auch per event.data.banane darauf kommen.


Übrigens kannst du auch "m3 += Text" verwenden statt "m3 = m3 + Text".


Bearbeitet von Recaro (27.01.2018, 18:06:28)

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Recaro] - #2886762 - 28.01.2018, 11:15:05
Tagtraum
Famil​ymitg​lied​

Registriert: 08.04.2003
Beiträge: 107
Danke für die Rückmeldung, der Code funktioniert jetzt, ich hatte versehentlich eine Tausender-Trenner-Funktion auf den String angewendet, die eigentlich für Zahlen gedacht war.

Eine Rückfrage habe ich noch im Rahmen des Themas "Variablenausgabe in HTML-UI".
In der home.html werden Dinge benutzt wie:

Code:
<button class="commandButton case5"> Schatzsuche </button>
Bis Schatzsuche: <div id="schatzsuche"></div>


.. also ein Button und die String-Ausgabe. Wenn man einen Button nur bedingt im UI anzeigen möchte, geht das auch mit Javascript, oder? Also zum Beispiel: Wenn aus obigem Beispiel die Variable m3 den Wert "(Kostenlose Schatzsuche möglich)" hat, dann soll ein Button zur Schatzsuche angezeigt werden und wenn nicht, dann soll nur m3 und nicht der Button angezeigt werden. Wie sähe hierzu ein Code-Schnipsel für die home.html aus?

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Tagtraum] - #2886817 - 28.01.2018, 15:02:22
Recaro
​Whiplasher

Registriert: 23.09.2013
Beiträge: 56
Ort: Hamburg
Moin,

Das könntest du so machen:

Code:
if (Bedingung)
{
    document.getElementById('IdDeinesButtons').style.visibility = 'visible';
}
else
{
    document.getElementById('IdDeinesButtons').style.visibility = 'hidden';
    // m3 anzeigen
}


Bearbeitet von Recaro (28.01.2018, 15:02:43)

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Recaro] - #2887313 - 31.01.2018, 22:01:08
Tagtraum
Famil​ymitg​lied​

Registriert: 08.04.2003
Beiträge: 107
Der Code wie oben funktioniert so nicht:

Code:
<button class="commandButton case6"> Schatzsuche </button> 
		<script>
		if (Bedingung) {
		document.getElementById('case6').style.visibility = 'visible';
			}
		else
			{
			m3='(Kostenlose Schatzsuche möglich)'; 
			document.getElementById('case6').style.visibility = 'hidden';
			document.write(m3);
			}
		</script>


.. der Button ist nun leider immer sichtbar, egal ob die Bedingung erfüllt ist oder nicht.
Die m3-Ausgabe im else-Zweig mit document.write funktioniert so auch nicht.
Bis jetzt klappt nur Text direkt in HTML und Buttons.. könnte mir jemand zur Ausgabe speziell in der HTML-UI eine Info-Quelle angeben?

Danke schon mal.

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Tagtraum] - #2887330 - 31.01.2018, 23:04:06
Recaro
​Whiplasher

Registriert: 23.09.2013
Beiträge: 56
Ort: Hamburg
Wo steht die Bedingung?

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Recaro] - #2887352 - 01.02.2018, 08:19:22
Tagtraum
Famil​ymitg​lied​

Registriert: 08.04.2003
Beiträge: 107
Die Bedingung steht in der ersten Zeile des Javascripts. Ich schreibe sie nochmal zusätzlich ausgeschrieben hin, aber das sollte eigentlich nicht das Problem sein (der Code funktioniert an anderer Stelle genau so):

Code:
<button class="commandButton case6"> Schatzsuche </button> 
		<script>
		var d = new Date(); var zeit = d.getTime();
		var digtime = user.getPersistence().getNumber('digtime', 0);
		var m3 = '';
		if (digtime>zeit) { 
		document.getElementById('case6').style.visibility = 'visible';
			}
		else
			{
			m3='(Kostenlose Schatzsuche möglich)'; 
			document.getElementById('case6').style.visibility = 'hidden';
			document.write(m3);
			}
		</script>

[zum Seitenanfang]  
Re: Variablenausgabe und Countdown in HTML-UI [Re: Tagtraum] - #2887359 - 01.02.2018, 09:26:56
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.689
es ist nicht möglich im UI auf die UserPersistence Zuzugreifen. Das musst du per Event senden oder in pageData bereits mitgeben.
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]