JavaSkript für zeitberechnung

Fragen & Antworten zur Steuerung von 3D Inhalten in PDFs über JavaScript
mAdi_mAuS
Beiträge: 5
Registriert: 26.02.2018, 14:52

JavaSkript für zeitberechnung

Beitrag von mAdi_mAuS » 26.02.2018, 15:13

Hallo,

ich möchte in einem Bericht Zeiten zusammen rechnen lassen.
Das ist auch möglich mit folgendem Befehl:

var cStundenRow1 = this.getField("StundenRow1").value;
var cStundenRow2 = this.getField("StundenRow2").value;

if ((cStundenRow1 != "-1") && (cStundenRow2 != "-1"))
{
var nStundenRow1=0,
nStundenRow2=0;
var aStundenRow1 = cStundenRow1.split(":");
nStundenRow1 = Number(aStundenRow1[0]) + Number(aStundenRow1[1])/60;

var aStundenRow2 = cStundenRow2.split(":");
nStundenRow2 = Number(aStundenRow2[0]) + Number(aStundenRow2[1])/60;

var nSumme1 = nStundenRow2 + nStundenRow1;
var nHours = Math.floor(nSumme1 );
var nMinutes = Math.floor((nSumme1 - nHours)*60 + 0.5);
event.value = util.printf("%02d:%02d",nHours, nMinutes);
}

else
event.value = "";

Bevor die Berechnung allerdings stattfindet, muss ich entweder aus zwei Dropdown-Menüs, die Uhrzeiten auswählen und zusammen rechnen lassen, oder ich trage händisch die Uhrzeit in der Spalte StundenRow1 ein.

Dies wurde mit einem Skript realiesiert, welches jetzt nicht mehr funktioniert.

Skript das nicht mehr funktioniert:

var cStartTime = this.getField("VonRow1").value;
var cEndTime = this.getField("BisRow1").value;
var cStunden = this.getField("StundenRow1").value;

if ((cStartTime < "1") && (cEndTime < "1"))
{
cStunden == "StundenRow1";
}
else if ((cStartTime > "0") && (cEndTime > "0"))
{
var nStartTime=0, nEndTime=0;
var aStartTime = cStartTime.split(":");
nStartTime = Number(aStartTime[0]) + Number(aStartTime[1])/60;
var aEndTime = cEndTime.split(":");
nEndTime = Number(aEndTime[0]) + Number(aEndTime[1])/60;
var nTimeDiff = nEndTime - nStartTime;
var nHours = Math.floor(nTimeDiff );
var nMinutes = Math.floor((nTimeDiff - nHours)*60 + 0.5);
event.value = util.printf("%02d:%02d",nHours, nMinutes);
}
else
{
event.value = "";
}

Hat jemand eine Idee wie ich das realisieren kann, die Zeit über die DropDown-Listen ausrechnen und die Zeit händisch in das Feld eintragen zu lassen?

Über Antworten und Hilfen wäre ich dankbar.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

JavaSkript für zeitberechnung

Beitrag von armine » 27.02.2018, 14:45

Ein nicht funktionierender Code bringt weniger Erkennnisse als ein hochgeladenes PDF.
Versuch mal:

if (this.getField("StundenRow1").value && this.getField("StundenRow2").value) {
var Minuten = (1440 + inMinuten(this.getField("StundenRow2").value) - inMinuten(this.getField("StundenRow1").value)) % 1440 ;
event.value = Math.floor(Minuten / 60) + (100 + Minuten % 60).toString().replace(/^1/,":") ;
} else {
event.value = ""
}

function inMinuten(Zeitstring) {
var arr = (Zeitstring + ":0").split(":").map(Number) ;
return arr[0] * 60 + arr[1]
}

Das klappt auch in der Nachtschicht.

P.S: Ich würde mich wundern, wenn du dein ganzes Problem beschrieben hättest.

mAdi_mAuS
Beiträge: 5
Registriert: 26.02.2018, 14:52

JavaSkript für zeitberechnung

Beitrag von mAdi_mAuS » 27.02.2018, 16:23

Danke schön für deine Hilfe armine.

Mit folgenden Skript kann ich nun die Zeiten von zwei DropDown-Listen ausrechnen lassen:

if (this.getField("VonRow1").value && this.getField("BisRow1").value) {
var Minuten = (1440 + inMinuten(this.getField("BisRow1").value) - inMinuten(this.getField("VonRow1").value)) % 1440 ;
event.value = Math.floor(Minuten / 60) + (100 + Minuten % 60).toString().replace(/^1/,":") ;
} else {
event.value = ""
}

function inMinuten(Zeitstring) {
var arr = (Zeitstring + ":0").split(":").map(Number) ;
return arr[0] * 60 + arr[1]
}

Aber mein Problem ist, dass ich manchmal auch Händisch die Zeiten in das Feld StundenRow1 eintragen muss. Beispielsweise schreibe ich dann "00:45" in das Feld rein. Und im Feld Summe rechnet es StundenRow1 und StundenRow2 zusammen.

