2 x Modul "BundesligaTabelle" >> verschiedene Einstellungen pro Modul-Instanz

Hi!

Ich hab da mal eine Frage…bei meinem BundesligaTabelle Modul…da gibt es folgendes seltsames Verhalten:

> Legt man 2x das BundesligaTabelle Modul an und ändert die Farbe bei einem, dann ändert sich die Farbe für BEIDE Instanzen (einfach mal im WebFront 2 Module untereinander anlegen zum Test)!
> Aber ändere ich die Liga bei einem, dann wird auch nur bei einem die Liga geändert.
> Also man kann z.B. bei einem die 1. Liga und beim anderen die 2. Liga einstellen, aber nur 2x mit Farbe XXXXXX und nicht 1x mit Farbe AAAAAAA und 1x mit Farbe CCCCCC ?!?!?!? Baaaaanaaane :smiley:

Was habe ich falsch gemacht? :frowning: Oder ist es ein Bug in den IPS Modulen allgemein? :confused:

Danke und Grüße,
Chris

Nö du hast leider einen fatalen Fehler gemacht :smiley:

Was soll der Browser denn machen wenn du zweimal die gleichen Styles für ‚.bt‘ definierst ?
Kannst natürlich entweder die InstanzID dort mit einbauen oder die Styles in den Tags angeben.

Und den ‚<html>‘-Tag kannst du inzwischen auch weg lassen.

Schau es dir am besten mit den Entwicklertools des Browsers an. Dann siehst du was los ist.

Michael

Ohje, ich habs verstanden :rolleyes: Sehr doofer Fehler von mir :rolleyes: :smiley:

Na gut, ich werde mir eine Lösung überlegen.

Wie immer > Vielen Dank deine Hilfe! :slight_smile:

Grüße,
Chris

Bitte immer gerne wieder :smiley:

Bei den Squeezeboxen habe ich das mit einem externen Script gelößt, wo der User die Tabelle selbst ändern kann. Ähnlich wie bei der Anrufliste der Fritzbox.

Pro: Mehr Freiheiten für den User.
Contra: Aussehen steht nicht in den Settings, sondern in eben diesem Script.

Michael

User brauchen keine Freiheiten :smiley: :wink: :stuck_out_tongue:

Das Problem tritt ja nur auf, wenn man 2 Fußball-Tabellen im WebFront auf EINER Seite hat. Steckt man die Tabellen in unterschiedliche Tabs, dann kann man auch unterschiedliche Farben usw. verwenden. Von daher lasse ich das Problem erstmal auf meiner 2do mit einem Vermerk auf deinen Post hier :slight_smile:

Grüße,
Chris

Hi Chris,

erstmal tolles Modul und Danke für die Umsetzung Schriftfarbwahl und -größe.
Leider funktioniert das so nicht wirklich praxisnah.

Ich habe eine Seite mit 3 SplitPane. Nebeneinander werden damit die 3 Tabellen (1./ 2./ 3 Liga) angezeigt.
Kein Problem habe ich mit der Aussage, dass die Änderungen auf alle Tabellen wirken, wenn Sie auf einer Seite sind.

Aber ich muss immer wissen, welche Tabelle die letzte im HTML-Skript ist, denn nur die wirkt.

Nicht optimal, oder?

:rolleyes: :smiley:

SplitPane…da hab ich ja gar nicht dran gedacht :smiley: Na gut, ist ja ok, ich baue das CSS um, damit es für jede Tabelle individuell greift :slight_smile:

Auch wenn ich nicht verstehe, wie man in einer Ansicht (sei es nun auf einer Seite oder mit SplitPanes) verschiedene Darstellungen haben möchte…das sieht doch dann total „durcheinander“ und „wild“ aus?! Ich würde es persönlich nur einheitlich gestalten. Aber sowas ist halt Geschmackssache (und ich hab Geschmack :wink: :stuck_out_tongue: :D).

Aber wie gesagt, ich baue das heute oder spätestens am Wochenende um, dass man auch 100 Tabellen auf einer Seite haben kann und jede in einer anderen Farbe :smiley:

