• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

teamstat.incl angepasst

Torsten-

Geomaster
Moin,

hab grad per zufall die teamstat.incl gefunden und eingebunden. Da ich aber kein Fan bin von fest eingetragenen dingen im Quelltext, hab ich die umgeschrieben. Nu will ich die Änderung hier einfach mal zur Diskussion stellen :)

Code:
<table class="statistics" width="100%" cellspacing='0' cellpadding='0'>
  <caption class="statistics">Teambeteiligung</caption>

  ##eval(
  sub StatTeam {
    my(%team,$cache);
    foreach $cache (keys(%found)) {
      if ($found{$cache}->{'Optional1'}) {
        while ($found{$cache}->{'Optional1'} =~ m/\+([^\+]*)/g){
          $team{$1}++;
        }
      } else {
        $team{'--ohne--'}++;
      }
    }
    return(maketds(0,3,21,5,7,scalar(keys(%found)),pairsort(1,0,%team)));
  }
  StatTeam();
  )##
</table>

Ich habe mir angewohnt, jede Person per "+name" anzugeben, daher die regex nach dem +
Die Liste wird somit dynamisch erstellt.

Siehe: http://geolog.amshove.net/stat.html

Was noch zu Lösen ist: Warum ist z.B. "Elger" doppelt erfasst?
Ganz sauber scheint es noch nicht zu funktionieren, aber für heute mach ich schluss, da guck ich aber nochmal nach :)
 

westi65

Geowizard
Habs grad mal bei mir ausprobiert und auch ich erhalte verschiedene Mitcacher doppelt erfasst. Eine kurze Suche ergab, dass ich diese Namen manchmal mit und manchmal ohne nachfolgendes Leerzeichen inder note.txt erfasst hatte. Nachdem die überflüssigen Leerzeichen (auch die zwischen den Namen, wenn mehrere Mitcacher dabei waren) entfernt waren, war alles ok.

Danke für deine Arbeit.
 
OP
Torsten-

Torsten-

Geomaster
Hej, cool, danke für die Antwort, dann brauch ich da nicht nach suchen :)
Ich werd das regex heute abend mal anpassen, und auch das design an die anderen tabellen anpassen und dann die neue Version hochladen.
 

westi65

Geowizard
Ach ja genau, das Design war noch leicht anders als bei den anderen Tabellen, da brauch ich da aber nicht weiter zu suchen, sondern warte einfach auf deine aktualisierte Version. ;)
 
OP
Torsten-

Torsten-

Geomaster
Hier die überarbeitete Version:

Code:
<div style='width:98%; padding-left:2px; background: #A9A9A9; font-weight: bold; line-height: 20px; font-size: 13px; color: black; border: 0px; text-align: left;'>Teambeteiligung</div>

<table border='0' cellpadding='2' width='98%' style='font-family: Arial, sans-serif; font-size: 13px; text-align: left;margin-bottom:15px'>

  ##eval(
  sub StatTeam {
    my(%team,$cache);
    foreach $cache (keys(%found)) {
      if ($found{$cache}->{'Optional1'}) {
        while ($found{$cache}->{'Optional1'} =~ m/\+([^\+]*[^\s\+])/g){
          $team{$1}++;
        }
      } else {
        $team{'--ohne--'}++;
      }
    }
    return(maketds(0,3,21,5,7,scalar(keys(%found)),pairsort(1,0,%team)));
  }
  StatTeam();
  )##
</table>


Wie gesagt, ich hab mich an "+xy +ab" gewöhnt. Das kann natürlich auch umgeschrieben werden in der regex. Das ist wieder einer der zahlreichen Momente, in denen ich mir eine spezifikation für die note.txt wünsche :)
 

HSCA

Geomaster
Torsten- schrieb:
Wie gesagt, ich hab mich an "+xy +ab" gewöhnt. Das kann natürlich auch umgeschrieben werden in der regex. Das ist wieder einer der zahlreichen Momente, in denen ich mir eine spezifikation für die note.txt wünsche :)

So unterschiedlich ist das halt. Ich schreibe seit Beginn meiner Cacherlaufbahn sowas [#HSCA, C, 13:20, bike, 02] in meine Logs. Damit werden dann automatisiert die Optionalfelder und das Access Feld gefüllt. Jeder Buchstabe steht hierbei für ein Teammitgied. Und dieser Buchstabe wird mit der alten teamstat.incl in eine Namen umgesetzt. Bei Fogg ist das ähnlich. Deshalb macht es wenig Sinn dafür eine Spezifikation zu schreiben. Der nächste möchte in die optionalen Felder noch ganz andere Informationen reinschreiben. Deshalb kann ja jeder die Template nach seinen Wünschen anpassen bzw. anpassen lassen.

Weiterhin viel Spaß mit geolog/ocprop - C
 

brownsugar66

Geocacher
Hallo,
wenn wir gerade bei der teamstat sind, können wir die gleich mal im Repository aktualisieren?

Code:
<div ##caption-style##>Teambeteiligung</div>
<table ##table-style##>

Und könntet ihr auch gleich die Links zu den Freunden setzen, genau so wie ihr es bei den Cacheowner gemacht habt?
Zur Erklärung, mein Team besteht nur aus mir, doch meistens gehe ich mit Cacherfreunden und die trage ich dann ein, wäre also eher eine friendstat.incl?

Danke und Gruß
 
OP
Torsten-

Torsten-

Geomaster
So ist es bei mir auch, ich habe einen Einzelaccount und zähle dann einfach die Leute hinzu.

Die Idee mit dem friendstat.incl find ich gut, dann wäre mein Code Update-geschützt im Repo und HSCA's bleibt unangetastet :)
 

HSCA

Geomaster
Torsten- schrieb:
Die Idee mit dem friendstat.incl find ich gut, dann wäre mein Code Update-geschützt im Repo
Ist eingebaut.

brownsugar66 schrieb:
Und könntet ihr auch gleich die Links zu den Freunden setzen, genau so wie ihr es bei den Cacheowner gemacht habt?

Hab ich mit hinzugefügt. Der Link wird nur gesetzt, wenn geolog der User bekannt ist. Sonst bleibt der User ohne Link stehen.

Viel Spaß - C
 
OP
Torsten-

Torsten-

Geomaster
Die friendstat.incl ist bei mir trotz update nicht im statistics Ordner. Wo läuft da was falsch?
 
OP
Torsten-

Torsten-

Geomaster
Da liegst du richtig, das ist aber immernoch die von mir geänderte teamstat.incl :)
(die übrigens nicht beim update überschrieben wurde)
 

