Trazando un gráfico de respuestas de la encuesta en Laravel -- php campo con object-oriented campo con laravel campo con data-visualization camp codereview Relacionados El problema

Plotting a graph of survey answers in Laravel


5
vote

problema

Español

Estoy usando PHP (Laravel) para iterar sobre el <a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">Check out example.com</a>0 Tabla y construir conjuntos de datos que puedo mostrar en un gráfico. Me pregunto si este es el camino a seguir.

chartactory.php

  <a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">Check out example.com</a>1  
Original en ingles

I'm using PHP (Laravel) to iterate over the survey_answers table and build datasets which I can show in a graph. I'm just wondering if this is the way to go.

ChartFactory.php

public static function buildFromSurvey($survey) {     $chart = new Chart($survey->name);      foreach($survey->answers as $answer) {          if($chart->hasDataset($answer->user_id)) {             $dataset = $chart->getDataset($answer->user_id);         } else {             $dataset = new Dataset();             $dataset->setTitle($answer->user->name);             $dataset->setColor(config('assessment.chart_colors_survey')[0]);             $dataset->setOwner($answer->user);             $chart->addDataSet($dataset);         }          // Create the category if not exists in this dataset         if ($dataset->hasDataItem($answer->question->category->name)) {             $category = $dataset->getDataItem($answer->question->category->name);             $category->addScore($answer->score);         } else {             $category = new Category();             $category->setName($answer->question->category->name);             $category->addScore($answer->score);              $dataset->addDataItem($category);             $chart->addLabel($answer->question->category->name);         }     }      return $chart; } 
           

Lista de respuestas

2
 
vote

Creo que mi principal crítica de este Código sería que sea asimétrica en términos de donde vive la propiedad de instancias de sus diferentes dependencias de objetos.

Por ejemplo, en el primer condicional alrededor de si argparse4 existe en el argparse5 , ¿por qué este código necesita tener la lógica para crear y adjuntar un nuevo argparse6 ? Si el argparse7 OBJETO "Posee" Los conjuntos de datos, pensaría que tal vez todo este código hará es llamar a 998877766655443318 o método similar para manejar el trabajo de trabajo un nuevo argparse9 y configurándolo en el import argparse def parse_args(): """Parses command-line arguments.""" parser = argparse.ArgumentParser() parser.add_argument('infile', type=argparse.FileType('r')) parser.add_argument('informat', action='store', choices=HASH_FORMATS) parser.add_argument('outfile', type=argparse.FileType('w')) parser.add_argument('outformat', action='store', choices=HASH_FORMATS) return parser.parse_args() if __name__ == '__main__': args = parse_args() # ... 0 .

Esta misma preocupación existe para mí con respecto a la creación de objetos import argparse def parse_args(): """Parses command-line arguments.""" parser = argparse.ArgumentParser() parser.add_argument('infile', type=argparse.FileType('r')) parser.add_argument('informat', action='store', choices=HASH_FORMATS) parser.add_argument('outfile', type=argparse.FileType('w')) parser.add_argument('outformat', action='store', choices=HASH_FORMATS) return parser.parse_args() if __name__ == '__main__': args = parse_args() # ... 1 .

También recomendaría encarecidamente el uso de tipos que indique el parámetro para hacer cumplir que se le pasa un objeto de encuesta válido.

 

I think my main criticism of this code would be that it is asymmetric in terms of where ownership of instantiating your different object dependencies lives.

For example, in the first conditional around whether Dataset exists on the Chart, why does this code need to own the logic to create and attach a new Dataset? If the Chart object "owns" the datasets, I would think that perhaps all this code would do is call a Chart::createNewDataset() or similar method to handle the work building a new dataset and setting it on the Chart.

This same concern exists for me with regards to creating Category objects.

I would also strongly recommend using type hinting for the parameter to enforce that you are getting passed a valid survey object.

 
 

Relacionados problema

24  Eliminar puntos en línea recta  ( Remove points in a straight line ) 
Escribí este código para eliminar los puntos que crean una línea recta cuando se trazan. Por ejemplo, esto tiene muchos puntos en una línea recta: impor...

4  DC.JS y la aplicación CrossFilter para mostrar múltiples gráficos  ( Dc js and crossfilter app to display multiple charts ) 
Considere la siguiente aplicación CrossFilter / DC.JS ( captura de pantalla ): <!DOCTYPE html> <html lang="en"> <head> <title>Data Exploration Tool...

5  Fetch, parcela y envía estadísticas de incidentes de seguridad con Excel  ( Fetch plot and send security incident statistics with excel ) 
tLDR: No se desarrollo para vivir. Si alguien podría apuntarme en la dirección correcta para que mi script sea más legible / Pythonic. Agradecería la asiste...

1  Gráfico de conteo de palabras  ( Word count graph ) 
He creado un programa en Python que lee un archivo y emite un gráfico de frecuencia de las palabras que contiene. Se apreciarían cualquier retroalimentación o...

5  Histograma vertical  ( Vertical histogram ) 
He estado trabajando en un histograma vertical que imprime un asterisco en su lugar de un número en un cierto rango (por ejemplo, 1-10 ... y así sucesivamente...

5  Módulo de gráficos Haskell (Gloss)  ( Haskell graphing module gloss ) 
He estado aprendiendo lentamente Haskell en los últimos meses. Hice un pequeño módulo para las funciones gráficas usando Brillo, y me gustaría comentarios sob...

4  Consulta para trazar un histograma de calificaciones de canciones  ( Query to plot a histogram of song ratings ) 
Escribí código para trazar una distribución de calificación, que se parece a esto: La función más importante es el stats Función: function stats($so...

1  Simulación de la placa de galton  ( Galton board simulation ) 
Este programa está escrito para Windows 7 en MINGW utilizando GCC. Estoy buscando recomendaciones para mejorar la portabilidad del programa. /* galtonboa...

5  CSS & JS PIECHART  ( Css js piechart ) 
Hice un public class Question { public static void main(String[] args) { //A hypothetical list of tasks to run asynchronously List<Call...

3  Programa que acepta calificaciones e imprime la distribución de grado  ( Program which accepts grades and prints grade distribution ) 
Estoy haciendo el Curso de Java MOOC ( CTRL + F "DISTRIBUCIÓN"): La entrada del programa es un conjunto de puntajes de exámenes de un curso. Cada punt...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos