fichier d'analyse à partir d'une entrée avec papaparse
Je suis en train de mettre à jour un tableau avec un fichier d'entrée. Je lis le fichier avec Papaparse.
le graphique.composante.ts:
update_chart(csvdata) {
const jsonData = Papa.parse(csvdata);
this.data1 = this.prepareData(jsonData.data);
const self = this,
chart = this.chart;
chart.showLoading();
setTimeout(() => {
chart.hideLoading();
self.chartOptions.series = [
self.chartOptions.series[0],
{
data: self.data1
}
];
self.updateFromInput = true;
}, 2000);
}
}
chart.component.html:
<div class="boxChart__container">
<div>
<highcharts-chart
id="container"
[Highcharts]="Highcharts"
[constructorType]="chartConstructor"
[options]="chartOptions"
[callbackFunction]="chartCallback"
[(update)]=updateFromInput
[oneToOne]="true"
style="width: 100%%; height: 400px; display: block;">
</highcharts-chart>
<div class="form-group">
<label for="file">Choose File</label>
<input type="file" id="file" (change)="update_chart($event)">
</div>
</div>
</div>
Cependant, dès que je choisis mon fichier, j'obtiens cette erreur:
ERROR TypeError: Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'. at _global.. [as readAsText] (zone-evergreen.js:1354) at c._readChunk (papaparse.min.js:7) at c._nextChunk (papaparse.min.js:7) at c.stream (papaparse.min.js:7) at Object.parse (papaparse.min.js:7) at ChartComponent.update_chart (chart.component.ts:138) at Object.eval [as handleEvent] (ChartComponent.html:16) at handleEvent (core.js:38098) at callWithDebugContext (core.js:39716) at Object.debugHandleEvent [as handleEvent] (core.js:39352)
Je ne sais pas ce que l'on entend par "n'est pas de type blob" et pourquoi cela concerne ma demande. Quelqu'un aurait-il une idée de ce qui est mal?
Le Fichier CSV:
Tasks,Run,Count
task1,4.96,150
task2,156.166666666667,150
task3,279.369565217391,92
task4,1718,16
task5,2.375,16
Je ne peux pas changer le format csv, il doit être comme ça.
J'ai reproduit l'erreur ici: https://codesandbox.io/s/angular-mntjy
Pour le linéaire de mises en page et texte faire:
android:layout_gravity="center"
android:gravity="center"
pas de center_vertical
ou center_horizontal
android:layout_weight="1"
tant que vous utilisez le layout_weight
bien,si vous définissez android:layout_width="wrap_content"
,Le système affecte les trois textviews leur largeur wrap_content (assez large pour contenir leur contenu), et attribue ensuite le reste d'espace à l'écran pour les trois textviews selon le ratio 1:1:1,de sorte que votre contenu n'est pas la même largeur, il n'apparaîtra pas alignés.
vous avez juste besoin de changer TextView
android:layout_width="wrap_content"
pour
android:layout_width="0dp"
dans ce cas,il va diviser la largeur par 1:1:1 d'abord
Voir d'autres questions sur les étiquettes angular highcharts papaparse