Exemplo n.º 1
0
 public function executeTimeline(sfWebRequest $request)
 {
     $this->roadmap = RoadmapTable::getInstance()->getRoadmapForUser($this->getUser()->getGuardUser(), $request->getParameter('id'));
     $this->forward404Unless(is_object($this->roadmap));
     $this->un_finished_decisions = array();
     $this->timeline_data = array('timeline' => array('headline' => $this->prepare_string_to_json($this->roadmap->getName()), 'type' => 'default', 'text' => $this->prepare_string_to_json($this->roadmap->getDescription()), 'date' => array()));
     $min_start_date = '';
     $max_end_date = '';
     $roadmap_decisions = RoadmapDecisionTable::getInstance()->createQuery('rd')->leftJoin('rd.Decision d')->leftJoin('d.Alternative a')->where('rd.roadmap_id = ?', $this->roadmap->getId())->orderBy('d.start_date ASC')->execute();
     foreach ($roadmap_decisions as $roadmap_decision) {
         /** @var $roadmap_decision RoadmapDecision */
         if ($roadmap_decision->getDecision()->getStartDate()) {
             $start_date = new DateTime($roadmap_decision->getDecision()->getStartDate());
             $end_date = $roadmap_decision->getDecision()->getEndDate() ? new DateTime($roadmap_decision->getDecision()->getEndDate()) : null;
             if (empty($min_start_date) || strtotime($min_start_date) > strtotime($roadmap_decision->getDecision()->getStartDate())) {
                 $min_start_date = $roadmap_decision->getDecision()->getStartDate();
             }
             if (empty($max_end_date) || $roadmap_decision->getDecision()->getEndDate() && strtotime($max_end_date) < strtotime($roadmap_decision->getDecision()->getEndDate())) {
                 $max_end_date = $roadmap_decision->getDecision()->getEndDate();
             }
             $releases = array();
             foreach ($roadmap_decision->getDecision()->getProjectRelease() as $project_release) {
                 /** @var $project_release ProjectRelease */
                 $releases[] = $project_release->getName() . ' - <a href="' . $this->getContext()->getRouting()->generate('planner', array('decision_id' => $roadmap_decision->getDecision()->getId())) . '">Edit</a>';
             }
             $tags = array();
             foreach ($roadmap_decision->getDecision()->getTagDecision() as $tag_decision) {
                 /** @var $tag_decision TagDecision */
                 $tags[] = '<span class="tag label label-info">' . $tag_decision->getTag()->getName() . '</span>';
             }
             $alternative_relations_text = '';
             $alternative_relations = array();
             $related_decisions = array();
             foreach ($roadmap_decision->getDecision()->getAlternative() as $alternative) {
                 /** @var $alternative Alternative */
                 if (count($alternative->getAlternativeRelation())) {
                     $alternative_relations[$alternative->getId()]['alternative'] = $alternative;
                     foreach ($alternative->getAlternativeRelation() as $relation) {
                         /** @var $relation AlternativeRelation */
                         $related_decisions[$relation->getAlternativeTo()->getDecisionId()] = $relation->getAlternativeTo()->getDecision()->getName();
                         $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['decision'] = $relation->getAlternativeTo()->getDecision();
                         $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['linked_alternatives'][] = $relation->getAlternativeTo();
                     }
                 }
             }
             $relation_text = array();
             if (count($alternative_relations)) {
                 foreach ($alternative_relations as $alternative_relation) {
                     foreach ($alternative_relation['relations'] as $relation) {
                         $temp_linked_alternatives = array();
                         foreach ($relation['linked_alternatives'] as $linked_alternative) {
                             $temp_linked_alternatives[] .= '<a href="javascript:void(0)" data-edit-url="' . $this->getContext()->getRouting()->generate('alternative\\edit', array('id' => $linked_alternative->getId())) . '" data-delete-url="' . $this->getContext()->getRouting()->generate('alternative\\delete', array('id' => $linked_alternative->getId())) . '" class="alternative_edit" data-toggle="popover" data-content="' . $this->getComponent("roadmap", "alternativePopupInfo", array('alternative' => $linked_alternative)) . '">' . $linked_alternative->getName() . '</a>';
                         }
                         $relation_text[] = '<li> - <a href="javascript:void(0)" data-edit-url="' . $this->getContext()->getRouting()->generate('alternative\\edit', array('id' => $alternative_relation['alternative']->getId())) . '" data-delete-url="' . $this->getContext()->getRouting()->generate('alternative\\delete', array('id' => $alternative_relation['alternative']->getId())) . '" class="alternative_edit" data-toggle="popover" data-content="' . $this->getComponent("roadmap", "alternativePopupInfo", array('alternative' => $alternative_relation['alternative'])) . '" >' . $alternative_relation['alternative']->getName() . "</a> has dependency to " . implode(', ', $temp_linked_alternatives) . " in project " . $relation['decision']->getName() . "</li>";
                     }
                 }
                 $alternative_relations_text = "<b>This project has dependency to project(s) " . implode(', ', $related_decisions) . '</b><ul>' . implode('', $relation_text);
             }
             // Delete link to itself
             if (array_key_exists($roadmap_decision->getDecision()->getId(), $related_decisions)) {
                 unset($related_decisions[$roadmap_decision->getDecision()->getId()]);
             }
             $this->timeline_data['timeline']['date'][] = array('startDate' => $start_date->format('Y,m,j'), 'endDate' => $end_date ? $end_date->format('Y,m,j') : '', 'labelText' => $this->prepare_string_to_json($roadmap_decision->getDecision()->getName()), 'headline' => $this->prepare_string_to_json($roadmap_decision->getDecision()->getName()) . ' <span style="font-size: 14px;">- <a href="javascript: void(0);" class="edit-decision" data-edit-url = "' . $this->getContext()->getRouting()->generate('decision\\edit', array('id' => $roadmap_decision->getDecision()->getId())) . '" data-delete-url = "' . $this->getContext()->getRouting()->generate('decision\\delete', array('id' => $roadmap_decision->getDecision()->getId())) . '">Edit</a></span>', 'text' => $this->prepare_string_to_json($roadmap_decision->getDecision()->getObjective() . '<div class="mr-top-15">' . implode(' ', $tags) . '</div>' . '<div class="mr-top-25 timeline-alternative-relations">' . $alternative_relations_text . '</div>'), 'labelColor' => $this->prepare_string_to_json($roadmap_decision->getDecision()->getColor() ? $roadmap_decision->getDecision()->getColor() : '#CCCCCC'), 'status' => $this->prepare_string_to_json($roadmap_decision->getDecision()->getStatus()), 'decisionId' => $roadmap_decision->getDecision()->getId(), 'linkedTo' => array_keys($related_decisions), 'asset' => array('media' => $this->prepare_string_to_json(count($releases) ? '<h2>Releases</h2><ul><li>' . implode('</li><li>', $releases) . '</li></ul>' : ' ')));
         } else {
             $this->un_finished_decisions[] = $roadmap_decision->getDecision();
         }
     }
     /*    if (count($this->timeline_data['timeline']['date']) <=6) {
           $i = 1;
           foreach ($this->timeline_data['timeline']['date'] as $key => $date) {
             $this->timeline_data['timeline']['date'][$key]['tag'] = $i++;
           }
         }*/
     if ($min_start_date && $max_end_date) {
         $this->timeline_data['timeline']['startDate'] = date('Y,m,j', strtotime($min_start_date) + (strtotime($max_end_date) - strtotime($min_start_date)) / 2);
     }
     $this->timeline_data = json_encode($this->timeline_data);
 }
