dsg
INSERT INTO `cp_filejs` (`id`,`app`,`path`,`modul`,`file_name`,`content`) VALUES ('311','1','u2/creator','discover','js/search.js--','import {\r\n getDiscoverData\r\n} from \\\\\\\"./api/discover.js\\\\\\\";\r\nimport store from \\\\\\\"./store.js\\\\\\\";\r\n\r\nvar $ = Dom7;\r\n\r\n// let activeTab = \\\\\\\'all\\\\\\\';\r\nlet lastSearchText = \\\\\\\'\\\\\\\';\r\nlet controller; // To store the current AbortController\r\n\r\nvar searchResultsStore = store.getters.getSearchResults;\r\n\r\n$(document).on(\\\\\\\'page:afterin\\\\\\\', \\\\\\\'.page[data-name=\\\\\\\"search\\\\\\\"]\\\\\\\', async function (e) {\r\n $(\\\\\\\'#discover-search\\\\\\\').focus();\r\n})\r\n\r\n// event listener for tab change\r\n$(document).on(\\\\\\\'click\\\\\\\', \\\\\\\'.discovery-wrap .tab-link\\\\\\\', async function (e) {\r\n const type = this.getAttribute(\\\\\\\'data-type\\\\\\\')\r\n activeTab = type\r\n})\r\n\r\nfunction debounce(func, delay) {\r\n let timer;\r\n return function (...args) {\r\n clearTimeout(timer);\r\n timer = setTimeout(() => func.apply(this, args), delay);\r\n };\r\n}\r\n\r\nfunction addLoaderToTabs() {\r\n const eventsContainer = document.querySelector(\\\\\\\'#events-results .list ul\\\\\\\');\r\n const usersContainer = document.querySelector(\\\\\\\'#users_vehicles-results .list ul\\\\\\\');\r\n const venuesContainer = document.querySelector(\\\\\\\'#venues-results .list ul\\\\\\\');\r\n const topContainer = document.querySelector(\\\\\\\'#top-results .list\\\\\\\');\r\n\r\n const loader = `\r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n\r\n eventsContainer.innerHTML = loader;\r\n usersContainer.innerHTML = loader;\r\n venuesContainer.innerHTML = loader;\r\n topContainer.innerHTML = loader;\r\n}\r\n\r\nconst debouncedSearch = debounce(async function () {\r\n const search = $(this).val().trim();\r\n\r\n if (search.length < 3 || search === lastSearchText) {\r\n return;\r\n }\r\n\r\n lastSearchText = search;\r\n\r\n // Abort the previous request if it\\\\\\\'s still ongoing\r\n if (controller) {\r\n controller.abort();\r\n }\r\n\r\n // Create a new AbortController for the current request\r\n controller = new AbortController();\r\n const signal = controller.signal;\r\n\r\n addLoaderToTabs();\r\n try {\r\n const searchResults = await getDiscoverData(search, \\\\\\\'all\\\\\\\', 1, signal);\r\n store.dispatch(\\\\\\\'setSearchResults\\\\\\\', searchResults);\r\n } catch (error) {\r\n if (error.name === \\\\\\\'AbortError\\\\\\\') {\r\n console.log(\\\\\\\'Fetch aborted\\\\\\\');\r\n } else {\r\n console.error(\\\\\\\'Error fetching search results:\\\\\\\', error);\r\n }\r\n }\r\n}, 300); // Adjust the delay (in milliseconds) as needed\r\n\r\n$(document).on(\\\\\\\'change input paste\\\\\\\', \\\\\\\'#discover-search\\\\\\\', debouncedSearch);\r\n\r\n// Function to render a list of items in the DOM\r\nfunction renderList(container, items, renderItem) {\r\n container.innerHTML = \\\\\\\'\\\\\\\';\r\n\r\n const noResultsMessage = \\\\\\\'
  • No results found
  • \\\\\\\';\r\n\r\n if (!items || items.length === 0) {\r\n container.innerHTML = noResultsMessage;\r\n return;\r\n }\r\n\r\n // Render each item\r\n items.forEach(item => {\r\n const li = document.createElement(\\\\\\\'li\\\\\\\');\r\n li.innerHTML = renderItem(item);\r\n container.appendChild(li);\r\n });\r\n}\r\n\r\n// Function to render the search results\r\nfunction renderSearchResults(searchResults) {\r\n const eventsContainer = document.querySelector(\\\\\\\'#events-results .list ul\\\\\\\');\r\n const usersContainer = document.querySelector(\\\\\\\'#users_vehicles-results .list ul\\\\\\\');\r\n const venuesContainer = document.querySelector(\\\\\\\'#venues-results .list ul\\\\\\\');\r\n const topContainer = document.querySelector(\\\\\\\'#top-results .list\\\\\\\');\r\n\r\n // Ensure containers are cleared before rendering\r\n eventsContainer.innerHTML = \\\\\\\'\\\\\\\';\r\n usersContainer.innerHTML = \\\\\\\'\\\\\\\';\r\n venuesContainer.innerHTML = \\\\\\\'\\\\\\\';\r\n topContainer.innerHTML = \\\\\\\'\\\\\\\';\r\n\r\n // Render events\r\n if (searchResults.events) {\r\n renderList(eventsContainer, searchResults.events.data, event => `\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ${event.name}
    \r\n
    \r\n
    \r\n `);\r\n }\r\n\r\n // Render users\r\n if (searchResults.users) {\r\n renderList(usersContainer, searchResults.users.data, (user) => {\r\n const userLink = user.type == \\\\\\\'user\\\\\\\' ? \\\\\\\'/profile-view/\\\\\\\' + user.id : \\\\\\\'/profile-garage-vehicle-view/\\\\\\\' + user.id;\r\n let contentText;\r\n\r\n if (user.type == \\\\\\\'user\\\\\\\') {\r\n contentText = `${user.name} (${user.username})`;\r\n }\r\n\r\n if (user.type == \\\\\\\'vehicle\\\\\\\') {\r\n contentText = `${user.name}\\\\\\\'s ${user.meta.make} ${user.meta.model}`;\r\n }\r\n\r\n return `\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ${contentText}
    \r\n
    \r\n
    `\r\n });\r\n }\r\n\r\n // Render venues\r\n if (searchResults.venues) {\r\n renderList(venuesContainer, searchResults.venues.data, venue => `\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ${venue.name} - ${venue.venue_location}
    \r\n
    \r\n
    \r\n `);\r\n }\r\n\r\n // Render top results\r\n let hasTopResults = false;\r\n\r\n if (searchResults.top_results) {\r\n if (searchResults.top_results.events && searchResults.top_results.events.length > 0) {\r\n hasTopResults = true;\r\n const eventSubList = document.createElement(\\\\\\\'ul\\\\\\\');\r\n const heading = document.createElement(\\\\\\\'h2\\\\\\\');\r\n\r\n heading.innerHTML = \\\\\\\'Trending Events\\\\\\\';\r\n heading.classList.add(\\\\\\\'section-title\\\\\\\', \\\\\\\'mt-3\\\\\\\', \\\\\\\'mb-2\\\\\\\');\r\n topContainer.appendChild(heading);\r\n topContainer.appendChild(eventSubList);\r\n\r\n renderList(eventSubList, searchResults.top_results.events, event => `\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ${event.name}
    \r\n
    \r\n
    \r\n `);\r\n }\r\n\r\n if (searchResults.top_results.users && searchResults.top_results.users.length > 0) {\r\n hasTopResults = true;\r\n\r\n const userSubList = document.createElement(\\\\\\\'ul\\\\\\\');\r\n const heading = document.createElement(\\\\\\\'h2\\\\\\\');\r\n\r\n heading.innerHTML = \\\\\\\'Trending Users\\\\\\\';\r\n heading.classList.add(\\\\\\\'section-title\\\\\\\', \\\\\\\'mt-3\\\\\\\', \\\\\\\'mb-2\\\\\\\');\r\n topContainer.appendChild(heading);\r\n topContainer.appendChild(userSubList);\r\n\r\n renderList(userSubList, searchResults.top_results.users, (user) => {\r\n const userLink = user.type == \\\\\\\'user\\\\\\\' ? \\\\\\\'/profile-view/\\\\\\\' + user.id : \\\\\\\'/profile-garage-vehicle-view/\\\\\\\' + user.id;\r\n let contentText;\r\n\r\n if (user.type == \\\\\\\'user\\\\\\\') {\r\n contentText = `${user.name} (${user.username})`;\r\n }\r\n\r\n if (user.type == \\\\\\\'vehicle\\\\\\\') {\r\n contentText = `${user.name}\\\\\\\'s ${user.meta.make} ${user.meta.model}`;\r\n }\r\n\r\n return `\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ${contentText}
    \r\n
    \r\n
    `\r\n });\r\n }\r\n\r\n if (searchResults.top_results.venues && searchResults.top_results.venues.length > 0) {\r\n hasTopResults = true;\r\n\r\n const venueSubList = document.createElement(\\\\\\\'ul\\\\\\\');\r\n const heading = document.createElement(\\\\\\\'h2\\\\\\\');\r\n\r\n heading.innerHTML = \\\\\\\'Trending Venues\\\\\\\';\r\n heading.classList.add(\\\\\\\'section-title\\\\\\\', \\\\\\\'mt-3\\\\\\\', \\\\\\\'mb-2\\\\\\\');\r\n\r\n topContainer.appendChild(heading);\r\n topContainer.appendChild(venueSubList);\r\n\r\n renderList(venueSubList, searchResults.top_results.venues, venue => `\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ${venue.name} - ${venue.venue_location}
    \r\n
    \r\n
    \r\n `);\r\n }\r\n }\r\n\r\n if (!hasTopResults) {\r\n topContainer.innerHTML = \\\\\\\'
    No top results found
    \\\\\\\';\r\n }\r\n}\r\n\r\nsearchResultsStore.onUpdated((results) => {\r\n renderSearchResults(results);\r\n});');
    Copy This

    Warning: file_get_contents(/home/u340524018/domains/agniaga.com/public_html/sub/u2/creator/js/search.js--): Failed to open stream: No such file or directory in /home/u340524018/domains/agniaga.com/public_html/sub/u2/cp/inc.filejs.php on line 190
    import {
        getDiscoverData
    } from \\\"./api/discover.js\\\";
    import store from \\\"./store.js\\\";
    
    var $ = Dom7;
    
    // let activeTab = \\\'all\\\';
    let lastSearchText = \\\'\\\';
    let controller; // To store the current AbortController
    
    var searchResultsStore = store.getters.getSearchResults;
    
    $(document).on(\\\'page:afterin\\\', \\\'.page[data-name=\\\"search\\\"]\\\', async function (e) {
        $(\\\'#discover-search\\\').focus();
    })
    
    // event listener for tab change
    $(document).on(\\\'click\\\', \\\'.discovery-wrap .tab-link\\\', async function (e) {
        const type = this.getAttribute(\\\'data-type\\\')
        activeTab = type
    })
    
    function debounce(func, delay) {
        let timer;
        return function (...args) {
            clearTimeout(timer);
            timer = setTimeout(() => func.apply(this, args), delay);
        };
    }
    
    function addLoaderToTabs() {
        const eventsContainer = document.querySelector(\\\'#events-results .list ul\\\');
        const usersContainer = document.querySelector(\\\'#users_vehicles-results .list ul\\\');
        const venuesContainer = document.querySelector(\\\'#venues-results .list ul\\\');
        const topContainer = document.querySelector(\\\'#top-results .list\\\');
    
        const loader = `
        <div style=\\\"padding-block: .5rem;\\\">
            <div class=\\\"infinite-scroll-preloader\\\">
                <div class=\\\"preloader\\\"></div>
            </div>
        </div>`;
    
        eventsContainer.innerHTML = loader;
        usersContainer.innerHTML = loader;
        venuesContainer.innerHTML = loader;
        topContainer.innerHTML = loader;
    }
    
    const debouncedSearch = debounce(async function () {
        const search = $(this).val().trim();
    
        if (search.length < 3 || search === lastSearchText) {
            return;
        }
    
        lastSearchText = search;
    
        // Abort the previous request if it\\\'s still ongoing
        if (controller) {
            controller.abort();
        }
    
        // Create a new AbortController for the current request
        controller = new AbortController();
        const signal = controller.signal;
    
        addLoaderToTabs();
        try {
            const searchResults = await getDiscoverData(search, \\\'all\\\', 1, signal);
            store.dispatch(\\\'setSearchResults\\\', searchResults);
        } catch (error) {
            if (error.name === \\\'AbortError\\\') {
                console.log(\\\'Fetch aborted\\\');
            } else {
                console.error(\\\'Error fetching search results:\\\', error);
            }
        }
    }, 300); // Adjust the delay (in milliseconds) as needed
    
    $(document).on(\\\'change input paste\\\', \\\'#discover-search\\\', debouncedSearch);
    
    // Function to render a list of items in the DOM
    function renderList(container, items, renderItem) {
        container.innerHTML = \\\'\\\';
    
        const noResultsMessage = \\\'<li><strong>No results found</strong></li>\\\';
    
        if (!items || items.length === 0) {
            container.innerHTML = noResultsMessage;
            return;
        }
    
        // Render each item
        items.forEach(item => {
            const li = document.createElement(\\\'li\\\');
            li.innerHTML = renderItem(item);
            container.appendChild(li);
        });
    }
    
    // Function to render the search results
    function renderSearchResults(searchResults) {
        const eventsContainer = document.querySelector(\\\'#events-results .list ul\\\');
        const usersContainer = document.querySelector(\\\'#users_vehicles-results .list ul\\\');
        const venuesContainer = document.querySelector(\\\'#venues-results .list ul\\\');
        const topContainer = document.querySelector(\\\'#top-results .list\\\');
    
        // Ensure containers are cleared before rendering
        eventsContainer.innerHTML = \\\'\\\';
        usersContainer.innerHTML = \\\'\\\';
        venuesContainer.innerHTML = \\\'\\\';
        topContainer.innerHTML = \\\'\\\';
    
        // Render events
        if (searchResults.events) {
            renderList(eventsContainer, searchResults.events.data, event => `
                <a class=\\\"item-link search-result item-content\\\" href=\\\"/discover-view-event/${event.id}\\\">
                    <div class=\\\"item-media\\\">
                        <div class=\\\"image-square image-rounded\\\" style=\\\"background-image:url(\\\'${event.thumbnail}\\\')\\\"></div>
                    </div>
                    <div class=\\\"item-inner\\\">
                        <div class=\\\"item-title\\\">${event.name}</div>
                    </div>
                </a>
            `);
        }
    
        // Render users
        if (searchResults.users) {
            renderList(usersContainer, searchResults.users.data, (user) => {
                const userLink = user.type == \\\'user\\\' ? \\\'/profile-view/\\\' + user.id : \\\'/profile-garage-vehicle-view/\\\' + user.id;
                let contentText;
    
                if (user.type == \\\'user\\\') {
                    contentText = `${user.name} (${user.username})`;
                }
    
                if (user.type == \\\'vehicle\\\') {
                    contentText = `${user.name}\\\'s <b>${user.meta.make} ${user.meta.model}</b>`;
                }
    
                return `
                    <a class=\\\"item-link search-result item-content\\\" href=\\\"${userLink}\\\">
                        <div class=\\\"item-media\\\">
                            <div class=\\\"image-square image-rounded\\\" style=\\\"background-image:url(\\\'${user.thumbnail || \\\'assets/img/profile-placeholder.jpg\\\'}\\\')\\\"></div>
                        </div>
                        <div class=\\\"item-inner\\\">
                            <div class=\\\"item-title\\\">${contentText}</div>
                        </div>
                    </a>`
            });
        }
    
        // Render venues
        if (searchResults.venues) {
            renderList(venuesContainer, searchResults.venues.data, venue => `
                <a class=\\\"item-link search-result item-content\\\" href=\\\"/discover-view-venue/${venue.id}\\\">
                    <div class=\\\"item-media\\\">
                        <div class=\\\"image-square image-rounded\\\" style=\\\"background-image:url(\\\'${venue.thumbnail}\\\')\\\"></div>
                    </div>
                    <div class=\\\"item-inner\\\">
                        <div class=\\\"item-title\\\">${venue.name} - ${venue.venue_location}</div>
                    </div>
                </a>
            `);
        }
    
        // Render top results
        let hasTopResults = false;
    
        if (searchResults.top_results) {
            if (searchResults.top_results.events && searchResults.top_results.events.length > 0) {
                hasTopResults = true;
                const eventSubList = document.createElement(\\\'ul\\\');
                const heading = document.createElement(\\\'h2\\\');
    
                heading.innerHTML = \\\'Trending Events\\\';
                heading.classList.add(\\\'section-title\\\', \\\'mt-3\\\', \\\'mb-2\\\');
                topContainer.appendChild(heading);
                topContainer.appendChild(eventSubList);
    
                renderList(eventSubList, searchResults.top_results.events, event => `
                    <a class=\\\"item-link search-result item-content\\\" href=\\\"/discover-view-event/${event.id}\\\">
                        <div class=\\\"item-media\\\">
                            <div class=\\\"image-square image-rounded\\\" style=\\\"background-image:url(\\\'${event.thumbnail}\\\')\\\"></div>
                        </div>
                        <div class=\\\"item-inner\\\">
                            <div class=\\\"item-title\\\">${event.name}</div>
                        </div>
                    </a>
                `);
            }
    
            if (searchResults.top_results.users && searchResults.top_results.users.length > 0) {
                hasTopResults = true;
    
                const userSubList = document.createElement(\\\'ul\\\');
                const heading = document.createElement(\\\'h2\\\');
    
                heading.innerHTML = \\\'Trending Users\\\';
                heading.classList.add(\\\'section-title\\\', \\\'mt-3\\\', \\\'mb-2\\\');
                topContainer.appendChild(heading);
                topContainer.appendChild(userSubList);
    
                renderList(userSubList, searchResults.top_results.users, (user) => {
                    const userLink = user.type == \\\'user\\\' ? \\\'/profile-view/\\\' + user.id : \\\'/profile-garage-vehicle-view/\\\' + user.id;
                    let contentText;
    
                    if (user.type == \\\'user\\\') {
                        contentText = `${user.name} (${user.username})`;
                    }
    
                    if (user.type == \\\'vehicle\\\') {
                        contentText = `${user.name}\\\'s <b>${user.meta.make} ${user.meta.model}</b>`;
                    }
    
                    return `
                    <a class=\\\"item-link search-result item-content\\\" href=\\\"${userLink}\\\">
                        <div class=\\\"item-media\\\">
                            <div class=\\\"image-square image-rounded\\\" style=\\\"background-image:url(\\\'${user.thumbnail || \\\'assets/img/profile-placeholder.jpg\\\'}\\\')\\\"></div>
                        </div>
                        <div class=\\\"item-inner\\\">
                            <div class=\\\"item-title\\\">${contentText}</div>
                        </div>
                    </a>`
                });
            }
    
            if (searchResults.top_results.venues && searchResults.top_results.venues.length > 0) {
                hasTopResults = true;
    
                const venueSubList = document.createElement(\\\'ul\\\');
                const heading = document.createElement(\\\'h2\\\');
    
                heading.innerHTML = \\\'Trending Venues\\\';
                heading.classList.add(\\\'section-title\\\', \\\'mt-3\\\', \\\'mb-2\\\');
    
                topContainer.appendChild(heading);
                topContainer.appendChild(venueSubList);
    
                renderList(venueSubList, searchResults.top_results.venues, venue => `
                    <a class=\\\"item-link search-result item-content\\\" href=\\\"/discover-view-venue/${venue.id}\\\">
                        <div class=\\\"item-media\\\">
                            <div class=\\\"image-square image-rounded\\\" style=\\\"background-image:url(\\\'${venue.thumbnail}\\\')\\\"></div>
                        </div>
                        <div class=\\\"item-inner\\\">
                            <div class=\\\"item-title\\\">${venue.name} - ${venue.venue_location}</div>
                        </div>
                    </a>
                `);
            }
        }
    
        if (!hasTopResults) {
            topContainer.innerHTML = \\\'<div><strong>No top results found</strong></div>\\\';
        }
    }
    
    searchResultsStore.onUpdated((results) => {
        renderSearchResults(results);
    });
    Add JS Function Name