dotCMS / core

Headless/Hybrid Content Management System for Enterprises
http://dotcms.com
Other
853 stars 467 forks source link

Support filters arrays multi values in the CA Query #30191

Open freddyDOTCMS opened 1 week ago

freddyDOTCMS commented 1 week ago

Parent Issue

30141

Problem Statement

We create a new query sintax for the CA Endpoint and ViewTool, is not really the same CubeJs syntax, let see an example on the filter attribute:

Example to get All the FILE and PAGE request:

CubeJS Query:


{
  "measures": [
    "request.count"
  ],
  "filters": [
    {
      "member": "request.whatAmI",
      "operator": "equals",
      "values": [
        "PAGE",
        "FILE"
      ]
    }
  ],
  "dimensions": [
    "request.url"
  ],
  "order": {
    "request.count": "desc"
  }
}

Our less verbose Syntax:


{
  "measures": [
    "request.count"
  ],
  "filters": "request.whatAmI = ['PAGE', 'FILE']",
  "dimensions": [
    "request.url"
  ],
  "order": {
    "request.count": "desc"
  }
}

This is not working because it ignore the FILE value

Steps to Reproduce

set($collection = $analytics.runReportFromMap($queryMap).getResults())

Accessed Pages

foreach($item in $collection)

-> Page Title: $item.get("request.pageTitle").get() -> Page URL: $item.get("request.url").get() -> Page ID: $item.get("request.pageId").get() -> Page Count: $item.get("request.count").get()

end



### Acceptance Criteria

Make multi values works in filters

### dotCMS Version

latest

### Proposed Objective

Core Features

### Proposed Priority

Priority 2 - Important

### External Links... Slack Conversations, Support Tickets, Figma Designs, etc.

_No response_

### Assumptions & Initiation Needs

_No response_

### Quality Assurance Notes & Workarounds

_No response_

### Sub-Tasks & Estimates

_No response_
dsilvam commented 1 week ago

Passed Internal QA:

Tested with this query in the velocity query tool:

#set ($queryMap = {"measures" : ["request.count"], 
                "orders": "request.count desc",
                "dimensions": [
                    "request.url",
                    "request.pageTitle", 
                    "request.fileTitle",
                    "request.whatAmI", 
                    "request.pageId"
                  ],
                "filters":"request.whatAmI = ['PAGE', 'FILE']"
                })

#set($collection = $analytics.runReportFromMap($queryMap).getResults())

Accessed Pages

#foreach($item in $collection)
   -> What I am: $item.get("request.whatAmI").get()
   #if($item.get("request.whatAmI").get()=="FILE")
   -> File Title: $item.get("request.fileTitle").get()
   #else
    -> Page Title: $item.get("request.pageTitle").get()
   #end    
   -> Page URL: $item.get("request.url").get()

   -> Page Count: $item.get("request.count").get()

#end

Response as expected https://gist.github.com/dsilvam/96062619fe6baad731d9d91173d284e5

josemejias11 commented 1 week ago

Approved: Tested on trunk_a12617a, Docker, macOS 14.5, FF v126.0.1