예제 #1
0
 /**
  * @param $criteriaAnalyze
  * @param $decision_id
  * @param bool $revert
  * @param array $response
  * @return sfView
  */
 private function getUpdateActionResponse($criteriaAnalyze, $decision_id, $revert = false, $response = array())
 {
     $logicalFilter = new LogicalFilterView();
     $logicalFilter->setDecisionId($decision_id);
     $logicalFilter->load();
     $roleFilter = new RoleFilterView();
     $roleFilter->setDecisionId($decision_id);
     $roleFilter->load();
     $statusFilter = new StatusFilterView();
     $statusFilter->setDecisionId($decision_id);
     $statusFilter->load();
     $tagFilter = new TagFilterView();
     $tagFilter->setDecisionId($decision_id);
     $tagFilter->load();
     // When user changes the weights of criteria all dependent values
     // should be recalculated automatically in the alternatives chart
     $stackedBarChart = new StackedBarChart();
     $stackedBarChart->setDecisionId($decision_id);
     $stackedBarChart->setCriteriaValues($criteriaAnalyze->getCriteriaValues());
     $stackedBarChart->setRoleFilterData($roleFilter->getData());
     $stackedBarChart->setStatusFilterData($statusFilter->getData());
     $stackedBarChart->setTagFilterData($tagFilter->getDataForSQL());
     $stackedBarChart->setFilteredAlternativesIds($logicalFilter->getFilteredAlternativesIds());
     $stackedBarChart->load();
     $radarChart = new RadarChart();
     $radarChart->setData($stackedBarChart->getData());
     $radarChart->setAlternativeNames($stackedBarChart->getAlternativesNames());
     $radarChart->setCriteriaNames($stackedBarChart->getCriteriaNames());
     $radarChart->prepareData();
     $pointChart = new PointChart();
     $pointChart->setDecisionId($decision_id);
     $pointChart->setCriteriaValues($criteriaAnalyze->getCriteriaValues());
     $pointChart->setRoleFilterData($roleFilter->getData());
     $pointChart->setStatusFilterData($statusFilter->getData());
     $pointChart->setTagFilterData($tagFilter->getDataForSQL());
     $pointChart->setFilteredAlternativesIds($logicalFilter->getFilteredAlternativesIds());
     $pointChart->load();
     $pointChart->setTotalBenefit($stackedBarChart->getTotalBenefit());
     $bubbleChart = new BubbleChart();
     $bubbleChart->setDecisionId($decision_id);
     $bubbleChart->setCriteriaValues($criteriaAnalyze->getCriteriaValues());
     $bubbleChart->setRoleFilterData($roleFilter->getData());
     $bubbleChart->setStatusFilterData($statusFilter->getData());
     $bubbleChart->setTagFilterData($tagFilter->getDataForSQL());
     $bubbleChart->setFilteredAlternativesIds($logicalFilter->getFilteredAlternativesIds());
     $bubbleChart->setTotalBenefit($stackedBarChart->getTotalBenefit());
     $bubbleChart->load();
     $costAnalyze = new CostAnalyze();
     $costAnalyze->setDecisionId($decision_id);
     $costAnalyze->setSortedAlternativeIds($stackedBarChart->getSortedAlternativeIds());
     $costAnalyze->setFilteredAlternativesIds($logicalFilter->getFilteredAlternativesIds());
     $costAnalyze->setCumulativeData($stackedBarChart->getCumulativeData());
     $costAnalyze->load();
     $cumulativeChart = new CumulativeGainChart();
     $cumulativeChart->setDecisionId($decision_id);
     $cumulativeChart->setSortedAlternativeIds($stackedBarChart->getSortedAlternativeIds());
     $cumulativeChart->setMeasurement($stackedBarChart->getCumulativeData());
     $cumulativeChart->setCostData($costAnalyze->getData());
     $cumulativeChart->setAlternativeNames($costAnalyze->getAlternativeNames());
     $cumulativeChart->setCriterionNames($costAnalyze->getCriteria());
     $cumulativeChart->load();
     $this->getResponse()->setHttpHeader('Content-Type', 'application/json; charset=utf-8');
     $stacked_bar_chart[] = '"data":' . $stackedBarChart->getJsonData();
     $stacked_bar_chart[] = '"alternatives":' . $stackedBarChart->getAlternativesJson();
     $stacked_bar_chart[] = '"criteria":' . $stackedBarChart->getCriteriaJson();
     if ($revert) {
         $response[] = '"criteriaData":' . $criteriaAnalyze->getJsonData();
     }
     $point_chart[] = '"data":' . $pointChart->getJsonData();
     $point_chart[] = '"criteria":' . json_encode($pointChart->getCriteriaNames());
     $bubble_chart[] = '"data":' . $bubbleChart->getJsonData();
     $bubble_chart[] = '"criteria":' . json_encode($pointChart->getCriteriaNames());
     $response[] = '"stackedBarChart":{' . implode(',', $stacked_bar_chart) . '}';
     $response[] = '"pointChart":{' . implode(',', $point_chart) . '}';
     $response[] = '"bubbleChart":{' . implode(',', $bubble_chart) . '}';
     $cumulative_chart[] = '"costData":' . $cumulativeChart->getJsonCostData();
     $cumulative_chart[] = '"benefitData":' . $cumulativeChart->getJsonData();
     $cumulative_chart[] = '"criteria":' . json_encode($costAnalyze->getCriteria());
     $cumulative_chart[] = '"alternatives":' . $cumulativeChart->getAlternativesJson();
     $response[] = '"cumulativeChart":{' . implode(',', $cumulative_chart) . '}';
     $cost_analyze[] = '"alternatives":' . $costAnalyze->getAlternativesJson();
     $cost_analyze[] = '"order":' . $costAnalyze->getAlternativeOrderJson();
     $cost_analyze[] = '"data":' . $costAnalyze->getJsonData();
     $cost_analyze[] = '"bScoreData":' . $costAnalyze->getCumulativeJsonData();
     $response[] = '"radarChart":' . $radarChart->getJsonData();
     $response[] = '"costOrder":{' . implode(',', $cost_analyze) . '}';
     return $this->renderText('{' . implode(',', $response) . '}');
 }
