I'm works at own movie project and want to find similar movies that movie correct by genre. I don't know how to make that
At the moment i created filter using pipe for similar movies and component for view that result. My json is viewed in the view format .ts i created constant. The below this i send that code for pipe and component for your review and wait your answer.
export class SimilarPipe implements PipeTransform {
transform(items: MovieModel[], filterSimilar: MovieModel): any {
if (items == null) {
return items;
}
return items.filter(item => item.genres.indexOf(filterSimilar) >= -1);
}
}
// Controller
function search(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].genres === nameKey) {
console.log(myArray[i])
return myArray[i];
}
}
}
getSimilarGenres() {
this.route.paramMap
.switchMap((params: ParamMap) =>
this.service.getMoviesID(+params.get('id'))
)
.takeUntil(this.ngUnscribe)
.subscribe(movies => {
const a = Object.values(movies);
this.movie = a;
search(a[4], this.movieList);
});
}
setSimilarMovies(genre) {
this.showSimilarMovie ! = genre ? this.showSimilarMovie = genre : this.showSimilarMovie = null;
this.store.dispatch({type: 'SIMILAR MOVIE'});
}
<div (load)="setSimilarMovies(genres)" class="qazaq-video-list-items">
<div class="qazaq-v-list-items mt-30" *ngFor="let movie of movieList">
<div class="qazaq-v-list-i-img">
<img src="assets/image/{{movie.img}}" alt="">
</div>
<div class="qazaq-v-list-content">
<div class="qazaq-v-tag c2">
<span>{{movie.genres}}</span>
</div>
<a [routerLink]="['/movie', movie.id]">{{movie.name}}</a>
<div class="movie-time">
<i class="fa fa-clock-o c1"></i>
<span> {{movie.length}} </span>
</div>
</div>
</div>
</div>
That my html template
<div class="qazaq-v-list-items mt-30" *ngFor="let movie of movieList | similar: showSimilarMovie">
<div class="qazaq-v-list-i-img">
<img src="assets/image/{{movie.img}}" alt="">
</div>
<div class="qazaq-v-list-content">
<div class="qazaq-v-tag c2">
<span>{{movie.genres}}</span>
</div>
<a [routerLink]="['/movie', movie.id]">{{movie.name}}</a>
<div class="movie-time">
<i class="fa fa-clock-o c1"></i>
<span> {{movie.length}} </span>
</div>
</div>
</div>