viewArray = $viewArray; $this->clusterCount = $this->viewArray["cn"]; $this->peerCount = $this->viewArray["pn"]; $this->viewId = $viewId; $this->createClusterList(); $this->calcPeerClusterRatio(); } private function createClusterList() { $clusterArray = $this->viewArray["clusters"]; $this->clusterList = array(); foreach ($clusterArray as $key => $value) { $cluster = new Cluster($value, $key); array_push($this->clusterList, $cluster); } } private function clusterListToHTML() { $result = ""; foreach ($this->clusterList as $value) { $result .= ""; } return $result . "
"; $result .= $value->toHTML(); $result .= "
"; } private function calcPeerClusterRatio() { $this->peerClusterRatioRef = round($this->peerCount / $this->clusterCount, 5); $variance = 0.0; $medianArray = array(); foreach ($this->clusterList as $value) { $value->calcPeerClusterRatioNorm($this->peerClusterRatioRef); $variance += pow($value->clusterSize - $this->peerClusterRatioRef, 2); array_push($medianArray, $value->clusterSize); } $variance /= $this->peerCount; $this->peerClusterRatioNormVar = round($variance, 5); $this->peerClusterRatioNormStDev = round(sqrt($variance), 5); asort($medianArray); $medianArraySize = count($medianArray); $medianMidIndex = round(($medianArraySize - 1) / 2, 0, PHP_ROUND_HALF_DOWN); if ($medianArraySize % 2 == 0) { $this->peerClusterRatioNormMed = ($medianArray[$medianMidIndex] + $medianArray[$medianMidIndex + 1]) / 2; } else { $this->peerClusterRatioNormMed = $medianArray[$medianMidIndex]; } } public function toHTML() { $table = ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= ""; $table .= "
ViewId:$this->viewId
ClusterCount:$this->clusterCountPeerCount:$this->peerCount
PeerClusterRatioRef:$this->peerClusterRatioRef PeerClusterRatioNormVar:$this->peerClusterRatioNormVarPeerClusterRatioNormStDev:$this->peerClusterRatioNormStDevPeerClusterRatioNormMed:$this->peerClusterRatioNormMed
ClusterListe: "; $table .= $this->clusterListToHTML(); $table .= "
"; $table .= $this->toSVG(); $table .= "
"; return $table; } public function toSVG() { $svg = ''; $svg .= $this->createClusterSVG(); //$svg .= ''; //$svg .= ''; //$svg .= ''; //$svg .= ''; $svg .= ''; return $svg; } public function createClusterSVG() { $midX = 160; $midY = 160; $svg = ""; foreach ($this->clusterList as $value) { $clSize = $value->clusterSize; $r = $clSize * 15; $strokebg = "gray"; if (strcmp($value->bgColor,"white") != 0) { $strokebg = $value->bgColor; } $svg .= ''; $svg .= $this->fillPoints($midX, $midY, $clSize, $r); $midX += 2.5 * $r; } return $svg; } public function fillPoints($midX, $midY, $count, $r) { $startX = $midX - $r; $endX = $midX + $r; $startY = $midY - $r; $endY = $midY + $r; $midXT = $startX + 15; $midYT = $midY; $svg = ""; for ($i = 0; $i < $count; $i++) { $svg .= ''; $midXT += 30; } return $svg; } } ?>