Nur leider funktioniert, dass mit dem händisch eintragen bei dem Skript nicht.

Könntest du mir weiter helfen?

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

JavaSkript für zeitberechnung

Beitrag von armine » 27.02.2018, 17:02

Auch ein funktionierender Code bringt weniger Erkennnisse als ein hochgeladenes PDF.

mAdi_mAuS
Beiträge: 5
Registriert: 26.02.2018, 14:52

JavaSkript für zeitberechnung

Beitrag von mAdi_mAuS » 06.03.2018, 11:24

Hallo,

ich habe jetzt ein PDF erstellt, welches den Servicebericht zeigt, mit dem ich entweder über die DropDowns die Zeit auswählen möchte, die ich beim Kunden war, oder es händisch bsp. 00:15 eintragen möchte. Wenn ich mit den DropDowns arbeite, soll es mir bei StundenRow die Zeit berechnen, die ich dort war.

Das Skript, welches hinterlegt ist bei StundenRow 1 und 2 hat auch mal funktioniert. Jetzt aber nicht mehr.

Über Hilfe würde ich mich freuen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

JavaSkript für zeitberechnung

Beitrag von armine » 06.03.2018, 15:14

Also darum geht es.

Wenn du etwas eingeben willst, sollte das Feld das auch ermöglichen.
Wo hast du den deine Berechnungsformel her?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

mAdi_mAuS
Beiträge: 5
Registriert: 26.02.2018, 14:52

Re: JavaSkript für zeitberechnung

Beitrag von mAdi_mAuS » 09.03.2018, 14:56

Hallo,

die Berechnung habe ich selbst schon vor einigen Jahren erstellt. Habt bisher auch alles reibungslos funktioniert.

Aber mein Problem ist immer noch nicht behoben, denn ich kann bei StdRow immer noch kein 0:15 eintragen.

Wäre schön wenn ich weiterhin Hilfe bekomme.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Re: JavaSkript für zeitberechnung

Beitrag von armine » 09.03.2018, 15:40

In meinem PDF kannst du "0:15" und auch "00:15" eintragen, die Berechnung funktioniert.

mAdi_mAuS
Beiträge: 5
Registriert: 26.02.2018, 14:52

Re: JavaSkript für zeitberechnung

Beitrag von mAdi_mAuS » 12.03.2018, 09:22

Hallo,

vielen Dank für die Antwort, aber leider haben wir wohl missverstanden.

Bei der Eintragung in den Drop-Down Feldern funktionierte die Berechnung schon immer. Nur wenn die Eingabe nicht über die Drop-Down Felder, sondern direkt und nur in StdRow, gemacht wird, ist dies nicht möglich, auch bei Ihrer Vorlage nicht. Das Feld ist nicht beschreibbar.
Wir benötigen aber beide Funktionen.

Danke schon mal im Voraus für die weitere Hilfe.

schmitzkatze
Beiträge: 2
Registriert: 11.09.2022, 16:12

Re: JavaSkript für zeitberechnung

Beitrag von schmitzkatze » 18.09.2022, 11:43

Hallo, ich habe schon vor einiger Zeit ein PDF Formular für die Stundenberechnung erstellt, und möchte mich mal wieder daran wagen. Ich habe hier ein Script von mAdi_AuS bzw. Armine , welches soweit funktioniert.... aber hier werden nur wenige Row's zusammengerechnet,?

Ich habe ein Formular erstellt:

In der beigefügten PDF werden nur die Summen aus Feld VonFeld und BisFeld in Gesamtsumme addiert, die aus VonFeld3 - BisFeld5 eben nicht.
Leider bekomme ich es nicht hin, mangels "Java erfahr."

Auch würde ich noch gerne die 2 Felder mit einbringen. Pause und Zuschlag


Gruss Andreas


var Minuten = [0,0,0] ;
for (i = 1; i < 6; i++) {
if (this.getField("VonFeld" + i).value && this.getField("BisFeld" + i).value) {
Minuten = (1440 + inMinuten(this.getField("BisFeld" + i).value) - inMinuten(this.getField("VonFeld" + i).value)) % 1440 ;
this.getField("StundenFeld" + i).value = MinutenZuZeitstring(Minuten)
} else {
this.getField("StundenFeld" + i).value = ""
}
}
event.value = MinutenZuZeitstring(Minuten[1] + Minuten[2]) ;


function inMinuten(Zeitstring) {
var arr = (Zeitstring + ":0").split(":").map(Number) ;
return arr[0] * 60 + arr[1]
}

function MinutenZuZeitstring(Minuten) {
return Math.floor(Minuten / 60) + (100 + Minuten % 60).toString().replace(/^1/,":") ;
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von schmitzkatze am 24.09.2022, 17:37, insgesamt 2-mal geändert.

Antworten