-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi.js
105 lines (85 loc) · 3.32 KB
/
api.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Load First
const url = `https://www.themealdb.com/api/json/v1/1/search.php?s=chicken`;
fetch(url)
.then(res => res.json())
.then(data => displayMeal(data.meals))
.catch(error => {
document.getElementById('api-error').innerHTML = ` <b class="text-danger">Something went wrong </b>`;
});
const searchFood = () => {
// Preloader adding
const preloader = () => {
document.getElementById('loading').classList.remove('invisible');
document.getElementById('search-result').classList.add('d-none');
setTimeout(() => {
document.getElementById('loading').classList.add('invisible');
document.getElementById('search-result').classList.remove('d-none')
}, 3000)
}
preloader();
const searchInput = document.getElementById('search-field');
const searchValue = searchInput.value;
// Clear Data
searchInput.value = '';
if (searchValue == '') {
document.getElementById('error-message').innerHTML = `
<h1 class="text-danger">No Result Found</h1>
`;
} else {
// Load Data
const url = `https://www.themealdb.com/api/json/v1/1/search.php?s=${searchValue}`;
fetch(url)
.then(res => res.json())
.then(data => displayMeal(data.meals))
.catch(error => {
document.getElementById('api-error').innerHTML = ` <b class="text-danger">Something went wrong </b>`;
});
}
}
const displayMeal = getMeals => {
const searchResult = document.getElementById('search-result');
// Clear PRevious
searchResult.textContent = '';
if (getMeals == null) {
document.getElementById('error-message').innerHTML = `
<h1 class="text-danger">No Result Found</h1>
`
} else {
document.getElementById('error-message').innerHTML = "";
}
getMeals.forEach(meal => {
const mealList = document.createElement('div');
mealList.classList.add('col');
mealList.innerHTML = `
<div onclick="loadMealDetails(${meal.idMeal})" class="card h-100">
<img src="${meal.strMealThumb}" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">${meal.strMeal}</h5>
<p class="card-text">${(meal.strInstructions).slice(0, 100)}</p>
</div>
</div>
`;
searchResult.appendChild(mealList);
})
}
const loadMealDetails = idMeal => {
const url = `https://www.themealdb.com/api/json/v1/1/lookup.php?i=${idMeal}`;
fetch(url)
.then(res => res.json())
.then(data => {
const meal = data.meals[0];
const mealDetails = document.getElementById('meal-details');
mealDetails.innerHTML = '';
const div = document.createElement('div');
div.classList.add('card');
div.innerHTML = `
<img src="${meal.strMealThumb}" class="card-img-top img-thumbnail" alt="...">
<div class="card-body">
<h5 class="card-title">${meal.strMeal}</h5>
<p class="card-text">${(meal.strInstructions).slice(0, 150)}</p>
<a href="${meal.strYoutube}" class="card-link">Learn To Cook</a>
</div>
`;
mealDetails.appendChild(div);
})
}