Grüße,
Chris

Lieber Frosch,

scheinbar ist es noch zu früh für Dich.
Ich möchte nicht verschiedene Einstellungen auf einer Seite.
Eine Einstellung für alle Tabellen auf der einen Seite reicht völlig.

Aber ist halt blöd, wenn ich erst testen muss, welche Tabelle ich ändern muss, damit die auf alle anderen Einfluss nimmt.
Jetzt klarer?

Aber wenn Du das auf CSS-Basis gebaut hast, verstehe ich überhaupt nicht, warum das passiert. Mach doch ein zentrales CSS für alle Deine Tabellen.
Die designaffinen Individualisten würde ich sowieso außen vor lassen. :smiley:

Achsoooooo :smiley: Na sag das doch gleich :stuck_out_tongue:

Aktuell ist das Verhalten so, wie Nall chan so schön erklärt hat, weil CSS pro Seite/Tab im Browser gilt. Und da meine CSS Zuweisungen für die Tabellen-Zeilen in allen Modulen die gleichen Namen haben, kommt es zu diesem Verhalten :rolleyes: Vermutlich greift immer die CSS Einstellung der entweder zuerst geladenen HTML-Tabelle oder wenn man auf der Seite ist, dann von der zuletzt aktualisierten HTML-Tabelle.
Deswegen gehen jetzt schon verschiedene Ligen, aber nicht verschiedene Farben.

Aber ich mache es gleich richtig und mache die Einstellung, wie es sich gehört, individuell für jede Tabelle :cool: Denke ich werde die Variante mit dem anhängen der InstanzID verwenden, sollte man einfachsten sein.

Grüße,
Chris

Deine Zeit möchte ich haben. :smiley:

Freue mich auf die Tests.
Dabei schaue ich ganz selten Fußball. :smiley:

Soooo, Änderung ist online :slight_smile: Hab dabei auch mal die Linien in den Tabellen entfernt. Sieht so schöner aus, finde ich.
> Jetzt kann man mehrere Tabellen in einer Ansicht im WebFront haben und jede farblich individuell gestalten :slight_smile:

Oder hat es meinem Boui vorher besser gefallen und er möchte die Linien zurück oder „schaltbar“ haben? :smiley: :wink:

Edit: Und ich habe jetzt mal nur 000000 und FFFFFF beachtet beim „Hintergrundfarbenwechsel“. Wenn jetzt noch jemand an kommt mit verschiedenen Schwarz-/Weiß-Nuancen, dann ist was los :smiley: :smiley:

INFO > Die Schriftgröße kann nur verändert werden, wenn farbliche Darstellung aktiv ist! Läuft mit über die CSS Geschichte.

Grüße,
Chris

Du kannst auch einfach FFF oder 000 schreiben, reicht. Dein Boui testet das nachher. Melde mich.

Gefällt mir sehr gut lieber Chris.

Vielen Dank für die gute Arbeit.

Juhu! Damit habe ich alles im Leben erreicht was ich wollte und kann sterben :smiley: :cool:

Spaß beiseite, freut mich, dass es dir so gefällt :slight_smile:

Viel Spaß damit und freu dich schon auf das nächste Modul :wink:

Grüße,
Chris

Hi Chris,

ich bekomme sporadisch folgenden Fehler:

IPS-Err-PHP  2015-12-22 06:26:09.220  Warning: DOMDocument::loadHTML(): Empty string supplied as input
   Error in Script C:\IP-Symcon\scripts\22192.ips.php on Line 106
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
      in IPSLogger_PhpErrorHandler
  106 in scripts\22192.ips.php (call loadHTML)
   17 in scripts\22192.ips.php (call BundesligaTabelleAuslesenInArray)
 
Nachricht gesendet von IPS_Logger

Hier ist dann die Tabelle m.E. auch leer. Kann ich hier etwas tun?

ciao
herbertf

Moin!

Danke für die Meldung! Ich hab mal mehr „Fehler-Abfragen“ eingebaut, falls die Seite keine/falsche Daten liefert. Bitte berichten, ob das Problem damit behoben ist!

Grüße,
Chris

