Add custom ranges to litepicker
This commit is contained in:
		
							parent
							
								
									2c0fafefea
								
							
						
					
					
						commit
						faf4f48e75
					
				@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					import json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from datetime import datetime, time
 | 
					from datetime import datetime, time
 | 
				
			||||||
from urllib.parse import urlparse
 | 
					from urllib.parse import urlparse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -23,8 +25,56 @@ class DateRangeMixin:
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            return timezone.now()
 | 
					            return timezone.now()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_date_ranges(self):
 | 
				
			||||||
 | 
					        now = timezone.now()
 | 
				
			||||||
 | 
					        return [
 | 
				
			||||||
 | 
					            {'name': 'Today', 'start': now, 'end': now},
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'Yesterday',
 | 
				
			||||||
 | 
					                'start': now - timezone.timedelta(days=1),
 | 
				
			||||||
 | 
					                'end': now - timezone.timedelta(days=1),
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'Last 7 days',
 | 
				
			||||||
 | 
					                'start': now - timezone.timedelta(days=7),
 | 
				
			||||||
 | 
					                'end': now,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'Last 30 days',
 | 
				
			||||||
 | 
					                'start': now - timezone.timedelta(days=30),
 | 
				
			||||||
 | 
					                'end': now,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'Last 90 days',
 | 
				
			||||||
 | 
					                'start': now - timezone.timedelta(days=90),
 | 
				
			||||||
 | 
					                'end': now,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'This month',
 | 
				
			||||||
 | 
					                'start': now.replace(day=1),
 | 
				
			||||||
 | 
					                'end': now,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'Last month',
 | 
				
			||||||
 | 
					                'start': now.replace(day=1, month=now.month - 1),
 | 
				
			||||||
 | 
					                'end': now.replace(day=1, month=now.month) - timezone.timedelta(days=1),
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'This year',
 | 
				
			||||||
 | 
					                'start': now.replace(day=1, month=1),
 | 
				
			||||||
 | 
					                'end': now,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                'name': 'Last year',
 | 
				
			||||||
 | 
					                'start': now.replace(day=1, month=1, year=now.year - 1),
 | 
				
			||||||
 | 
					                'end': now.replace(day=1, month=1) - timezone.timedelta(days=1),
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_context_data(self, **kwargs):
 | 
					    def get_context_data(self, **kwargs):
 | 
				
			||||||
        data = super().get_context_data(**kwargs)
 | 
					        data = super().get_context_data(**kwargs)
 | 
				
			||||||
        data["start_date"] = self.get_start_date()
 | 
					        data["start_date"] = self.get_start_date()
 | 
				
			||||||
        data["end_date"] = self.get_end_date()
 | 
					        data["end_date"] = self.get_end_date()
 | 
				
			||||||
 | 
					        data["date_ranges"] = self.get_date_ranges()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return data
 | 
					        return data
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,16 @@
 | 
				
			|||||||
        maxDate: new Date(),
 | 
					        maxDate: new Date(),
 | 
				
			||||||
        startDate: Date.parse(document.getElementById("startDate").getAttribute("value")),
 | 
					        startDate: Date.parse(document.getElementById("startDate").getAttribute("value")),
 | 
				
			||||||
        endDate: Date.parse(document.getElementById("endDate").getAttribute("value")),
 | 
					        endDate: Date.parse(document.getElementById("endDate").getAttribute("value")),
 | 
				
			||||||
 | 
					        ranges: {
 | 
				
			||||||
 | 
					            customRanges: {
 | 
				
			||||||
 | 
					                {% for date_range in date_ranges %}
 | 
				
			||||||
 | 
					                    '{{ date_range.name }}': [
 | 
				
			||||||
 | 
					                        new Date('{{ date_range.start.isoformat }}'),
 | 
				
			||||||
 | 
					                        new Date('{{ date_range.end.isoformat }}')
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                {% endfor %}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    picker.on('selected', (startDate, endDate) => {
 | 
					    picker.on('selected', (startDate, endDate) => {
 | 
				
			||||||
        document.getElementById("startDate").setAttribute("value", startDate.getFullYear() +
 | 
					        document.getElementById("startDate").setAttribute("value", startDate.getFullYear() +
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user