Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented order by #54

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Implemented order by #54

wants to merge 2 commits into from

Conversation

Plytas
Copy link
Collaborator

@Plytas Plytas commented May 17, 2023

Closes #53

Excerpt from README

Ordering:

You can order the results by a metric or dimension by using the setOrderBys() method. This method accepts a callback that receives an OrderBy instance. You can then use the OrderBy instance to order the results using these methods:

  • metricDesc() - Order by a metric in descending order.
  • metricAsc() - Order by a metric in ascending order.
  • alphanumericDimensionDesc() - Order by a dimension in descending order (case-sensitive).
  • alphanumericDimensionAsc() - Order by a dimension in ascending order (case-sensitive).
  • caseInsensitiveAlphanumericDimensionDesc() - Order by a dimension in descending order (case-insensitive).
  • caseInsensitiveAlphanumericDimensionAsc() - Order by a dimension in ascending order (case-insensitive).
  • numericDimensionDesc() - Order by a dimension in descending order (numeric).
  • numericDimensionAsc() - Order by a dimension in ascending order (numeric).
Example:
use Gtmassey\LaravelAnalytics\Request\Dimensions;
use Gtmassey\LaravelAnalytics\Request\Metrics;
use Gtmassey\LaravelAnalytics\Analytics;
use Gtmassey\Period\Period;

$report = Analytics::query()
    ->setMetrics(fn(Metrics $metrics) => $metrics->sessions())
    ->setDimensions(fn(Dimensions $dimensions) => $dimensions->browser())
    ->forPeriod(Period::defaultPeriod())
    ->setOrderBys(fn(OrderBy $orderBy) => $orderBy
    	// Order by sessions in descending order
        ->metricDesc(
            metricsCallback: fn(Metrics $metrics) => $metrics->sessions(),
        )

        // Order by sessions in ascending order
        ->metricAsc(
            metricsCallback: fn(Metrics $metrics) => $metrics->sessions(),
        )

        // Order by browser in descending order (case-sensitive)
        ->alphanumericDimensionDesc(
            dimensionsCallback: fn(Dimensions $dimensions) => $dimensions->pageTitle(),
        )

        // Order by browser in ascending order (case-sensitive)
        ->alphanumericDimensionAsc(
            dimensionsCallback: fn(Dimensions $dimensions) => $dimensions->pageTitle(),
        )

        // Order by browser in descending order (case-insensitive)
        ->caseInsensitiveAlphanumericDimensionDesc(
            dimensionsCallback: fn(Dimensions $dimensions) => $dimensions->pageTitle(),
        )

        // Order by browser in ascending order (case-insensitive)
        ->caseInsensitiveAlphanumericDimensionAsc(
            dimensionsCallback: fn(Dimensions $dimensions) => $dimensions->pageTitle(),
        )

        // Order by browser in descending order (numeric)
        ->numericDimensionDesc(
            dimensionsCallback: fn(Dimensions $dimensions) => $dimensions->pageTitle(),
        )

        // Order by browser in ascending order (numeric)
        ->numericDimensionAsc(
            dimensionsCallback: fn(Dimensions $dimensions) => $dimensions->pageTitle(),
        )
    )
    ->run();

@Plytas Plytas added the enhancement New feature or request label May 17, 2023
@Plytas Plytas requested a review from gtmassey May 17, 2023 15:44
@Plytas Plytas self-assigned this May 17, 2023
@Plytas Plytas linked an issue May 17, 2023 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cannot extends Analytics Class.
1 participant