value = $value; return $this; } public function setMax($max) { $this->max = $max; return $this; } public function setNumGlyphs($nn) { $this->numGlyphs = $nn; return $this; } public function setGlyph(PhutilSafeHTML $fg_glyph) { $this->fgGlyph = $fg_glyph; return $this; } public function setBackgroundGlyph(PhutilSafeHTML $bg_glyph) { $this->bgGlyph = $bg_glyph; return $this; } protected function getRatio() { return min($this->value, $this->max) / $this->max; } public function render() { require_celerity_resource('aphront-bars'); $ratio = $this->getRatio(); $percentage = 100 * $ratio; $is_star = false; if ($this->fgGlyph) { $fg_glyph = $this->fgGlyph; if ($this->bgGlyph) { $bg_glyph = $this->bgGlyph; } else { $bg_glyph = $fg_glyph; } } else { $is_star = true; $fg_glyph = self::BLACK_STAR; $bg_glyph = self::WHITE_STAR; } $fg_glyphs = array_fill(0, $this->numGlyphs, $fg_glyph); $bg_glyphs = array_fill(0, $this->numGlyphs, $bg_glyph); $color = $this->getColor(); return phutil_tag( 'div', array( 'class' => "aphront-bar glyph color-{$color}", ), array( phutil_tag( 'div', array( 'class' => 'glyphs'.($is_star ? ' starstar' : ''), ), array( phutil_tag( 'div', array( 'class' => 'fg', 'style' => "width: {$percentage}%;", ), $fg_glyphs), phutil_tag( 'div', array(), $bg_glyphs), )), phutil_tag( 'div', array('class' => 'caption'), $this->getCaption()), )); } }