Parantatatam
mag Cookies & Kekse
Hallo allerseits,
ich habe gerade ein kleines Effizienzproblem, denn ich arbeite gerade daran einen eigenen Musikplayer mit Audiotheksverwaltung zu schreiben und das mit AngularJS und Fuse. Hierbei entsteht auch schon das Problem, denn beide Bibliotheken brauchen unterschiedlich strukturierte Arrays um die Daten darstellen zu können bzw. sie durchsuchen zu können. Um es mal zu verdeutlichen:
Leider kann ich in Fuse nicht die Struktur von AngularJS nutzen und andersherum geht es leider auch nicht. Jedoch ist es so, dass ich mit Fuse meine Audiothek durchsuche und dann mir mit AngularJS dementsprechend die Ergebnisse anzeigen lassen will. Bisher habe ich nur die Alben von J.B.O. bei mir ausprobiert, jedoch dauert es da schon sehr lange. Ich möchte mir gar nicht vorstellen, wie das aussieht, wenn ich meine ganze Audiothek durchsuche, welche um die 100.000 Einträge hat.
Fällt jemanden eine Möglichkeit ein, wie ich hier optimieren kann oder wie ich die Strukturen parallel miteinander verlinken kann?
Nachtrag: ich benutze übrigens folgende Funktion um von Fuse zu AngularJS umzuwandeln:
ich habe gerade ein kleines Effizienzproblem, denn ich arbeite gerade daran einen eigenen Musikplayer mit Audiotheksverwaltung zu schreiben und das mit AngularJS und Fuse. Hierbei entsteht auch schon das Problem, denn beide Bibliotheken brauchen unterschiedlich strukturierte Arrays um die Daten darstellen zu können bzw. sie durchsuchen zu können. Um es mal zu verdeutlichen:
Javascript:
// Struktur von Fuse
var fuse = new Fuse([
{
"artist": "J.B.O.",
"album": "Head Bang Boing",
"track": "Acht"
},
{
"artist": "J.B.O.",
"album": "Head Bang Boing",
"track": "Bejonze"
},
// ... entries
], { "keys": [ "artist", "album", "track" ] });
// Struktur von AngularJS
$scope.artists = [
{
"name": "J.B.O.",
"albums": [
{
"name": "Head Bang Boing",
"tracks": [
{
"name": "Acht"
},
{
"name": "Bejonze"
},
// tracks ...
]
},
// albums ...
]
},
// artists ...
];
Fällt jemanden eine Möglichkeit ein, wie ich hier optimieren kann oder wie ich die Strukturen parallel miteinander verlinken kann?
Nachtrag: ich benutze übrigens folgende Funktion um von Fuse zu AngularJS umzuwandeln:
Javascript:
var convertFromFuseToAngular = function (entries) {
var artistNames = [],
albumNames = [],
artists = [],
albums = [],
tracks = [];
// find artists
for ( var i in entries ) {
artistNames.push(entries[i].artist);
}
// make artists unique
artistNames = jQuery.unique(artistNames);
for ( var i in artistNames ) {
albumNames = [];
albums = [];
// find albums of the current artist
for ( var j in entries ) {
if ( entries[j].artist === artistNames[i] ) {
albumNames.push(entries[j].album);
}
}
// make albums unique
albumNames = jQuery.unique(albumNames);
for ( var j in albumNames ) {
tracks = [];
// find tracks of the current album
for ( var k in entries ) {
if ( entries[k].artist === artistNames[i] && entries[k].album === albumNames[j] ) {
tracks.push(new Track(
// file entry
entries[k].entry,
// track name
entries[k].track,
// track number
entries[k].trackNumber,
// disc number
entries[k].discNumber
));
}
}
// add tracks to the current album
albums.push(new Album(
// album name
albumNames[j],
// tracks
tracks
));
}
// add albums to the current artist
artists.push(new Artist(
// artist name
artistNames[i],
// albums
albums
));
}
return artists;
};