Supporting dynamic date range searches

Managed by | Updated .

Background

This article shows how you can define some preset date parameter values that are dynamically expanded to a date search. This allows you to search for 'this week' or 'next month'.

Process

The following hook_pre_process.groovy script can be used to add support for some pre-defined date searches. This provides an easy way (without calculating dates) to search for things from yesterday, last week, last 2 weeks etc.

It looks for an invented CGI parameter called 'date' and dynamically maps these to the correct date query.

  1. Add the following code to the collection's hook_pre_process.groovy script. The date parameter should start to work as soon as the hook script is saved.

    if (transaction?.question?.inputParameterMap["date"] != null) {
      def today=new Date()
      if (transaction.question.inputParameterMap["date"] == "yesterday") {
        transaction.question.inputParameterMap["meta_d1"] = String.format('%te%tb%tY',today-2,today-2,today-2)
      }
      else if (transaction.question.inputParameterMap["date"] == "last7days") {
        transaction.question.inputParameterMap["meta_d1"] = String.format('%te%tb%tY',today-8,today-8,today-8)
      }
      else if (transaction.question.inputParameterMap["date"] == "last14days") {
        transaction.question.inputParameterMap["meta_d1"] = String.format('%te%tb%tY',today-15,today-15,today-15)
      }
      else if (transaction.question.inputParameterMap["date"] == "last31days") {
        transaction.question.inputParameterMap["meta_d1"] = String.format('%te%tb%tY',today-32,today-32,today-32)
      }
    }
    
Was this artcle helpful?