Anzeigen von Webformular-Ergebnisdaten in einem Google Chart


11

Ich versuche, Webform-Ergebnisse als Google Charts anzuzeigen . Ich mache dies auf der Themenebene, indem ich theme_webform_results_analysis () in der template.php-Datei meines Themas überschreibe und das Diagrammmodul verwende . Drupal 6.22, Webform 6.x-3.11.

Die Webformular-Analyseseite zeigt normalerweise die Daten in einer Tabelle an, daher versuche ich, die Arrays für diese Tabelle zu hacken, um Inhalte an die Diagramm-API zu übergeben .

BEARBEITEN : Ich habe herausgefunden, wie man var_dump verwendet, und festgestellt, dass der bessere Ansatz darin besteht, in den Arrays $ row_data und $ question separat aufzustehen (anstatt das Array $ rows zu verwenden, das ich in der ersten Version dieser Frage hatte ein Mashup beider Arrays).

EDIT # 2 : Ich glaube, ich habe herausgefunden, wie man jedes Stück der ursprünglichen $ question- und $ row_data-Arrays erfasst (siehe unten - das foreach im anderen foreach). Jetzt muss ich diese Teile in die richtigen Arrays bringen (1 pro Frage) und einen Weg finden, all diese zu durchlaufen.

Folgendes habe ich in template.php:

/**
 * Output the content of the Analysis page.
 * @see webform_results_analysis()
 */
function mytheme_webform_results_analysis($node, $data, $sids = array(), $analysis_component = NULL) {

  foreach ($data as $cid => $row_data) {

    if (is_array($row_data)) {

      // get the questions, put them in an array
      $questions = array();
      $questions[] = array('data' => check_plain($node->webform['components'][$cid]['name']));

      // this will print everything out in the right order - it really needs to
      // make an array for each question that looks like $test_chart below
      foreach ($questions as $question) {
        print $question['data'] . '<br />'; // questions 
        foreach ($row_data as $key => $value) {
          print $value[0] . '<br />'; // labels
          print $value[1] . '<br />'; // results 
        }
      }

      // Set up the chart
      $chart = array(
        '#chart_id' => 'webform_analysis',
        '#type' => CHART_TYPE_PIE_3D,
        '#size' => chart_size(658, 250)
      );

      // not real data here, this just shows the format I'm shooting for
      $test_chart = array(
        'option 1' => '12',
        'option 2' => '45',
        'option 3' => '122'
      ); 

      // separate the above array into labels and values, add a percentage to the label
      foreach ($test_chart as $key => $value) {
        $chart['#data'][] = $test_chart[$key];
        $chart['#labels'][] = strip_tags($key) . ' (' . round($test_chart[$key], 2) .  '%)';
      }
      // pick some colors
      $chart['#data_colors'][] = 'b0c73d';
      $chart['#data_colors'][] = '667323';
      $chart['#data_colors'][] = '221f1f';

      $output = chart_render($chart);    
    }
  }

  if (count($row_data) == 0) {
    $output = t('There are no submissions for this form.');
  }

  // return the data that goes into chart function, just for testing
  // return $chart_data; 

  // someday, this might return a set of webform charts. right now it returns the fake test chart
  // return $output;
}

1
Hast du deine eigene Frage gelöst? Wenn ja, posten Sie Ihre eigene Antwort
iStryker

Nein, ich habe das noch nicht herausgefunden. Es wird vorerst angehalten, bis ich mit dem Lesen von "Beginn von PHP und MySQL5: Vom Anfänger zum Profi" ( Link ) fertig bin, und dann werde ich es noch einmal versuchen. Ich habe versucht, online Hilfe zu bekommen, und dachte mir, ich muss nur die Grundlagen besser in den Griff bekommen, bevor ich etwas so Kniffliges versuche.
Sarah German

Antworten:


2

Es gibt ein weiteres Drupal-Diagrammmodul, das Webformulare unterstützt: http://drupal.org/project/fusioncharts

Fusionchart hat ein kleines Untermodul namens fusioncharts_webform


Vielen Dank für Ihre Antwort! Ich habe mir FusionCharts angesehen, aber es passt nicht gut zu meinem Projekt, da es Flash verwendet und wir die kostenpflichtige Version benötigen würden - wir versuchen, uns an Open-Source-Lösungen zu halten. Aber es sieht gut aus, ich wette, das löst dieses Problem für viele Leute.
Sarah German

1

Mehr als 3 Jahre später, ich weiß, aber die Dinge haben sich seitdem ein bisschen weiterentwickelt ...

Nur um den Titel dieser Frage unter Berücksichtigung, so könnte man dies ansprechen wollen über die Charts in diesen Tagen Modul (obwohl die ursprüngliche Frage aus gestartet Diagramm , das ein weiteres Modul ist). Und dies in Kombination mit Webform-Diagrammen oder Webform- Diagrammen .

Abhängig von Ihren heutigen tatsächlichen Anforderungen scheint es, dass mit diesen beiden Webform-bezogenen Modulen durch Aktivitäten zum Erstellen von Websites ziemlich viel erreicht werden kann (wahrscheinlich sind keine Kenntnisse der Drupal-Entwickler mehr erforderlich). Weitere Informationen zu diesen Webform-Diagrammmodulen (und einen Link zu einer interessanten Diskussion) finden Sie in Punkt 5 unter Module, die das Diagramm über das Diagrammmodul erleichtern .

Verwenden Sie den Vergleich von Diagrammmodulen heutzutage für mögliche andere Alternativen (und seien Sie bereit, sich wirklich über die Dutzende verfügbarer Diagrammmodule zu verwirren ...).

Bitte beachten Sie : Ich bin ein neues (Co-) Maintainer - Diagramm und Charts , und der Autor des Vergleichs von Charting Module . Ich versuche, die (erstaunlichen) Beiträge von Quicksketch zu Charts, der auch für Webform zuständig ist, und Webform ChartS (mit einem 's') fortzusetzen.

PS: Entschuldigung für all diese verwirrenden * Diagramm-Namespaces, ich habe sie nicht erfunden ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.