Exemplo n.º 2
0
 private function prepareDataForTimelineView()
 {
     $timeline_data = array('timeline' => array('headline' => $this->roadmap->getName(), 'type' => 'default', 'text' => $this->roadmap->getDescription(), 'date' => array()));
     $min_start_date = '';
     $max_end_date = '';
     $roadmap_decisions = RoadmapDecisionTable::getInstance()->createQuery('rd')->leftJoin('rd.Decision d')->leftJoin('d.Alternative a')->where('rd.roadmap_id = ?', $this->roadmap->getId())->orderBy('d.start_date ASC')->execute();
     foreach ($roadmap_decisions as $roadmap_decision) {
         /** @var $roadmap_decision RoadmapDecision */
         if ($roadmap_decision->getDecision()->getStartDate()) {
             $start_date = new DateTime($roadmap_decision->getDecision()->getStartDate());
             $end_date = $roadmap_decision->getDecision()->getEndDate() ? new DateTime($roadmap_decision->getDecision()->getEndDate()) : null;
             if (empty($min_start_date) || strtotime($min_start_date) > strtotime($roadmap_decision->getDecision()->getStartDate())) {
                 $min_start_date = $roadmap_decision->getDecision()->getStartDate();
             }
             if (empty($max_end_date) || $roadmap_decision->getDecision()->getEndDate() && strtotime($max_end_date) < strtotime($roadmap_decision->getDecision()->getEndDate())) {
                 $max_end_date = $roadmap_decision->getDecision()->getEndDate();
             }
             $releases = array();
             foreach ($roadmap_decision->getDecision()->getProjectRelease() as $project_release) {
                 /** @var $project_release ProjectRelease */
                 $releases[] = $project_release->getName();
             }
             $tags = array();
             foreach ($roadmap_decision->getDecision()->getTagDecision() as $tag_decision) {
                 /** @var $tag_decision TagDecision */
                 $tags[] = '<span class="tag label label-info">' . $tag_decision->getTag()->getName() . '</span>';
             }
             $alternative_relations_text = '';
             $alternative_relations = array();
             $related_decisions = array();
             foreach ($roadmap_decision->getDecision()->getAlternative() as $alternative) {
                 /** @var $alternative Alternative */
                 if (count($alternative->getAlternativeRelation())) {
                     $alternative_relations[$alternative->getId()]['alternative'] = $alternative;
                     foreach ($alternative->getAlternativeRelation() as $relation) {
                         /** @var $relation AlternativeRelation */
                         $related_decisions[$relation->getAlternativeTo()->getDecisionId()] = $relation->getAlternativeTo()->getDecision()->getName();
                         $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['decision'] = $relation->getAlternativeTo()->getDecision();
                         $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['linked_alternatives'][] = $relation->getAlternativeTo();
                     }
                 }
             }
             $relation_text = array();
             if (count($alternative_relations)) {
                 foreach ($alternative_relations as $alternative_relation) {
                     foreach ($alternative_relation['relations'] as $relation) {
                         $temp_linked_alternatives = array();
                         foreach ($relation['linked_alternatives'] as $linked_alternative) {
                             $temp_linked_alternatives[] .= $linked_alternative->getName();
                         }
                         $relation_text[] = '<li> - ' . $alternative_relation['alternative']->getName() . " has dependency to " . implode(', ', $temp_linked_alternatives) . " in project " . $relation['decision']->getName() . "</li>";
                     }
                 }
                 $alternative_relations_text = "<b>This project has dependency to project(s) " . implode(', ', $related_decisions) . '</b><ul>' . implode('', $relation_text);
             }
             // Delete link to itself
             if (array_key_exists($roadmap_decision->getDecision()->getId(), $related_decisions)) {
                 unset($related_decisions[$roadmap_decision->getDecision()->getId()]);
             }
             $timeline_data['timeline']['date'][] = array('startDate' => $start_date->format('Y,m,j'), 'endDate' => $end_date ? $end_date->format('Y,m,j') : '', 'labelText' => $roadmap_decision->getDecision()->getName(), 'headline' => $roadmap_decision->getDecision()->getName(), 'text' => $roadmap_decision->getDecision()->getObjective() . '<div class="mr-top-15">' . implode(' ', $tags) . '</div>' . '<div class="mr-top-25 timeline-alternative-relations">' . $alternative_relations_text . '</div>', 'labelColor' => $roadmap_decision->getDecision()->getColor() ? $roadmap_decision->getDecision()->getColor() : '#CCCCCC', 'status' => $roadmap_decision->getDecision()->getStatus(), 'decisionId' => $roadmap_decision->getDecision()->getId(), 'linkedTo' => array_keys($related_decisions), 'asset' => array('media' => count($releases) ? '<h2>Releases</h2><ul><li>' . implode('</li><li>', $releases) . '</li></ul>' : ' '));
         }
     }
     if ($min_start_date && $max_end_date) {
         $timeline_data['timeline']['startDate'] = date('Y,m,j', strtotime($min_start_date) + (strtotime($max_end_date) - strtotime($min_start_date)) / 2);
     }
     $this->timeline_data = $timeline_data;
 }