Hi Chris,
Problem ist aktuell noch da, Aktualisierungen sind für die Module nicht vorhanden. Problem tritt ca. 5-12 mal pro Tag auf.

ciao
herbertf

Moin!

Welche Liga hast du ausgewählt und welchen Intervall? Dann setze ich bei mir mal die identischen Einstellungen dann kann sehe ich hoffentlich was da los ist. Weil „Empty string“ fange ich eigentlich ab :confused:

EDIT: Hab das Skript grad 50x ausgeführt und kein einziges Mal ein Fehler… Versteh ich nicht…

Grüße,
Chris

Hab gleich beim ersten Versuch einen Fehler - ist denn das Sktipt richtig?

 <?
/*********** Bundesliga Tabelle **************/
/*   Script v1.0 by Bayaro
/*
/*  Skript 1x ausführen und Variable + Timer werden automatisch erstellt.
/*  Die HTMLBox Variable dann einfach in euer WebFront verlinken.
/*  https://www.symcon.de/forum/threads/28708-Fu%C3%9Fball-Bundesliga-Tabelle-%28Daten-in-Array-und-HTMLBox%29
/*
/*** KONFIGURATION *************************************************************/
$TabelleMitFarben = true;       // true = Tabelle in HTMLBox mit Farben, false = Tabelle in HTMLBox ohne Farben
$AktualisierungsIntervall = 90; // Tabelle wird alle 90 Minuten aktualisiert
$BLtabSportde_URL = "http://fussballdaten.sport.de/?Tabelle";
/*******************************************************************************/



$BundesligaTabelleAR = BundesligaTabelleAuslesenInArray();
// In der Variable "$BundesligaTabelleAR" stehen jetzt alle notwendigen Infos. Diese
// könnt ihr auch einzeln auswerten oder in Variablen schreiben lassen oder was auch
// immer ihr wollt, damit anstellen  ;-)   Eintrag [0] = Tabellenplatz 1, ...
// Oder ihr lasst den Rest vom Skript einfach weiterlaufen, dann wird die Tabelle
// in eine String-HTMLBox Variable ausgegeben und kann direkt im WebFront eingebunden
// werden.
//print_r($BundesligaTabelleAR);



