У меня есть данные, которые я вызываю из службы http. Эти данные содержат названия месяцев, которые определены как объекты enum в порядке естественного календаря ... Теперь у меня есть массив, в котором я объединяю названия месяцев с некоторыми дополнительными целыми числами в dict. например:
[{name:Februar, value: 999},{name: Januar, value: 123}, {name: Oktober, value: 321},...]
Тогда я вставляю дикт в массив. Теперь я хотел бы отсортировать массив по статьям перечисления в словаре ... поэтому сначала идет январь, а затем февраль ... и т. Д.
[{name: Januar, value: 123},{name:Februar, value: 999}, {name: Oktober, value: 321},...]
Мой код выглядит так:
import { Component, OnInit, NgModule } from '@angular/core';
import {Http,Response} from '@angular/http';
import 'rxjs/add/operator/map';
import { BrowserModule } from '@angular/platform-browser';
import { NgxChartsModule } from '@swimlane/ngx-charts';
@Component({
selector: 'productsbydemomonth',
templateUrl: './productsbydemomonth.component.html',
styleUrls: ['./productsbydemomonth.component.scss']
})
export class ProductsbydemomonthComponent implements OnInit {
dataArray : any[];
Anzahl: number[] = [];
Monat: Monat;
chartData: any = [];
view: any[] = [700, 400];
// options
showXAxis = true;
showYAxis = true;
gradient = false;
showLegend = true;
showXAxisLabel = true;
xAxisLabel = 'Monat';
showYAxisLabel = true;
yAxisLabel = 'Anzahl';
monatConst: number = 12;
colorScheme = {
domain: ['#5AA454', '#A10A28', '#C7B42C', '#AAAAAA']
};
monthArray: Monat[] = [Monat.Januar, Monat.Februar, Monat.Maerz, Monat.April, Monat.Mai, Monat.Juni, Monat.Juli, Monat.August, Monat.September, Monat.Oktober, Monat.November,Monat.Dezember ]
constructor(private http: Http) { }
ngOnInit() {
//this.getChartsData();
}
getChartsData() {
return this.http.get('http://localhost:5555/DNZ/Produkt/Monat/by/' + (this.monatConst))
.subscribe((res: Response) => {
this.chartData = res.json() ;
this.dataArray = this.formatData(this.chartData);
},
(err) => {
if (err.error instanceof Error) {
console.log('Client-side error occured.');
} else {
console.log('Server-side error occured.');
}
});
}
formatData(someData) {
this.dataArray = [];
for (let dat of someData) {
var dictChart = {
name: dat.Monat,
value: dat.Anzahl,
};
//console.log(dictChart);
this.dataArray.push(dictChart);
}
//console.log("Im Array:", this.dataArray);
this.dataArray.sort(name);
return this.dataArray;
}
}
interface chartData {
Anzahl : number,
DemoID : number,
Monat: Monat
}
enum Monat {"Januar","Februar","Maerz","April","Mai","Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}
Как мне отсортировать эти данные в массиве диктов по названию месяца? Чтобы они отображались на графике в правильном порядке названий месяцев по оси X? (не беспокойтесь о графике, он просто отображает порядок массива ...)