Javascript-forum
addieren/anzeigen von Zeiten - Druckversion

+- Javascript-forum (https://javascript-forum.de)
+-- Forum: Entwicklung (https://javascript-forum.de/forumdisplay.php?fid=4)
+--- Forum: Javascript (https://javascript-forum.de/forumdisplay.php?fid=6)
+--- Thema: addieren/anzeigen von Zeiten (/showthread.php?tid=1524)



addieren/anzeigen von Zeiten - schmalen - 27.09.2022

Hallo, ich habe mir ein PDF Formular erstellt um Stunden/Zeiterfassung zu registrieren.

Leider komme ich aber nicht mehr weiter, da mir auch ausgereifte Kenntnisse im Java Bereich fehlen. 
Aber evtl. bekomme ich hier Unterstützung meines Projekts?

Ich habe hier eine Script und ein Demo PDF beigefügt.


Code:
var Minuten = [0,0,0] ;
for (i = 1; i <5; i++) {
if (this.getField("VonFeld" + i).value && this.getField("BisFeld" + i).value) {
Minuten[i] = (1440 + inMinuten(this.getField("BisFeld" + i).value) - inMinuten(this.getField("VonFeld" + i).value)) % 1440 ;
this.getField("StundenFeld" + i).value = MinutenZuZeitstring(Minuten[i])
} 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/,":") ;
}


Es geht darum, das anstatt 5 nur2 Felder in der Gesamtsumme addiert werden, und ich weiss nicht wie und wo ich da noch genau was ändern soll obwohl die Schleifenroutine <6
eingetragen ist

Danke schon mal im Voraus für die weitere Hilfe

Gruss Andreas


RE: addieren/anzeigen von Zeiten - rzscout - 28.09.2022

Hi schmalen,
ersteinmal ist das kein Java sondern JavaScript und wird mithilfe eigener Bibliotheken in Adobe Acrobat Pro umgesetzt. Diese beinhalten eigene Funktionen, Methoden und Eventaufrufe. Leider ist die JavaScript-Nutzung in PDF zu spezifisch, um schnell eine Antwort geben zu können, deswegen müsstest du etwas warten bis wir eine passende Lösung gefunden haben.

Gefunder Script in deinem PDF-Dokument:

Code:
//-------------------------------------------------------------
//-----------------Bearbeiten Sie nicht die XML-Tags--------------------
//-------------------------------------------------------------

//<AcroForm>
//<ACRO_source>GesantStunden:Calculate</ACRO_source>
//<ACRO_script>
/*********** gehört zu: AcroForm:GesantStunden:Calculate ***********/
var Minuten = [0,0,0] ;
for (i = 1; i <5; i++) {
if (this.getField("VonFeld" + i).value && this.getField("BisFeld" + i).value) {
Minuten[i] = (1440 + inMinuten(this.getField("BisFeld" + i).value) - inMinuten(this.getField("VonFeld" + i).value)) % 1440 ;
this.getField("StundenFeld" + i).value = MinutenZuZeitstring(Minuten[i])
} 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/,":") ;
}
//</ACRO_script>
//</AcroForm>

PS: Bitte für das nächste mal den Code direkt hier ins Forum schreiben. Nicht jeder hat Adobe Acrobat Pro auf seinen Computer.

Viele Grüße

rzscout


RE: addieren/anzeigen von Zeiten - schmalen - 28.09.2022

Danke Dir für die Info: War der Meinung das ich im Javascript-Forum /Thread bin?

Gruss Andreas


RE: addieren/anzeigen von Zeiten - rzscout - 28.09.2022

(28.09.2022, 12:13)schmalen schrieb: Danke Dir für die Info: War der Meinung das ich im Javascript-Forum /Thread bin?

Gruss Andreas

Bist du auch aber Java ist eine andere Sprache wie JavaScript und JavaScript im Browser unterscheidet sich zu JavaScript in PDF-Dateien.


RE: addieren/anzeigen von Zeiten - rzscout - 29.09.2022

Hi,

also folgendes zur Schleife. Eine for-Schleife besteht in der Deklaration also das was in den Klammern steht aus einem Initialisierung, einer Bedingung und Nachsatz/Fortsetzung.
Die Schleife fängt mit 1 an und durchläuft bis 4 die Schleife. Wenn du möchtest dass die Schleife 5-mal durchläuft setzt du entweder den Initialwert auf 0(i=0) oder du veränderst die Bedingung auf (i <= 5).

Für nähere Syntax, Objekt- und Methodenumfang schaue dir die Leitfäden und die Einleitung von Adobe dazu an. Diese stellen kostenlos Dokumente zur verfügung.

Viele Grüße

rzscout