// HTML CSS Style definieren (Tabelle, Schrift, Farben, ...)
if ($TabelleMitFarben == false) {
$HTML_CSS_Style = '';
}
else {
$HTML_CSS_Style = '<style type="text/css">
.bt {border-collapse;border-spacing:0;}
.bt td {font-family:Arial, sans-serif;font-size:14px;padding:1px 10px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.bt th {font-family:Arial, sans-serif;font-size:14px;font-weigth:normal;padding:1px 10px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.bt .tb-title{font-size:12px;background-color:#000000;color:#FFFFFF;text-align:center}
.bt .tb-cl{font-size:12px;background-color:#32CB00;color:#FFFFFF;text-align:center}
.bt .tb-clqual{font-size:12px;background-color:#009901;color:#FFFFFF;text-align:center}
.bt .tb-eurol{font-size:12px;background-color:#3166FF;color:#FFFFFF;text-align:center}
.bt .tb-normal{font-size:12px;background-color:#FFFFFF;color:#000000;text-align:center}
.bt .tb-abstgrel{font-size:12px;background-color:#FD6864;color:#FFFFFF;text-align:center}
.bt .tb-abstg{font-size:12px;background-color:#FE0000;color:#FFFFFF;text-align:center}
</style>';
}


// HTML Ausgabe generieren
$TitelAR = array("Platz","Verein","Spiele","S","U","N","TV","TDiff","Punkte");  // Hier könnt ihr die Überschriften der Spalten ändern
$HTML = '<html>'.$HTML_CSS_Style;
$HTML .= '<table class="bt">';
$HTML .= '<tr><th class="tb-title">'.$TitelAR[0].'</th><th class="tb-title" colspan="2">'.$TitelAR[1].'</th><th class="tb-title">'.$TitelAR[2].'</th><th class="tb-title">'.$TitelAR[3].'</th><th class="tb-title">'.$TitelAR[4].'</th><th class="tb-title">'.$TitelAR[5].'</th><th class="tb-title">'.$TitelAR[6].'</th><th class="tb-title">'.$TitelAR[7].'</th><th class="tb-title">'.$TitelAR[8].'</th></tr>';
for ($h=0; $h<count($BundesligaTabelleAR["Platz"]); $h++) {
    if (($h == 0) OR ($h == 1) OR ($h == 2)) {
       $HTML .= '<tr><th class="tb-cl">'.$BundesligaTabelleAR["Platz"][$h].'</th><th class="tb-cl"><img src="'.$BundesligaTabelleAR["VereinLogo"][$h].'"></img></th><th class="tb-cl">'.$BundesligaTabelleAR["VereinName"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Spiele"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Siege"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Unentschieden"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Niederlagen"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Torverhaeltnis"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["TorDifferenz"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Punkte"][$h].'</th></tr>';
    }
    elseif ($h == 3) {
       $HTML .= '<tr><th class="tb-clqual">'.$BundesligaTabelleAR["Platz"][$h].'</th><th class="tb-clqual"><img src="'.$BundesligaTabelleAR["VereinLogo"][$h].'"></img></th><th class="tb-clqual">'.$BundesligaTabelleAR["VereinName"][$h].'</th><th class="tb-clqual">'.$BundesligaTabelleAR["Spiele"][$h].'</th><th class="tb-clqual">'.$BundesligaTabelleAR["Siege"][$h].'</th><th class="tb-clqual">'.$BundesligaTabelleAR["Unentschieden"][$h].'</th><th class="tb-clqual">'.$BundesligaTabelleAR["Niederlagen"][$h].'</th><th class="tb-clqual">'.$BundesligaTabelleAR["Torverhaeltnis"][$h].'</th><th class="tb-clqual">'.$BundesligaTabelleAR["TorDifferenz"][$h].'</th><th class="tb-clqual">'.$BundesligaTabelleAR["Punkte"][$h].'</th></tr>';
    }
    elseif (($h == 4) OR ($h == 5)) {
       $HTML .= '<tr><th class="tb-eurol">'.$BundesligaTabelleAR["Platz"][$h].'</th><th class="tb-eurol"><img src="'.$BundesligaTabelleAR["VereinLogo"][$h].'"></img></th><th class="tb-eurol">'.$BundesligaTabelleAR["VereinName"][$h].'</th><th class="tb-eurol">'.$BundesligaTabelleAR["Spiele"][$h].'</th><th class="tb-eurol">'.$BundesligaTabelleAR["Siege"][$h].'</th><th class="tb-eurol">'.$BundesligaTabelleAR["Unentschieden"][$h].'</th><th class="tb-eurol">'.$BundesligaTabelleAR["Niederlagen"][$h].'</th><th class="tb-eurol">'.$BundesligaTabelleAR["Torverhaeltnis"][$h].'</th><th class="tb-eurol">'.$BundesligaTabelleAR["TorDifferenz"][$h].'</th><th class="tb-eurol">'.$BundesligaTabelleAR["Punkte"][$h].'</th></tr>';
    }
    elseif (($h >= 6) AND ($h <= 14)) {
       $HTML .= '<tr><th class="tb-normal">'.$BundesligaTabelleAR["Platz"][$h].'</th><th class="tb-normal"><img src="'.$BundesligaTabelleAR["VereinLogo"][$h].'"></img></th><th class="tb-normal">'.$BundesligaTabelleAR["VereinName"][$h].'</th><th class="tb-normal">'.$BundesligaTabelleAR["Spiele"][$h].'</th><th class="tb-normal">'.$BundesligaTabelleAR["Siege"][$h].'</th><th class="tb-normal">'.$BundesligaTabelleAR["Unentschieden"][$h].'</th><th class="tb-normal">'.$BundesligaTabelleAR["Niederlagen"][$h].'</th><th class="tb-normal">'.$BundesligaTabelleAR["Torverhaeltnis"][$h].'</th><th class="tb-normal">'.$BundesligaTabelleAR["TorDifferenz"][$h].'</th><th class="tb-normal">'.$BundesligaTabelleAR["Punkte"][$h].'</th></tr>';
    }
    elseif ($h == 15) {
       $HTML .= '<tr><th class="tb-abstgrel">'.$BundesligaTabelleAR["Platz"][$h].'</th><th class="tb-abstgrel"><img src="'.$BundesligaTabelleAR["VereinLogo"][$h].'"></img></th><th class="tb-abstgrel">'.$BundesligaTabelleAR["VereinName"][$h].'</th><th class="tb-abstgrel">'.$BundesligaTabelleAR["Spiele"][$h].'</th><th class="tb-abstgrel">'.$BundesligaTabelleAR["Siege"][$h].'</th><th class="tb-abstgrel">'.$BundesligaTabelleAR["Unentschieden"][$h].'</th><th class="tb-abstgrel">'.$BundesligaTabelleAR["Niederlagen"][$h].'</th><th class="tb-abstgrel">'.$BundesligaTabelleAR["Torverhaeltnis"][$h].'</th><th class="tb-abstgrel">'.$BundesligaTabelleAR["TorDifferenz"][$h].'</th><th class="tb-abstgrel">'.$BundesligaTabelleAR["Punkte"][$h].'</th></tr>';
    }
    elseif (($h == 16) OR ($h == 17)) {
       $HTML .= '<tr><th class="tb-abstg">'.$BundesligaTabelleAR["Platz"][$h].'</th><th class="tb-abstg"><img src="'.$BundesligaTabelleAR["VereinLogo"][$h].'"></img></th><th class="tb-abstg">'.$BundesligaTabelleAR["VereinName"][$h].'</th><th class="tb-abstg">'.$BundesligaTabelleAR["Spiele"][$h].'</th><th class="tb-abstg">'.$BundesligaTabelleAR["Siege"][$h].'</th><th class="tb-abstg">'.$BundesligaTabelleAR["Unentschieden"][$h].'</th><th class="tb-abstg">'.$BundesligaTabelleAR["Niederlagen"][$h].'</th><th class="tb-abstg">'.$BundesligaTabelleAR["Torverhaeltnis"][$h].'</th><th class="tb-abstg">'.$BundesligaTabelleAR["TorDifferenz"][$h].'</th><th class="tb-abstg">'.$BundesligaTabelleAR["Punkte"][$h].'</th></tr>';
    }
}
$HTML .= '</table></html>';


// Variable erstellen, falls nicht vorhanden, und den Inhalt setzen
$HTMLBox_VarID = CreateVariableByName($_IPS['SELF'], "Bundesliga-Tabelle HTMLBox", 3, "~HTMLBox", "");
SetValue($HTMLBox_VarID, $HTML);


// Timer setzen
IPS_SetScriptTimer($_IPS['SELF'], $AktualisierungsIntervall * 60);



function BundesligaTabelleAuslesenInArray() {
    Global $BLtabSportde_URL;
    $curl = curl_init($BLtabSportde_URL);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    $page = curl_exec($curl);


    if(curl_errno($curl)) // Error-Check
    {
        echo 'Error: ' . curl_error($curl);
        exit;
    }
    curl_close($curl);

    $DOM = new DOMDocument;


    libxml_use_internal_errors(true);

    if (!$DOM->loadHTML($page))
        {
            $errors="";
            foreach (libxml_get_errors() as $error)  {
                $errors.=$error->message."<br/>";
            }
            libxml_clear_errors();
            print "libxml errors:<br>$errors";
            return;
        }
    $xpath = new DOMXPath($DOM);


    // Platzierung 1-16
    $content = $xpath->query('.//*[@class="Platz"]');
    $i = 0;
    foreach ($content as $entry01) {
        if ($i != 0) {
           $BundesligaTabelleAR["Platz"][] = $entry01->nodeValue;
       }
       $i++;
    }

    // Platzierung 17-18
    $content = $xpath->query('.//*[@class="Platz absteiger"]');
    foreach ($content as $entry01) {
        $BundesligaTabelleAR["Platz"][] = $entry01->nodeValue;
    }

    // Verein-Logo URL
    $content = $xpath->query('.//*[@class="Logo"]/img/@src');
    foreach ($content as $entry01) {
        $BundesligaTabelleAR["VereinLogo"][] = "http://fussballdaten.sport.de".$entry01->nodeValue;
    }

    // Verein-Name
    $content = $xpath->query('.//*[@class="Verein"]/a');
    foreach ($content as $entry01) {
        $BundesligaTabelleAR["VereinName"][] = utf8_decode($entry01->nodeValue);
    }

    // Anzahl Spiele
    $content = $xpath->query('.//*[@class="Spiele"]');
    $i = 0;
    foreach ($content as $entry01) {
       if (($i != 0) AND ($i != 1)) {
            $BundesligaTabelleAR["Spiele"][] = utf8_decode($entry01->nodeValue);
        }
        $i++;
    }

    // Anzahl Siege
    $content = $xpath->query('.//*[@class="S"]');
    $i = 0;
    foreach ($content as $entry01) {
       if ($i != 0) {
            $BundesligaTabelleAR["Siege"][] = utf8_decode($entry01->nodeValue);
        }
        $i++;
    }

    // Anzahl Unentschieden
    $content = $xpath->query('.//*[@class="U"]');
    $i = 0;
    foreach ($content as $entry01) {
       if ($i != 0) {
            $BundesligaTabelleAR["Unentschieden"][] = utf8_decode($entry01->nodeValue);
        }
        $i++;
    }

    // Anzahl Niederlagen
    $content = $xpath->query('.//*[@class="N"]');
    $i = 0;
    foreach ($content as $entry01) {
       if ($i != 0) {
            $BundesligaTabelleAR["Niederlagen"][] = utf8_decode($entry01->nodeValue);
        }
        $i++;
    }

    // Torverhältnis
    $content = $xpath->query('.//*[@class="Torverhaeltnis"]');
    $i = 0;
    foreach ($content as $entry01) {
       if ($i != 0) {
            $BundesligaTabelleAR["Torverhaeltnis"][] = utf8_decode($entry01->nodeValue);
        }
        $i++;
    }

    // Tor-Differenz
    $content = $xpath->query('.//*[@class="Diff"]');
    $i = 0;
    foreach ($content as $entry01) {
       if ($i != 0) {
            $BundesligaTabelleAR["TorDifferenz"][] = utf8_decode($entry01->nodeValue);
        }
        $i++;
    }

    // Punkte
    $content = $xpath->query('.//*[@class="Punkte"]');
    $i = 0;
    foreach ($content as $entry01) {
       if ($i != 0) {
            $BundesligaTabelleAR["Punkte"][] = utf8_decode($entry01->nodeValue);
        }
        $i++;
    }
    return $BundesligaTabelleAR;
}




function CreateVariableByName($ParentID, $VarName, $VarTyp, $VarProfile = "", $VarActionScript = "") {
    $VarID = @IPS_GetVariableIDByName($VarName, $ParentID);
   if($VarID === false) {
        $VarID = IPS_CreateVariable($VarTyp);
      IPS_SetParent($VarID, $ParentID);
      IPS_SetName($VarID, $VarName);
      IPS_SetInfo($VarID, "This variable was created by script #".$_IPS["SELF"]);
      if($VarProfile !== "") {
            IPS_SetVariableCustomProfile($VarID, $VarProfile);
        }
        if($VarActionScript !== "") {
            IPS_SetVariableCustomAction($VarID, $VarActionScript);
        }
    }
   return $VarID;
}
?>

:rolleyes: Ochs :smiley: :stuck_out_tongue: Es geht hier in diesem Thread um das MODUL und nicht um das SKRIPT :rolleyes: :smiley:

Das Skript was du da hast ist URALT und die Seite so nicht mehr verfügbar die abgefragt wird :rolleyes:

Zum richtigen SKRIPT und dem passenden Thread geht es hier: Fußball Bundesliga - Tabelle (Daten in Array und HTMLBox) - www.dfb.de

Und hier der Thread zum MODUL:
MODUL

-Chris-