• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    פתרון לבאג של הקראת "ביוני" בקריין החדש

    עזרה הדדית למשתמשים מתקדמים
    3
    16
    136
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • מ. מ. פליישער
      מ. מ. פליישער ניהול @זאביק נערך לאחרונה על ידי

      @זאביק כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

      @מ-מ-פליישער יש לי את כל סוגי התאריכים, ולאו דווקא 14 ביוני

      ברוררר זה סתם דוגמא כי אתה כתבת את זה.
      רגע שאבין. יש לך נתון מהמסד נתונים. כמו תא קולי. נתון משתנה. לולאה וודעבר שזה יהיה.
      וזה בפורמט שרשמת וימות זה הפוך.

      let dbDate = ...
      

      מה שהבאתי פשוט הופך ומתאים אותו לימות. בעיקרון אפשרי לעשות גם עם הספרייה של moment בנוד אבל כאן זה הפיתרון הכי פשוט. בתקווה שזה באמת לא אמור להשתנות. פשוט אתה לוקח את הסטרינג של התאריך ועושה "רוורס" כדי שיותאם לימות. קלי קלות.

      מקווה שהובנתי.

      אהבת ישראל & ivrTOP - מרכזייה טלפונית חכמה.
      אתר: אהבת.ישראל | מייל: cs@ivrtop.com

      מ. מ. פליישער תגובה 1 תגובה אחרונה תגובה ציטוט 2
      • מ. מ. פליישער
        מ. מ. פליישער ניהול @מ. מ. פליישער נערך לאחרונה על ידי

        @מ-מ-פליישער כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

        @זאביק כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

        @מ-מ-פליישער יש לי את כל סוגי התאריכים, ולאו דווקא 14 ביוני

        ברוררר זה סתם דוגמא כי אתה כתבת את זה.
        רגע שאבין. יש לך נתון מהמסד נתונים. כמו תא קולי. נתון משתנה. לולאה וודעבר שזה יהיה.
        וזה בפורמט שרשמת וימות זה הפוך.

        let dbDate = ...
        

        מה שהבאתי פשוט הופך ומתאים אותו לימות. בעיקרון אפשרי לעשות גם עם הספרייה של moment בנוד אבל כאן זה הפיתרון הכי פשוט. בתקווה שזה באמת לא אמור להשתנות. פשוט אתה לוקח את הסטרינג של התאריך ועושה "רוורס" כדי שיותאם לימות. קלי קלות.

        מקווה שהובנתי.

        נגיד
        let date = "2025/05/27";
        let date1 = "2125/05/27";
        date.split("/").reverse()
        ואותו דבר גם על השני. בקיצור מה שהבאתי תעשה עליו טסט

        אהבת ישראל & ivrTOP - מרכזייה טלפונית חכמה.
        אתר: אהבת.ישראל | מייל: cs@ivrtop.com

        ז תגובה 1 תגובה אחרונה תגובה ציטוט 1
        • ז
          זאביק @מ. מ. פליישער נערך לאחרונה על ידי

          @מ-מ-פליישער

          למעשה הקוד שלי כעת נראה כך (כלומר הקטע הרלוונטי מתוך קוד ארוך מאוד):

                  //date to string
                  const date = new Date(result.evictionDate);
                  const optionsDate = { year: 'numeric', month: 'long', day: 'numeric' };
          
          
          
                    { type: "text", data: "בתאריך" },
                    { type: "text", data: date.toLocaleDateString("iw-IL", optionsDate) },
          
          
          
          
          
          

          ואודה לך מאוד, אם תוכל להראות לי כיצד להכניס לתוך הקוד בצורה מדוייקת את הקוד של הרוורס, ומה עוד צריך לשנות בקוד המקורי (חוץ מהשינוי של TEXT ל DATE) בשביל שיהיה תקין עם הקוד של הרוורס,

          תודה רבה!!!

          א תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • א
            אביי ורבא @זאביק נערך לאחרונה על ידי

            @זאביק כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

            date.toLocaleDateString("iw-IL", optionsDate)

            קודם כל אולי כדאי לאמת שהסטרינג אכן מכיל את המילה "ביוני" 😃
            תוסיף קונסול לוג לערך של date.toLocaleDateString("iw-IL", optionsDate)

            למעשה, אני מצרף קוד מלא עבור nodejs שכתבתי לאחת האפליקציות שלי, ככה זה יעבוד לך לא רק על "ביוני", אלא על רשימה שתוכל לעדכן בקלות,

            בהפעלה של האפליקציה נטענת רשימת מילים מקובץ dictionary.csv שנראה ככה:

            תּוֹדָה,תודה
            אַחֵר,אחר
            יַעֲקֹב לַנְדֳּא,יעקב לנדא
            

            (המבנה פשוט - הערך החדש, הערך הקיים שאנחנו רוצים להחליף)

            כעת צריך ליצור קובץ dictionary.js שהוא בעצם מכיל את כל הקוד הדרוש, פונקציה לטעינה של הערכים מהcsv, פונקציה לרענון מחדש של הרשימה, ופונקציית replaceTextDictionary שמבצעת את ההחלפה עצמה,

            import { readFileSync } from 'fs';
            import { join } from 'path';
            import { fileURLToPath } from 'url';
            import { dirname } from 'path';
            
            // Get the directory name of the current module
            const __filename = fileURLToPath(import.meta.url);
            const __dirname = dirname(__filename);
            
            // Map to store the dictionary data
            let dictionaryMap = new Map();
            
            /**
             * Loads dictionary data from CSV file into a map
             * @returns {Map} The dictionary map
             */
            function loadDictionary() {
                try {
                    // Read the CSV file
                    const csvPath = join(__dirname, 'dictionary.csv');
                    const csvData = readFileSync(csvPath, 'utf8');
                    
                    // Split the CSV data into rows
                    const rows = csvData.split('\n');
                    
                    // Process each row
                    rows.forEach(row => {
                        if (!row.trim()) return; // Skip empty rows
                        
                        // Split the row into columns
                        const columns = row.split(',');
                        
                        if (columns.length < 2) return; // Skip rows with insufficient data
                        
                        // The first column is the value
                        const value = columns[0].trim();
                        
                        // The remaining columns are keys
                        for (let i = 1; i < columns.length; i++) {
                            const key = columns[i].trim();
                            if (key) {
                                dictionaryMap.set(key, value);
                            }
                        }
                    });
                    
                    return dictionaryMap;
                } catch (error) {
                    console.error('Error loading dictionary:', error);
                    return new Map();
                }
            }
            
            /**
             * Replaces text based on the dictionary map
             * @param {string} text - The text to process
             * @returns {string} - The processed text with replacements
             */
            function replaceTextDictionary(text) {
                if (!text) return text;
                
                // Ensure the dictionary is loaded
                if (dictionaryMap.size === 0) {
                    loadDictionary();
                }
                
                // Sort keys by length in descending order to handle longer matches first
                // This is crucial for cases where one key is a substring of another
                // For example, "לאלתר ספרים" should be checked before "אלתר"
                const sortedKeys = Array.from(dictionaryMap.keys()).sort((a, b) => b.length - a.length);
                
                let result = text;
                
                // Process each key in the dictionary
                for (const key of sortedKeys) {
                    // For Hebrew text, we need a different approach than word boundaries
                    // We'll use a regex that matches the key surrounded by word boundaries or space/punctuation
                    const pattern = `(^|\\s|[\\p{P}])(${escapeRegExp(key)})($|\\s|[\\p{P}])`;
                    const regex = new RegExp(pattern, 'gu');
                    
                    // Replace while preserving the surrounding characters
                    result = result.replace(regex, (match, before, word, after) => {
                        return `${before}${dictionaryMap.get(key)}${after}`;
                    });
                }
                
                return result;
            }
            
            /**
             * Escapes special characters in a string for use in a regular expression
             * @param {string} string - The string to escape
             * @returns {string} - The escaped string
             */
            function escapeRegExp(string) {
                return string.replace(/[.*+?^${}()|[]\]/g, '\\$&');
            }
            
            // Load the dictionary when the module is imported
            loadDictionary();
            
            // Export functions
            export { loadDictionary, replaceTextDictionary };
            export const getDictionaryMap = () => dictionaryMap;
            

            והשימוש בפועל פשוט,
            לייבא את הפונקציה, ולשלוח את הסטרינג לטיפול,

            import { replaceTextDictionary } from './dictionary.js';
            
            //date to string
            const date = new Date(result.evictionDate);
            const optionsDate = { year: 'numeric', month: 'long', day: 'numeric' };
            
            { type: "text", data: "בתאריך" },
            { type: "text", data: replaceTextDictionary(date.toLocaleDateString("iw-IL", optionsDate)) },
            

            ואגב, לגוף ההצעה של @מ-מ-פליישער אתה יכול לקבל את התאריך בפורמט של dd/MM/YYYY ישירות באמצעות שינוי של הoptionsDate

            const optionsDate = { 
                year: 'numeric', 
                month: '2-digit', 
                day: '2-digit' 
            };
            

            תגובה 1 תגובה אחרונה תגובה ציטוט 1
            • א
              אביי ורבא @זאביק נערך לאחרונה על ידי

              @זאביק כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

              @מ-מ-פליישער

              למעשה הקוד שלי כעת נראה כך (כלומר הקטע הרלוונטי מתוך קוד ארוך מאוד):

                      //date to string
                      const date = new Date(result.evictionDate);
                      const optionsDate = { year: 'numeric', month: 'long', day: 'numeric' };
              
              
              
                        { type: "text", data: "בתאריך" },
                        { type: "text", data: date.toLocaleDateString("iw-IL", optionsDate) },
              
              
              
              
              
              

              ואודה לך מאוד, אם תוכל להראות לי כיצד להכניס לתוך הקוד בצורה מדוייקת את הקוד של הרוורס, ומה עוד צריך לשנות בקוד המקורי (חוץ מהשינוי של TEXT ל DATE) בשביל שיהיה תקין עם הקוד של הרוורס,

              תודה רבה!!!

              לא צריך את ההיפוך, מספיק לשנות את optionsDate,

              const optionsDate = { year: 'numeric', month: '2-digit', day: '2-digit' };
              
              ז תגובה 1 תגובה אחרונה תגובה ציטוט 1
              • ז
                זאביק @אביי ורבא נערך לאחרונה על ידי

                @אביי-ורבא

                @אביי-ורבא כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

                לא צריך את ההיפוך, מספיק לשנות את optionsDate,

                ניסיתי לשנות כפי שכתבת בהודעה האחרונה, ולא היה תקין, (לא בפונקציית TEXT ולא ב DATE)

                א תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • א
                  אביי ורבא @זאביק נערך לאחרונה על ידי

                  @זאביק מה לא היה תקין?
                  תצרף הדפסה של הערך לפני ואחרי

                  ז תגובה 1 תגובה אחרונה תגובה ציטוט 1
                  • ז
                    זאביק @אביי ורבא נערך לאחרונה על ידי

                    @אביי-ורבא אינני מתכנת (ואיני יודע להדפיס את הערך), אבל למעשה כשביצעתי את השינוי בקוד כנ"ל, והתקשרתי שוב למערכת, - ראיתי שבמיקום הספציפי של הקראת התאריך הנ"ל, השתרר שקט ארוך למשך זמן רב.

                    א תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • א
                      אביי ורבא @זאביק נערך לאחרונה על ידי

                      @זאביק תוסיף אחרי 2 השורות הראשונות בדוגמה שהבאת

                      console.log(date)
                      console.log(optionsDate)
                      

                      ותעלה לכאן את הפלט שתראה בקונסול (כמובן אחרי שתחייג למערכת ותגיע למקום שהוא אמור להקריא את זה)

                      ז תגובה 1 תגובה אחרונה תגובה ציטוט 1
                      • ז
                        זאביק @אביי ורבא נערך לאחרונה על ידי

                        @אביי-ורבא כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

                        ותעלה לכאן את הפלט שתראה בקונסול

                        גם את זה עדיין אינני יודע כיצד לבצע...

                        תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • ז
                          זאביק נערך לאחרונה על ידי

                          @אביי-ורבא @מ-מ-פליישער

                          תודה רבה על כל הסיוע,

                          (למעשה, בינתיים הקריין הישן חזר לקריין כהוגן)

                          תודה רבה!!

                          תגובה 1 תגובה אחרונה תגובה ציטוט 0
                          • פוסט ראשון
                            פוסט אחרון