@@ -3,9 +3,11 @@ const searchResultDiv = document.querySelector(".search-result");
33const container = document . querySelector ( ".container" ) ;
44const accordionHeadings = document . querySelectorAll ( '.accordion-heading' ) ;
55let searchQuery = "" ;
6+
67const APP_ID = '33b1a0ef' ;
78const APP_key = '5e12645236de1c7eb43b725fd06a49ee' ;
89
10+
911searchForm . addEventListener ( "submit" , ( e ) => {
1012 e . preventDefault ( ) ;
1113 searchQuery = e . target . querySelector ( "input" ) . value ;
@@ -16,8 +18,59 @@ async function fetchAPI() {
1618 const baseURL = `https://api.edamam.com/search?q=${ searchQuery } &app_id=${ APP_ID } &app_key=${ APP_key } &from=0&to=100` ;
1719 const response = await fetch ( baseURL ) ;
1820 const data = await response . json ( ) ;
19- generateHTML ( data . hits ) ;
21+ generatePagination ( data . hits ) ;
22+ displayItems ( data . hits ) ;
2023}
24+
25+ const itemsPerPage = 10 ; // Number of items to display per page
26+ let currentPage = 1 ; // Initially set the current page to 1
27+
28+ // Function to display items for the current page
29+ function displayItems ( data ) {
30+ const startIndex = ( currentPage - 1 ) * itemsPerPage ;
31+ const endIndex = startIndex + itemsPerPage ;
32+ const itemsToDisplay = data . slice ( startIndex , endIndex ) ;
33+
34+ generateHTML ( itemsToDisplay ) ;
35+ }
36+
37+ // Function to generate pagination links
38+ function generatePagination ( data ) {
39+ const paginationContainer = document . getElementById ( "paginationContainer" ) ;
40+ paginationContainer . innerHTML = "" ;
41+ const pageLinkContainer = document . createElement ( "div" ) ;
42+ pageLinkContainer . classList . add ( "pagination" ) ;
43+ paginationContainer . appendChild ( pageLinkContainer ) ;
44+
45+ const totalPages = Math . ceil ( data ?. length / itemsPerPage ) ;
46+
47+ for ( let i = 1 ; i <= totalPages ; i ++ ) {
48+ const pageLink = document . createElement ( "a" ) ;
49+ pageLink . href = "#" ;
50+ pageLink . textContent = i ;
51+ if ( i === 1 ) {
52+ pageLink . classList . add ( "selectedLink" ) ;
53+ }
54+ pageLink . addEventListener ( "click" , ( ) => {
55+ currentPage = i ;
56+ displayItems ( data ) ;
57+
58+ let links = pageLinkContainer . childNodes ;
59+ let j = 1 ;
60+
61+ for ( let link of links ) {
62+ link . classList . remove ( "selectedLink" ) ;
63+ if ( j === i ) {
64+ link . classList . add ( "selectedLink" ) ;
65+ }
66+ j ++ ;
67+ }
68+ } ) ;
69+ pageLink . classList . add ( "paginationLink" ) ;
70+ pageLinkContainer . appendChild ( pageLink ) ;
71+ }
72+ }
73+
2174function generateHTML ( results ) {
2275 container . classList . remove ( "initial" ) ;
2376 let generatedHTML = "" ;
@@ -50,12 +103,5 @@ function generateHTML(results) {
50103 ` ;
51104 } ) ;
52105 searchResultDiv . innerHTML = generatedHTML ;
106+ }
53107
54- // Add event listeners to accordion headings
55- const accordionHeadings = document . querySelectorAll ( '.accordion-heading' ) ;
56- accordionHeadings . forEach ( ( heading ) => {
57- heading . addEventListener ( 'click' , ( ) => {
58- heading . nextElementSibling . classList . toggle ( 'active' ) ;
59- } ) ;
60- } ) ;
61- }
0 commit comments