예제 #2
0
 /**
  * @param sfWebRequest $request
  * @return sfView
  */
 public function executeSave(sfWebRequest $request)
 {
     $this->forward404Unless($request->isXmlHttpRequest());
     $measurement = $request->getParameter('measurement');
     $decision_id = $request->getParameter('decision_id');
     $user = $this->getUser()->getGuardUser();
     $keys = array_keys($measurement);
     $alternative_id = array_shift($keys);
     $keys = array_keys($measurement[$alternative_id]);
     $criterion_id = array_shift($keys);
     $value = $measurement[$alternative_id][$criterion_id];
     $alternativeMeasurement = AlternativeMeasurementTable::getInstance()->getOneForDashboard($user, $decision_id, $alternative_id, $criterion_id);
     if (is_object($alternativeMeasurement)) {
         $alternativeMeasurement->score = $value;
         $alternativeMeasurement->save();
     } else {
         $response = ResponseTable::getInstance()->getOneForDashboard($user, $decision_id);
         if (is_object($response)) {
             $alternativeMeasurement = new AlternativeMeasurement();
             $alternativeMeasurement->score = $value;
             $alternativeMeasurement->alternative_head_id = $alternative_id;
             $alternativeMeasurement->criterion_id = $criterion_id;
             $alternativeMeasurement->Response = $response;
             $alternativeMeasurement->save();
         }
     }
     Doctrine_Query::create()->delete()->from('Graph')->where('decision_id = ?', $decision_id)->execute();
     $criteriaAnalyze = new CriteriaAnalyze();
     $criteriaAnalyze->setDecisionId($decision_id);
     $criteriaAnalyze->load();
     $stackedBarChart = new StackedBarChart();
     $stackedBarChart->setDecisionId($decision_id);
     $stackedBarChart->setCriteriaValues($criteriaAnalyze->getCriteriaValues());
     $stackedBarChart->load();
     $costAnalyze = new CostAnalyze();
     $costAnalyze->setDecisionId($decision_id);
     $costAnalyze->setSortedAlternativeIds($stackedBarChart->getSortedAlternativeIds());
     $costAnalyze->setCumulativeData($stackedBarChart->getCumulativeData());
     $costAnalyze->load();
     $cumulativeChart = new CumulativeGainChart();
     $cumulativeChart->setDecisionId($decision_id);
     $cumulativeChart->setSortedAlternativeIds($stackedBarChart->getSortedAlternativeIds());
     $cumulativeChart->setMeasurement($stackedBarChart->getCumulativeData());
     $cumulativeChart->setCostData($costAnalyze->getData());
     $cumulativeChart->setAlternativeNames($costAnalyze->getAlternativeNames());
     $cumulativeChart->setCriterionNames($costAnalyze->getCriteria());
     $cumulativeChart->load();
     $stacked_bar_chart[] = '"data":' . $stackedBarChart->getJsonData();
     $stacked_bar_chart[] = '"alternatives":' . $stackedBarChart->getAlternativesJson();
     $stacked_bar_chart[] = '"criteria":' . $stackedBarChart->getCriteriaJson();
     $cumulative_chart[] = '"costData":' . $cumulativeChart->getJsonCostData();
     $cumulative_chart[] = '"benefitData":' . $cumulativeChart->getJsonData();
     $cumulative_chart[] = '"criteria":' . json_encode($costAnalyze->getCriteria());
     $cumulative_chart[] = '"alternatives":' . $cumulativeChart->getAlternativesJson();
     $response = array();
     $response[] = '"cumulativeChart":{' . implode(',', $cumulative_chart) . '}';
     $response[] = '"stackedBarChart":{' . implode(',', $stacked_bar_chart) . '}';
     $this->getResponse()->setHttpHeader('Content-Type', 'application/json; charset=utf-8');
     return $this->renderText('{' . implode(',', $response) . '}');
 }