Цифровой помощник фермера

Справочники

Пестициды Химические классы Действующие вещества Удобрения Элементы удобрений Культуры Семена Вредные объекты Индексы
Справочники у вас в кармане! Больше не нужно листать десятки сайтов.

Устали искать актуальную информацию по препаратам? GOLD решает это!

Наша нейросеть gEPA сделала для вас: собрала информацию, проверила и структурировала данные в удобные справочники по пестицидам, удобрениям и семенам.

Можно подобрать по названию, культуре, действующему веществу или вредителю — всегда быстро и точно.

Всё работает даже без интернета и постоянно обновляется. Сохраняйте данные из справочников прямо в свои заметки и дополняйте своими исследованиями!
Оформите GOLD и получите доступ к базе знаний 24/7.
Подписки

EcoPlant Agro

Теперь добавление делянок доступно офлайн!

все обновления

Быстрые кнопки

`); } function ensureUrlPrefix(item) { const prefix = 'https://ru.ecoplantagro.com/'; if (!item.url) { item.url = prefix; return item; } if (!item.url.startsWith(prefix)) { item.url = prefix + (item.url.startsWith('/') ? item.url.substring(1) : item.url); } return item; } // Функция для преобразования URL в SPA-формат и сохранения ID function processItemForSpa(item) { const url = ensureUrlPrefix(item.url); let spaUrl = url; let idToSave = null; let storageKey = null; // Обработка пестицидов if (url.includes('/pesticide/product/')) { const match = url.match(/\/pesticide\/product\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/pesticide/product/'; idToSave = match[1]; storageKey = 'currentProductId'; } } // Обработка объектов else if (url.includes('/grobject/') && !url.includes('/group/')) { const match = url.match(/\/grobject\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/object/'; idToSave = match[1]; storageKey = 'currentObjectId'; } } // Обработка групп объектов else if (url.includes('/grobject/group/')) { const match = url.match(/\/grobject\/group\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/grobject/group/'; idToSave = match[1]; storageKey = 'currentGroupId'; } } // Обработка культур else if (url.includes('/cultures/')) { const match = url.match(/\/cultures\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/culture-spa/'; idToSave = match[1]; storageKey = 'currentCulturesId'; } } // Обработка элементов удобрений else if (url.includes('/fertiliser/elements/')) { const match = url.match(/\/fertiliser\/elements\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/fertiliser/elements/'; idToSave = match[1]; storageKey = 'currentElementsId'; } } // Обработка удобрений else if (url.includes('/fertiliser/') && !url.includes('/elements/')) { const match = url.match(/\/fertiliser\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/fertiliser_spa/'; idToSave = match[1]; storageKey = 'currentFertiliserId'; } } // Обработка механизмов действия else if (url.includes('/modeaction/')) { const match = url.match(/\/modeaction\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/modeaction/'; idToSave = match[1]; storageKey = 'currentModeactionId'; } } // Обработка действующих веществ else if (url.includes('/substance/')) { const match = url.match(/\/substance\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/substance/'; idToSave = match[1]; storageKey = 'currentSubstanceId'; } } // Обработка химических классов else if (url.includes('/chem-class/')) { const match = url.match(/\/chem-class\/([^\/?]+)/); if (match && match[1]) { spaUrl = 'https://ru.ecoplantagro.com/chem-class/'; idToSave = match[1]; storageKey = 'currentChemClass'; } } return { originalUrl: url, spaUrl: spaUrl, idToSave: idToSave, storageKey: storageKey, item: item }; } // Функция для обработки клика function handleSpaClick(processedData) { // Сохраняем ID в localStorage if (processedData.idToSave && processedData.storageKey) { localStorage.setItem(processedData.storageKey, processedData.idToSave); } // Отправляем сообщение для перехода if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.linkClickedVerif) { window.webkit.messageHandlers.linkClickedVerif.postMessage( `${processedData.spaUrl}?bg_token=${bgToken}` ); } return false; } function displayResults(results, query) { const $resultsContainer = $('.search_autocomplete'); $resultsContainer.empty(); const groupedResults = results.reduce((acc, result) => { if (!acc[result.type]) { acc[result.type] = []; } acc[result.type].push(result); return acc; }, {}); let hasResults = false; for (const type in groupedResults) { if (groupedResults[type].length > 0) { hasResults = true; $resultsContainer.append(`

${type.charAt(0).toUpperCase() + type.slice(1)}

`); // Очистка дубликатов в текущей категории const uniqueItems = []; const seenNames = new Set(); groupedResults[type].forEach(item => { if (!seenNames.has(item.name)) { seenNames.add(item.name); uniqueItems.push(item); } }); // Используем только уникальные элементы uniqueItems.forEach(item => { const processed = processItemForSpa(item); // Создаем уникальный ID для обработчика const clickId = `click_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; // Создаем элемент const itemHtml = `
${item.name}
`; $resultsContainer.append(itemHtml); // Вешаем обработчик после добавления элемента в DOM setTimeout(() => { const element = document.getElementById(clickId); if (element) { element.addEventListener('click', function(e) { e.preventDefault(); handleSpaClick(processed); }); // Для совместимости с onclick element.onclick = function(e) { e.preventDefault(); handleSpaClick(processed); return false; }; } }, 0); }); } } if (!hasResults) { $resultsContainer.append(`
Результатов по запросу: ${query} не найдено.
`); } } $(document).on('click', '.custom-link', function(event) { event.preventDefault(); // Отменяем стандартное поведение ссылки const url = $(this).data('url'); // Получаем URL из атрибута data-url window.webkit.messageHandlers.linkClicked.postMessage(url); // Вызываем метод с URL }); function searchResultsNew() { if (navigator.onLine) { const query = document.querySelector('input[name="query"]').value; searchResults(); if (query.length >= 2 && query.length < 142) { $.post( PATH + "/cropScience/search/", { query: query, }, function (data) { $(".search_autocomplete").html(data); } ); } } else { noSearchOffline(); } } function searchResults() { const query = ""; fetch('/search_page.php', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query }), }) .then(response => response.json()) .then(data => { window.webkit.messageHandlers.fetchData.postMessage(data); // Создаем отметку о скачивании на 2 недели const twoWeeks = 14 * 24 * 60 * 60 * 1000; // 2 недели в миллисекундах const expiryDate = new Date().getTime() + twoWeeks; localStorage.setItem('downloaded', expiryDate.toString()); }) .catch(error => { console.error('Error:', error); }); } function openSearch() { const query = document.querySelector('input[name="query"]').value; // Проверяем, что длина query больше 3 символов if (query.length >= 2) { window.webkit.messageHandlers.fromCoreData.postMessage(query); } }; $(".search_input").keyup(function () { const query = document.querySelector('input[name="query"]').value; // Проверяем, что длина query больше 3 символов if (query.length >= 2) { window.webkit.messageHandlers.fromCoreData.postMessage(query); } }); } else { function openSearch() { const query = document.querySelector('input[name="query"]]').value; if (query.length >= 2 && query.length < 142) { $.post( PATH + "/cropScience/search/", { query: query, }, function (data) { $(".search_autocomplete").html(data); } ); } }; $(".search_input").keyup(function () { const query = $(this).val().toLowerCase(); if (query.length >= 2 && query.length < 142) { $.post( PATH + "/cropScience/search/", { query: query, }, function (data) { $(".search_autocomplete").html(data); //displayResults(data, query); } ); } }); }