add_color('#FF8080','#99CCFF','#00FF00','#FF9900','#800080'); } } /** * Add an event to be processed * @param string name of the event * @param integer the week to start this event * @param integer duration * @return bool whether or not the event was added successfully **/ public function add_event($event, $start, $duration) { // return false if we do not have valid data if(!is_int($start)) return false; if(!is_int($duration)) return false; // add the event $this->events[] = (object)array( 'event' => $event, 'start' => $start, 'duration' => $duration, ); // reset the HTML so it is re-rendered next attempt $this->html = ''; return true; } /** * Create an HTML Gantt chart from the current events * @return string html for our gantt chart **/ public function render_html() { // if we have previously rendered this gantt and have not added // new events, we don't need to do it again and can returned the // cached html if($this->html != '') { return $this->html; } //require that there is at least one color set. if(count($this->colors) == 0) { return 'Error! At least one colors must be set: add_colors("#000")'; } $columns = $this->find_last(); // probably should template this html sometime. $this->html = '
Task | ' . "\n"; $this->html .= 'Weeks | ' . "\n"; for($i = 1; $i <= $columns; $i++) { $this->html .= '' . $i . ' | ' . "\n"; } $this->html .= '
---|---|---|
' . $event->event . ' | ' . "\n"; $this->html .= '' . $event->duration . ' | ' . "\n"; for($i = 1; $i <= $columns; $i++) { if($i >= $event->start && $i < ($event->start + $event->duration)) { $style = ' style="background-color:' . $color . '"'; $class = ' colored'; } else { $style = ''; $class = ' blank'; } $this->html .= '' . "\n"; } $this->html .= ' |