Skip to content

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