HSCA

Geomaster
Seltsam. :???:

Dann musst du mal mit geolog -e durch den Dialog durchsteppen und bei der Frage nach den neuen Templates mit J antworten.

C
 
OP
Torsten-

Torsten-

Geomaster
die Frage kam nach dem Update nicht.

apropro: kann man das nicht mal machen, dass nur Dateien eingespielt werden, die tatsächlich geändert wurden?! Ich muss ständig nach dem einspielen der Templates wieder alle Dateien durchgehen und per diff gucken ob was neu ist, und wenn nicht, meine alte geänderte .bak widerherstellen
 

HSCA

Geomaster
Torsten- schrieb:
kann man das nicht mal machen, dass nur Dateien eingespielt werden, die tatsächlich geändert wurden
Kann "man" sicherlich. Aber welche Dateien möchtest du vergleichen?
Deine Aktuellen mit den Neuen? Da wirst du immer einen Unterschied feststellen, wenn du eine eigene Änderung hast.
Die alte Version mit der Neuen? Welches ist jetzt deine alte Version?

Wenn du eine Idee hast, oder noch besser schon einen Skriptsnipsel geschrieben hast, lass es mich wissen. ;)

C
 
OP
Torsten-

Torsten-

Geomaster
Ideen hab ich immer ne Menge, vor allem wenn ich es nicht selbst umsetzen muss :D

Wie wäre es mit ner Versionsummer pro Datei? Als Kommentar im Header oÄ?
Aber mir würds schon reichen, wenn man einfach unterscheidet zwischen "template_update" und "templates komplett neu einspielen". Sodass man bei nem Update einfach markiert, welche Dateien sich von der vorherigen zur aktuellen Version geändert haben, und nur die werden eingespielt. Und wenn man das brauch, dass alle templates neu eingespielt werden, dann halt manuell per cli-option oder sowas
 

AndiOlli

Geocacher
Hi,

ich habe bislang die teamstat nicht genutzt, würde es aber jetzt gerne tuen. Allerdings schreibe ich mein Teambeteiligung immer wie folgt:

mit Danie
mit freundbaer
mit Danie und Tom
mit Danie, Ronny, Sonja, Fabian und Matthias
usw.

wie kann ich das in der Teamstat hinterlegen?

Gruß Andi
 
OP
Torsten-

Torsten-

Geomaster
wenn du dich gut mit regulären ausdrücken auskennst :)


Probier mal folgendes (das rote ist neu, das blaue geändert):
##eval(
sub StatTeam {
my(%team,$cache);
foreach $cache (keys(%found)) {
if ($found{$cache}->{'Optional1'}) {
$found{$cache}->{'Optional1'} =~ s/\,//g
$found{$cache}->{'Optional1'} =~ s/mit//g

while ($found{$cache}->{'Optional1'} =~ m/(.*[^\s])/g){
$team{$1}++;
}
} else {
$team{'--ohne--'}++;
}
}
return(maketds(0,3,21,5,7,scalar(keys(%found)),pairsort(1,0,%team)));
}
StatTeam();
)##




Das ist aber grad aus dem Kopf zusammengebaut und nicht getestet. Ich mach leider zu wenig mit Perl um auf anhieb sagen zu können, ob das läuft :)
 

HSCA

Geomaster
Torsten- schrieb:
wenn du dich gut mit regulären ausdrücken auskennst :)


Probier mal folgendes (das rote ist neu, das blaue geändert):
##eval(
sub StatTeam {
my(%team,$cache);
foreach $cache (keys(%found)) {
if ($found{$cache}->{'Optional1'}) {
$found{$cache}->{'Optional1'} =~ s/\,//g
$found{$cache}->{'Optional1'} =~ s/mit//g

while ($found{$cache}->{'Optional1'} =~ m/(.*[^\s])/g){
$team{$1}++;
}
} else {
$team{'--ohne--'}++;
}
}
return(maketds(0,3,21,5,7,scalar(keys(%found)),pairsort(1,0,%team)));
}
StatTeam();
)##




Das ist aber grad aus dem Kopf zusammengebaut und nicht getestet. Ich mach leider zu wenig mit Perl um auf anhieb sagen zu können, ob das läuft :)

Nur so nebenbei, das beruht auf der friedstat.incl. Die teamstat.incl sieht ein bisschen anders aus.

C
 
Oben