Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC:

Datetime filter NOT WORKING in generated component 09 Jan 2014 07:26 #11947

I'm sorry to say this, but to be honest I always found the datetime filter a bit buggy and it never really worked to me (but maybe it was due to my settings in the jcook builder, not using the default values.), so I always tried to avoid to use it, now that I'm in need of it, I had to take a look on it.
By the way the datetime filter doesn't filter anything with my configuration, because the filter value is not converted to unixtime in the model list.

jcook Scenario:
- datetime filed with unixtime selected and format d-m-Y H:i:s
- filter "from date" - "to date" added in grid view
- submit on change, selected


generated component:
- UI perfectly working
- model list doesn't submit the unixtime to the DB query


bug caused by:
ROOT\administrator\components\com_mycomponent\models\myitemslist.php
		//Define the filterable fields
		$this->set('filter_vars', array(
			'creation_date_from' => 'cmd',
			'creation_date_to' => 'cmd',
			'sortTable' => 'cmd',
			'directionTable' => 'cmd',
			'limit' => 'cmd'
				));
with that code the function getUserStateFromRequest doesn't return the correct value for the datetime, so nothing can work.


fix:
		//Define the filterable fields
		$this->set('filter_vars', array(
			'creation_date_from' => 'string', /* hack */
			'creation_date_to' => 'string', /* hack */
			'sortTable' => 'cmd',
			'directionTable' => 'cmd',
			'limit' => 'cmd'
				));


then in the same file:
//WHERE - FILTER : Creation date
if($this->getState('filter.creation_date_from') !== null)
	$this->addWhere("a.creation_date >= " . (int)JformsHelperDates::getUnixTimestamp($this->getState('filter.creation_date_from')));

//WHERE - FILTER : Creation date
if($this->getState('filter.creation_date_to') !== null)
	$this->addWhere("a.creation_date <= " . (int)JformsHelperDates::getUnixTimestamp($this->getState('filter.creation_date_to')));
the FORMAT of the datetime is missing, so the getUnixTimestamp will return an empty value


fix:
//WHERE - FILTER : Creation date
if($this->getState('filter.creation_date_from') !== null)
	$this->addWhere("a.creation_date >= " . (int)JformsHelperDates::getUnixTimestamp($this->getState('filter.creation_date_from'),array('d-m-Y H:i:s'))); /* hack */

//WHERE - FILTER : Creation date
if($this->getState('filter.creation_date_to') !== null)
	$this->addWhere("a.creation_date <= " . (int)JformsHelperDates::getUnixTimestamp($this->getState('filter.creation_date_to'),array('d-m-Y H:i:s'))); /* hack */
The following user(s) said Thank You: admin

Please Log in or Create an account to join the conversation.

Last edit: by Tomaselli.

Datetime filter NOT WORKING in generated component 17 May 2015 10:11 #13014

  • admin
  • admin's Avatar
  • Offline
  • Administrator
  • Administrator
  • Chef
  • Posts: 3711
  • Thank you received: 986
Fixed now.

Thank you very much for this good catch.
K+
Coding is now a piece of cake

Please Log in or Create an account to join the conversation.

  • Page:
  • 1
Time to create page: 0.053 seconds

This is what you call a component builder. I was able to master using this in a very short time and the resulting component works like a charm. Not just a basic component builder but a fully working component builder with forms fields tables all ready to go. You can make the list and item views to display in the front and back end. Also there is a great forum just starting to evolve and I'm sure this will grow very rapidly when you all realise how good this tool is.
Kevin (JED)

         

Get Started