// ==UserScript==
// @name Nextcloud:Show-Original-DB-User-ID
// @namespace http://tampermonkey.net/
// @version 2024-09-26
// @description Скрипт который добавляет кнопку в меню сайта, позволяющую извлекать и отображать ID элементов из списка, обновляя текстовые значения счетчиков на странице и выводя все ID в консоль.
// @author LukasEndigo
// @match https://*.lkaz.ru/apps/memories/facerecognition
// @icon https://nextcloud.com/c/uploads/2022/03/favicon.png
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Функция для обработки элементов
function processItems() {
// Ищем все элементы с классом vue-recycle-scroller__item-view
const items = document.querySelectorAll('.vue-recycle-scroller__item-view');
// Создаем массив для хранения всех lastPart
const ids = [];
items.forEach(function(item) {
// Находим элемент внутри текущего элемента
const linkElement = item.querySelector('a.cluster');
if (linkElement) {
// Извлекаем href из элемента и разбиваем его по "/"
const href = linkElement.getAttribute('href');
const parts = href.split('/');
const lastPart = parts[parts.length - 1]; // Последняя часть URL, то есть ID
// Находим элемент с классом counter-bubble__counter
const counterElement = item.querySelector('.counter-bubble__counter');
if (counterElement) {
// Получаем текущий текст (число)
const currentCount = counterElement.textContent.trim();
// Проверяем, является ли currentCount числом
if (!isNaN(currentCount) && currentCount !== '' && (lastPart/1)) {
// Вставляем текст " / ID=#ID" к числу
counterElement.textContent = `${currentCount} / ID=#${lastPart}`;
// Сохраняем lastPart в массив
ids.push(lastPart);
}
}
}
});
// Выводим все lastPart в консоль в одну строку, разделяя их запятыми
console.info(ids.join(','));
}
// Ожидаем загрузки страницы
window.addEventListener('load', function() {
// Ищем элемент ul с классом app-navigation__settings
const settingsMenu = document.querySelector('.app-navigation__settings');
if (settingsMenu) {
// Создаем новый элемент li
const newLi = document.createElement('li');
newLi.className = 'app-navigation-entry-wrapper'; // Добавляем класс как у других элементов
// Создаем содержимое li с flex-контейнером
newLi.innerHTML = `
`;
// Добавляем новый элемент в ul
settingsMenu.appendChild(newLi);
// Добавляем обработчик клика для новой ссылки
newLi.querySelector('a').addEventListener('click', function(e) {
e.preventDefault(); // Останавливаем переход по ссылке
processItems(); // Вызов функции показа уведомления
});
}
});
})();