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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. סינון מותאם אישית בdatatables

סינון מותאם אישית בdatatables

מתוזמן נעוץ נעול הועבר תכנות
16 פוסטים 4 כותבים 352 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי כמה בעיות במיון וסינון הטבלה בעמודת התאריכים,

    1. המיון הוא לפי טקסט, ז"א שסדר התאריכים המופיע הוא:
    • 02/09/2019
    • 01/12/2019
    • 01/08/2019
    1. עשיתי שדה מותאם אישית לסינון העמודות בטבלה (עפ"י הדוגמא הזו) כשערכי עמודת התאריך בטבלה מסוננות ל'לא יאוחר מהמופיע בשדה X שבמסך'.
      אבל הסינון לא יוצא טוב (רק חלק מהרשומות יוצאות). לא יודע להגדיר אלו רשומות יוצאות.

    בנוסף, אם אני הפרמטר לסינון (השדה שבמסך שלי) לתאריך הכי מאוחר שיתכן, אז אני מקבל טבלה ריקה 12-31-2020
    ובין אם אני מגדיר 31-12-2020

    הקוד

    $.fn.dataTable.ext.search.push(
    		
    		function( settings, data, dataIndex ) {
    	
    			
    			date = new Date()
    			//var max = $('#max').val(date.getDate()+'-'+ date.getMonth()+'-'+ (date.getFullYear()));
    			var max = $('#max').val();
    
    			var coldate = data[8] ; 
    			var coldate = coldate.replace("/", '-')
    			var coldate = coldate.replace("/", '-')
    			//console.log(age)
    			//console.log(Date.parse(age) + '**' + Date.parse(max))
    			
    
    			if(Date.parse(coldate) <= Date.parse(max)) {
    				//console.log(true);
    				return true;
    			}
    			//console.log(false);
    			return false;
    
    		}
    	);
    
    
    תגובה 1 תגובה אחרונה
    0
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2

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

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      1
      • chagoldC מנותק
        chagoldC מנותק
        chagold
        כתב ב נערך לאחרונה על ידי
        #3

        כוונתך שאכניס ערך לשדה MAX או דוגמא באחד מאתרי הJS ONLINE?

        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          אין לי מושג אני אפילו לא בדקתי בלי קוד קשה לי לשחק.

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          chagoldC תגובה 1 תגובה אחרונה
          0
          • chagoldC מנותק
            chagoldC מנותק
            chagold
            השיב לdovid ב נערך לאחרונה על ידי chagold
            #5

            https://jsfiddle.net/m6zynquh/

            תודה

            dovidD תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              השיב לchagold ב נערך לאחרונה על ידי
              #6

              @chagold התאריכים בדוגמה שלך הם בפורמט לא סטנדרטי (yyyy/mm/dd).
              מפריע לך שהם יהיו בפורמט הקלאסי של dd/mm/yyyy (בדיוק הפוך)?
              נראה לי שזה יסדר את הבעיה בלי צורך בקוד נוסף.
              כמו"כ תעבור על דף זה https://datatables.net/blog/2014-12-18 זה נראה שזה נותן שכלולים מעניינים.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              chagoldC yossizY 2 תגובות תגובה אחרונה
              2
              • chagoldC מנותק
                chagoldC מנותק
                chagold
                השיב לdovid ב נערך לאחרונה על ידי
                #7

                @dovid שיניתי את הפורמט
                https://jsfiddle.net/o9hcxLq2/

                yossizY תגובה 1 תגובה אחרונה
                0
                • yossizY מחובר
                  yossizY מחובר
                  yossiz
                  השיב לchagold ב נערך לאחרונה על ידי
                  #8

                  @chagold
                  אתה מצביע על העמודה הלא נכונה של הדאטה:
                  במקום:

                  var coldate = data[2] 
                  

                  תעשה:

                  var coldate = data[4]
                  

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  3
                  • chagoldC מנותק
                    chagoldC מנותק
                    chagold
                    כתב ב נערך לאחרונה על ידי
                    #9

                    בדקתי שוב והתברר שהנתונים הוכנסו לד"ב בצורה שגויה (2003-10-19 במקום 03-10-2019)..
                    תודה רבה

                    תגובה 1 תגובה אחרונה
                    1
                    • chagoldC מנותק
                      chagoldC מנותק
                      chagold
                      כתב ב נערך לאחרונה על ידי chagold
                      #10

                      במקרה הזה: https://jsfiddle.net/d7zx80as/1/
                      כשאני שם תאריך לסינון, משום מה מוצגים 2732 רשומות מתוך 5,389.

                      221465f3-2d5c-4d07-a482-7707ac7f1b4a-image.png

                      תגובה 1 תגובה אחרונה
                      0
                      • yossizY מחובר
                        yossizY מחובר
                        yossiz
                        השיב לdovid ב נערך לאחרונה על ידי yossiz
                        #11

                        @dovid אמר בסינון מותאם אישית בdatatables:

                        @chagold התאריכים בדוגמה שלך הם בפורמט לא סטנדרטי (yyyy/mm/dd).
                        מפריע לך שהם יהיו בפורמט הקלאסי של dd/mm/yyyy (בדיוק הפוך)?
                        נראה לי שזה יסדר את הבעיה בלי צורך בקוד נוסף.

                        @dovid חבל שלא היית בוועדת ההיגוי של השפה... 🙂 כי גם אני סבור כמוך אבל למעשה נראה שזה בדיוק הפוך. yyyy/mm/dd ו-mm/dd/yyyy הם חוקיים, אבל dd/mm/yyyy לא חוקי...

                        var options = { year: 'numeric', month: 'long', day: 'numeric' }
                        
                        new Date('01/12/2020').toLocaleDateString('en-uk', options)
                        // "January 12, 2020"
                        new Date('12/01/2020').toLocaleDateString('en-uk', options)
                        // "December 1, 2020"
                        new Date('13/01/2020').toLocaleDateString('en-uk', options)
                        // "Invalid Date"
                        new Date('2020/12/01').toLocaleDateString('en-uk', options)
                        // "December 1, 2020"
                        

                        @chagold לעניינך, יוצא שיש לך מחרוזות תאריך ש-Date.parse לא יודעת לפרסר (כאשר ה"יום" - שמפורסר כחודש - הוא מ-13 ומעלה), לכן הם מחזירים NaN.
                        מכיון ש:

                        NaN <= NaN   //false
                        NaN <= 1     //false
                        1 <= NaN     //false
                        

                        לכן כל רשומה שה"יום" הוא מ-13+ מחזיר false.

                        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                        dovidD תגובה 1 תגובה אחרונה
                        4
                        • dovidD מחובר
                          dovidD מחובר
                          dovid ניהול
                          השיב לyossiz ב נערך לאחרונה על ידי
                          #12

                          @yossiz אח"כ שמתי לב לזה, אבל כבר לא היה לי כח כי תוסכלתי מהמרחק בין התיעוד לבין התוצאות שעלו לי בנסיונות.
                          כנראה זה משוגה שלי אבל בפועל כל מה שהם כתבו לא עבהד לי, למשל הם כותבים שמרבית הפלאגינים הם אוטמטיים בגלל פלאגין של autodetect ובפועל כלום לא היה לי אוטומטי, כמו"כ הם שמים את קוד date-euro שלא מפסיק התבוננתי בו אבל הוא פשוט לא עבד לי, בקיצור לא היה לי "עצבים"...

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          תגובה 1 תגובה אחרונה
                          3
                          • chagoldC מנותק
                            chagoldC מנותק
                            chagold
                            כתב ב נערך לאחרונה על ידי chagold
                            #13

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

                            או אולי - לא הבנתי (בכ"א במבט ראשון) איזה תנאי אני עושה לקלוט את הימים מעל 13 כדי להחזיר אותם לtrue?

                            @dovid ן @yossiz תודה עצומה על הנסיונות לפתור ולהתמודד לא רק עם קוד אלא גם עם שגיאות מעצבנות..

                            yossizY תגובה 1 תגובה אחרונה
                            0
                            • yossizY מחובר
                              yossizY מחובר
                              yossiz
                              השיב לchagold ב נערך לאחרונה על ידי yossiz
                              #14

                              @chagold אמר בסינון מותאם אישית בdatatables:

                              הבאגים שלי לא ניתנים לפיתרון

                              למה לא ניתנים לפיתרון?
                              הפתרון פשוט להביא את התאריך ל-Date.parse בפורמט הנכון.
                              אפשר להוסיף שורה זו להחליף את היום והחודש:

                              coldate = coldate.replace(/^(..\/)(..\/)/, '$2$1');
                              

                              עריכה: אני רואה שהשימוש ב-Date.parse הוא קצת בעייתי לשימוש בצורה חוצה דפדפנים כי אין כללים ברורים איך אמורים לפרסר את התאריך. הפורמט היחיד שמוגדר ב-ES5 הוא yyyy-mm-dd. יש ספרייה בשם moment.js עבור פרסור תאריכים.
                              עיין עוד:
                              https://stackoverflow.com/questions/51715259/what-are-valid-date-time-strings-in-javascript/
                              http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html

                              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                              תגובה 1 תגובה אחרונה
                              2
                              • clickoneC מנותק
                                clickoneC מנותק
                                clickone
                                כתב ב נערך לאחרונה על ידי
                                #15

                                כפיתרון אמצע מעצבן, הייתי מציע בינתיים להחזירר מהשרת עוד עמודת תאריך בפורמט שהוא מצפה לו, (ושיהיה מוסתר כמובן) ולעשות את הפילטר עליו.
                                נכון שזה עקום לבינתיים, אבל אם זה עושה לך בלגן עם הלקוח זה עדיף 😞

                                אין טסט כמו פרודקשן.

                                המייל שלי urivpn@gmail.com

                                chagoldC תגובה 1 תגובה אחרונה
                                1
                                • chagoldC מנותק
                                  chagoldC מנותק
                                  chagold
                                  השיב לclickone ב נערך לאחרונה על ידי
                                  #16

                                  @clickone זה מה שעשיתי בסוף.

                                  תגובה 1 תגובה אחרונה
                                  1

                                  בא תתחבר לדף היומי!
                                  • התחברות

                                  • אין לך חשבון עדיין? הרשמה

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