Commit Graph

26 Commits

Author SHA1 Message Date
002e1f560a FIX: initialize empty object if no custom filters are present 2019-05-01 10:27:19 +05:30
bcca2b5d73 FEATURE: initial implementation of generic filters for reports 2019-04-26 12:17:10 +02:00
8fb63b2706 FEATURE: unified popover implementation (#7244) 2019-03-26 15:43:27 +01:00
f8480ed911 FEATURE: Exposing a way to add a generic report filter (#6816)
* FEATURE: Exposing a way to add a generic report filter

## Why do we need this change?

Part of the work discussed [here](https://meta.discourse.org/t/gain-understanding-of-file-uploads-usage/104994), and implemented a first spike [here](https://github.com/discourse/discourse/pull/6809), I am trying to expose a single generic filter selector per report.

## How does this work?

We basically expose a simple, single generic filter that is computed and displayed based on backend values passed into the report.

This would be a simple contract between the frontend and the backend.

**Backend changes:** we simply need to return a list of dropdown / select options, and enable the report's newly introduced `custom_filtering` property.

For example, for our [Top Uploads](https://github.com/discourse/discourse/pull/6809/files#diff-3f97cbb8726f3310e0b0c386dbe89e22R1423) report, it can look like this on the backend:

```ruby
report.custom_filtering = true
report.custom_filter_options = [{ id: "any", name: "Any" }, { id: "jpg", name: "JPEG" } ]
```

In our javascript report HTTP call, it will look like:

```js
{
  "custom_filtering": true,
  "custom_filter_options": [
    {
      "id": "any",
      "name": "Any"
    },
    {
      "id": "jpg",
      "name": "JPG"
    }
  ]
}
```

**Frontend changes:** We introduced a generic `filter` param and a `combo-box` which hooks up into the existing framework for fetching a report.

This works alright, with the limitation of being a single custom filter per report. If we wanted to add, for an instance a `filesize filter`, this will not work for us. _I went through with this approach because it is hard to predict and build abstractions for requirements or problems we don't have yet, or might not have._

## How does it look like?

![a1ktg1odde](https://user-images.githubusercontent.com/45508821/50485875-f17edb80-09ee-11e9-92dd-1454ab041fbb.gif)

## More on the bigger picture

The major concern here I have is the solution I introduced might serve the `think small` version of the reporting work, but I don't think it serves the `think big`, I will try to shed some light into why.

Within the current design, It is hard to maintain QueryParams for dynamically generated params (based on the idea of introducing more than one custom filter per report).

To allow ourselves to have more than one generic filter, we will need to:

a. Use the Route's model to retrieve the report's payload (we are now dependent on changes of the QueryParams via computed properties)
b. After retrieving the payload, we can use the `setupController` to define our dynamic QueryParams based on the custom filters definitions we received from the backend
c. Load a custom filter specific Ember component based on the definitions we received from the backend
2019-03-15 12:15:38 +00:00
3e1e9fce7e FIX: better legend labels for stacked-charts (#6914) 2019-01-21 17:10:10 +01:00
b95165b838 FEATURE: adds a new chart report to track pageviews (#6913) 2019-01-21 15:17:04 +01:00
502b1316d0 DEV: s/this._super()/this._super(...arguments) (#6908) 2019-01-19 10:05:51 +01:00
9c616e0679 FIX: handles not found reports in bulk loading (#6582) 2018-11-12 13:47:24 +01:00
24e5be3f0c FIX: Relative links in translations should work with subfolder 2018-11-08 23:31:05 +00:00
c219a5fb1e Add btn-default class to all default buttons (#6521) 2018-10-24 16:09:36 -04:00
82dcc5cbfa FEATURE: makes reports loadable in bulk (#6309) 2018-08-24 15:28:01 +02:00
a48059fd8f FIX: uses localized string for 429 in reports (#6302)
NGINX was retuning an html page instead of single string for some users. Seems safer to not risk showing anything from server anyways.
2018-08-22 18:13:29 +02:00
774e6bc795 FIX: handle rate limiting from nginx (#6300) 2018-08-22 13:10:57 +02:00
599cebf8ad FIX: better message if request for report is rate limited (#6298) 2018-08-22 11:25:12 +02:00
37d4f27c44 FIX: quality/bugfix dashboard/reports pass (#6283) 2018-08-17 16:19:25 +02:00
9073e11943 FIX: improves number/percent support in reports 2018-08-01 18:40:59 -04:00
2b2a506a7b FIX: makes dashboard more resilient to errors (#6217)
This commit is an attempt to limit cases where the dashboard will generate a full exception page and also make it easier to track the error.
2018-07-31 21:23:28 -04:00
37252c1a5e UI: improves dashboard table reports
- support for avatars
- support for topic/post/user type in reports
- improved totals row UI
- minor css tweaks
2018-07-31 17:35:13 -04:00
b7d1864d0a FIX: simplify filters on admin-report component (#6193) 2018-07-27 01:22:00 -04:00
262beed1cf FIX: fixes regression with category filtering (#6190) 2018-07-26 19:08:06 -04:00
ad95c24307 FEATURE: displays a notice if report has no data (#6178) 2018-07-25 14:28:41 -04:00
6ee1ea96ef fixes tests (#6176) 2018-07-25 14:02:21 -04:00
01d1f850e9 FEATURE: uses category-chooser for report filtering (#6174) 2018-07-25 13:16:35 -04:00
3741dd6b59 removes report logging (#6125) 2018-07-20 08:16:29 -04:00
64f0cf425b FIX: removes uncessary reports loading (#6119) 2018-07-19 19:30:13 -04:00
1a78e12f4e FEATURE: part 2 of dashboard improvements
- moderation tab
- sorting/pagination
- improved third party reports support
- trending charts
- better perf
- many fixes
- refactoring
- new reports

Co-Authored-By: Simon Cossar <scossar@users.noreply.github.com>
2018-07-19 14:33:11 -04:00