Wyświetlaj dane wyników formularza internetowego na mapie Google

11

Próbuję wyświetlić wyniki formularza internetowego jako Wykresy Google . Robię to na warstwie motywu, zastępując theme_webform_results_analysis () w pliku template.php mojego motywu i używając modułu Chart . Drupal 6.22, formularz internetowy 6.x-3.11.

Strona analizy formularza internetowego zwykle pokazuje dane w tabeli, więc próbuję zhakować tablice, aby ta tabela przekazała dane do interfejsu API Chart .

EDYCJA : Zorientowałem się, jak używać var_dump i odkryłem, że lepszym rozwiązaniem może być osobne wstawienie się do tablic $ row_data i $ pytania (zamiast używania tablicy $ rows, którą miałem w pierwszej wersji tego pytania, która była połączenie obu tablic).

EDYCJA 2 : Wydaje mi się, że odkryłem, jak złapać każdy element oryginalnych tablic $ pytania i $ row_data (patrz poniżej - foreach w drugim foreach). Więc teraz muszę ułożyć te elementy we właściwe tablice (1 na pytanie) i znaleźć sposób na ich powtórzenie.

Oto, co mam w 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;
}
Sarah German
źródło
1
czy rozwiązałeś własne pytanie? Jeśli tak, opublikuj własną odpowiedź
iStryker
Nie, jeszcze tego nie rozgryzłem. Na razie jest wstrzymany, dopóki nie skończę czytać „Począwszy od PHP i MySQL5: od nowicjusza do profesjonalisty” ( link ), a potem dam mu jeszcze jedną szansę. Zacząłem uzyskiwać pomoc online, więc pomyślałem, że muszę lepiej opanować podstawy, zanim spróbuję czegoś tak trudnego.
Sarah German

Odpowiedzi:

2

Istnieje inny moduł wykresów Drupal, który zapewnia obsługę formularzy internetowych: http://drupal.org/project/fusioncharts

Fusionchart ma mały podmoduł o nazwie fusioncharts_webform

ipwa
źródło
Dzięki za twoją odpowiedź! Spojrzałem na FusionCharts, ale to nie pasuje do mojego projektu, ponieważ używa Flasha i potrzebowalibyśmy wersji płatnej - staramy się trzymać rozwiązań open source. Ale wygląda ładnie, założę się, że rozwiązuje ten problem dla wielu ludzi.
Sarah German
1

Wiem, że ponad 3 lata później, ale od tamtej pory sytuacja trochę się zmieniła ...

Biorąc pod uwagę tylko tytuł tego pytania, można teraz rozwiązać ten problem za pomocą modułu Wykresy (choć pierwotne pytanie zaczęło się od Chart , który jest innym modułem). A to w połączeniu z każdym wykresie Webform lub Webform Charts .

W zależności od Twoich aktualnych potrzeb wydaje się, że dzięki tym 2 modułom związanym z formularzem internetowym wiele można osiągnąć dzięki działaniom związanym z tworzeniem witryn (prawdopodobnie nie będzie już potrzeby korzystania z umiejętności programistów Drupal). Więcej informacji o tych modułach Webform Chart (i link do interesującej dyskusji) znajduje się w punkcie 5 w modułach ułatwiających tworzenie wykresów za pomocą modułu Wykresy .

Skorzystaj z porównania modułów wykresów, aby znaleźć inne potencjalne alternatywy w tych dniach (i bądź gotów, aby się zdezorientować na temat dziesiątek dostępnych modułów wykresów ...).

Pamiętaj: jestem nowym (współ) opiekunem programu Chart and Charts oraz autorem porównania modułów wykresów . Staram się kontynuować (niesamowity) wkład Quicksketch w Charts, który jest także opiekunem Webform i Webform ChartS (z „s”).

PS: Przepraszam za wszystkie mylące * przestrzenie nazw wykresów, nie wymyśliłem ich ...

Pierre.Vriens
źródło