jvfd3 / timetabling-UENF

0 stars 0 forks source link

Converter a leitura de dados base de JSON para CSV? #324

Open jvfd3 opened 8 months ago

jvfd3 commented 8 months ago

Talvez fique mais fácil de alterar no Excel... 🤔

jvfd3 commented 7 months ago
import Papa from "papaparse";
import coursesCSV from "../../../../DB/localCSV/courses.csv";
const localPath = "../../../../DB/localCSV/courses.csv";
import axios from "axios";
import csv from "csv-parser";

async function getCsvData(url, callback) {
  const response = await axios.get(url);
  const csvData = response.data;

  const results = [];

  csvData
    .pipe(csv({ separator: ";" }))
    .on("data", (data) => results.push(data))
    .on("end", () => {
      callback(results);
    });
}

function Courses() {
  // const defaultCourses = sqlDataFromJson.courses ?? [];

  const csvText = `\
id;idCenter;alias;name
1;1;CC;Ciencia da Computacao
2;1;Eng Civ;Engenharia Civil
3;1;Lic Fis;Licenciatura em Fisica
4;1;Lic Qui;Licenciatura em Quimica
5;1;Eng Prod;Engenharia de Producao
6;1;Eng Met;Engenharia Meteorologica
7;1;Lic Mat;Licenciatura em Matematica
8;1;Eng Mat;Engenharia Metalurgica e de Materiais
9;1;Lic Qui EAD;Licenciatura em Quimica a Distancia
10;1;Eng Petr;Engenharia de Exploracao e Producao de Petroleo\
`;

  let parsedData1;
  let parsedData2;
  let parsedData3;

  Papa.parse(coursesCSV, {
    delimiter: ";",
    header: true,
    complete: function (results) {
      parsedData1 = results.data;
    },
  });
  Papa.parse(localPath, {
    delimiter: ";",
    header: true,
    complete: function (results) {
      parsedData2 = results.data;
    },
  });
  Papa.parse(csvText, {
    delimiter: ";",
    header: true,
    complete: function (results) {
      parsedData3 = results.data;
    },
  });

  let parsedData4;
  let parsedData5;
  let parsedData6;
  getCsvData(coursesCSV, function (data) {
    parsedData4 = data;
  });

  getCsvData(localPath, function (data) {
    parsedData5 = data;
  });

  getCsvData(csvText, function (data) {
    parsedData6 = data;
  });

  // console.log("parsed from path", parsedData1);

  // const defaultCourses = [];
  // const [courses, setCourses] = useState(defaultCourses);

  // const [subject, setCourse] = useState(
  //   courses?.[configInfo.defaultIndexes.subject] ?? courses?.[0]
  // );

  // const subjectStates = { courses, setCourses, subject, setCourse };

  // useEffect(() => {
  //   readCourse(subjectStates);
  // }, []);

  return (
    <div className={defaultClassNames.containerCards}>
      {parsedData1.length}, {parsedData4.length}
      <br />
      {parsedData2.length}, {parsedData5.length}
      <br />
      {parsedData3.length}, {parsedData6.length}

Tentativa

Tentei fazer algo aqui, mas o papaparser só funciona legal com o texto, e o JavaScript só processa legal o JSON, não o CSV. Para funcionar, teria que usar o axios ou algo assim... vou tentar isso agora, inclusive

jvfd3 commented 7 months ago
import Papa from "papaparse";
import coursesCSV from "../../../../DB/localCSV/courses.csv";
import axios from "axios";
const localPath = "../../../../DB/localCSV/courses.csv";

async function getCsvData(url, callback) {
  const response = await axios.get(url);
  const csvData = response.data;

  Papa.parse(csvData, {
    delimiter: ";",
    header: true,
    complete: function (results) {
      callback(results.data);
    },
  });
}

function Courses() {
  let parsedData5;

  getCsvData(localPath, function (data) {
    parsedData5 = data;
  });

Também não deu certo