סקריפטים לתוסף Tampermonkey מבוססי GPT
-
ביקשתי ממנו שיצור לי כמה אופציות בלשונית רשימת צינתוקים
אחרי דין ודברים מייגע הוא הביא את התוצאה הבאה
בלחיצה על הכפתורים הוא מסדר את רשימת הצינתוקים לפי הסדר הרצוייש רק באג בסדר לפי תאריך צינתוק אחרון, שמשום מה הוא לא הצליח לסדר אותו, אשמח לעזרת המבינים
מצורף הקוד
// ==UserScript== // @name הוספת כפתורים ברשימות צינתוקים - ימות // @version 0.1 // @author ShlomoCode // @match https://www.call2all.co.il/ym/index.php?view=Tzintukim // @match https://private.call2all.co.il/ym/index.php?view=Tzintukim // @match https://www.call2all.co.il/ym/index.php?view=Tzintukim&action=getLogList&list=* // @match https://private.call2all.co.il/ym/index.php?view=Tzintukim&action=getLogList&list=* // ==/UserScript== (() => { // פונקציה להסתרת כפתורים כאשר אנחנו בדף של "צפה בדוח פעילות" const hideButtonsIfInLogPage = () => { if (location.search.includes('action=getLogList')) { $('#buttonContainer').hide(); // הסתרת הכפתורים } else { $('#buttonContainer').show(); // הצגת הכפתורים מחדש אם אנחנו לא בדף של "צפה בדוח פעילות" } }; // זו הפונקציה שמביאה את התאריך מכל כפתור "צפה בדוח פעולות" const getLastTzintukDate = (row) => { const viewLogButton = row.querySelector('td:nth-child(5) button'); // כפתור "צפה בדוח פעולות" if (!viewLogButton) return null; // לחיצה על כפתור "צפה בדוח פעולות" viewLogButton.click(); // דחיית הפעולה על מנת לתת לדיאלוג זמן להיטען return new Promise((resolve) => { setTimeout(() => { const dateElement = document.querySelector('.logTable td:nth-child(2)'); // assuming the date is in column 2 if (dateElement) { const lastDate = dateElement.textContent.trim(); resolve(new Date(lastDate)); // return the date } else { resolve(null); // אם לא נמצא תאריך } }, 1500); // המתנה של 1.5 שניות כדי לאפשר לדיאלוג להתעדכן }); }; // פונקציה שתחליף את כל הרשימה ותסדר לפי תאריך הצינתוק האחרון const sortTzintukimByDate = async () => { const rows = document.querySelectorAll('tr.listR'); const rowsWithDates = []; for (let row of rows) { const lastTzintukDate = await getLastTzintukDate(row); if (lastTzintukDate) { rowsWithDates.push({ row, date: lastTzintukDate }); } } // מיון הרשימות לפי תאריך הצינתוק rowsWithDates.sort((a, b) => b.date - a.date); // הצגת הרשימות המסודרות const sortedRows = rowsWithDates.map(item => item.row); document.querySelector('.scrollContent').append(...sortedRows); }; // כפתור לסידור לפי תאריך const sortButton = $('<button id="sortTzintukim">סדר לפי תאריך הצינתוק האחרון</button>'); sortButton.css({ 'padding': '10px', 'background-color': '#16638f', // הצבע כחול כהה 'color': 'white', 'border': 'none', 'border-radius': '5px', 'cursor': 'pointer', 'width': 'auto', 'z-index': '1000', 'margin': '10px' }); // הוספת כפתור לסידור הצינתוקים לפי תאריך sortButton.click(async () => { await sortTzintukimByDate(); // קריאה לפונקציה שתסדר את הצינתוקים }); // כפתור לסידור לפי גודל רשימה const sortSizeButton = $('<button id="sortSizeTzintukim">סדר לפי גודל הרשימה</button>'); sortSizeButton.css({ 'padding': '10px', 'background-color': '#16638f', // הצבע כחול כהה 'color': 'white', 'border': 'none', 'border-radius': '5px', 'cursor': 'pointer', 'width': 'auto', 'z-index': '1000', 'margin': '10px' }); // כפתור לסידור לפי שם הרשימה const sortNameButton = $('<button id="sortNameTzintukim">סדר לפי שם הרשימה</button>'); sortNameButton.css({ 'padding': '10px', 'background-color': '#16638f', // הצבע כחול כהה 'color': 'white', 'border': 'none', 'border-radius': '5px', 'cursor': 'pointer', 'width': 'auto', 'z-index': '1000', 'margin': '10px' }); // יצירת container עם flexbox עבור הכפתורים const buttonContainer = $('<div id="buttonContainer"></div>'); buttonContainer.css({ 'display': 'flex', 'justify-content': 'center', 'gap': '20px', 'margin-top': '20px' }); // הוספת הכפתורים לדף buttonContainer.append(sortButton); buttonContainer.append(sortSizeButton); buttonContainer.append(sortNameButton); // הוספת הכפתורים לאחר הכותרת של רשימות צינתוקים במודול צינתוקים חינמיים $('.admin-section').after(buttonContainer); // ממקם את הכפתורים מיד לאחר ה-`.admin-section` // פעולה שתתבצע כאשר לוחצים על כפתור "סדר לפי גודל רשימה" sortSizeButton.click(() => { const items = $('tr.listR') .detach() .sort((a, b) => { const aSize = parseInt(a.querySelector('td:nth-child(2)').innerText); // size of list const bSize = parseInt(b.querySelector('td:nth-child(2)').innerText); return bSize - aSize; // reverse order, from large to small }); // הצגת הרשימה המסודרת $('.scrollContent').append(items); }); // פעולה שתתבצע כאשר לוחצים על כפתור "סדר לפי שם הרשימה" sortNameButton.click(() => { const items = $('tr.listR') .detach() .sort((a, b) => { const aName = a.querySelector('td:nth-child(1)').innerText.toLowerCase(); const bName = b.querySelector('td:nth-child(1)').innerText.toLowerCase(); if (aName < bName) return -1; if (aName > bName) return 1; return 0; }); // הצגת הרשימה המסודרת $('.scrollContent').append(items); }); // פונקציה שתבדוק ותסדר את הכפתורים hideButtonsIfInLogPage(); // בדיקה האם להסתיר את הכפתורים })();
-
@פישל בפונקציה
getLastTzintukDate
הוא מנסה לעשות פעלול מוזר שנובע מזה שהוא לא הבין מה כפתור צפה בדו"ח עושה
תביא לו את תיעוד הAPI ותגיד לו שימשוך משם את הלוג פעולות -
@צדיק-תמים אכן, הוא באמת השתגע עם זה
אשמח אם תוכל להעלות לכאן את התיעוד הנצרך