2023-07-12 11:28:07 +03:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta http-equiv = "x-ua-compatible" content = "ie=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2024-01-16 10:41:49 +03:00
< meta name = "generator" content = "ExDoc v0.31.1" >
2023-07-12 11:28:07 +03:00
< meta name = "project" content = "Plausible v0.0.1" >
2024-01-11 10:50:44 +03:00
2023-07-12 11:28:07 +03:00
< title > Plausible.Stats.Comparisons — Plausible v0.0.1< / title >
2024-01-16 10:41:49 +03:00
< link rel = "stylesheet" href = "dist/html-elixir-FM2CSD74.css" / >
2023-07-12 11:28:07 +03:00
< script src = "dist/handlebars.runtime-NWIB6V2M.js" > < / script >
2024-01-11 10:50:44 +03:00
< script src = "dist/handlebars.templates-43PMFBC7.js" > < / script >
2024-07-09 14:32:19 +03:00
< script src = "dist/sidebar_items-6B1A59FE.js" > < / script >
2023-07-12 11:28:07 +03:00
< script src = "docs_config.js" > < / script >
2024-01-16 10:41:49 +03:00
< script async src = "dist/html-L4O5OK2K.js" > < / script >
2023-07-12 11:28:07 +03:00
< / head >
< body data-type = "modules" class = "page-module" >
< script >
try {
var settings = JSON.parse(localStorage.getItem('ex_doc:settings') || '{}');
if (settings.theme === 'dark' ||
((settings.theme === 'system' || settings.theme == null) & &
window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
document.body.classList.add('dark')
}
} catch (error) { }
< / script >
< div class = "main" >
2024-01-16 10:41:49 +03:00
< button id = "sidebar-menu" class = "sidebar-button sidebar-toggle" aria-label = "toggle sidebar" aria-controls = "sidebar" >
2023-07-12 11:28:07 +03:00
< i class = "ri-menu-line ri-lg" title = "Collapse/expand sidebar" > < / i >
< / button >
2024-01-16 10:41:49 +03:00
< div class = "background-layer" > < / div >
2024-01-11 10:50:44 +03:00
< nav id = "sidebar" class = "sidebar" >
2023-07-12 11:28:07 +03:00
< div class = "sidebar-header" >
2024-01-11 10:50:44 +03:00
< div class = "sidebar-projectInfo" >
2023-07-12 11:28:07 +03:00
2024-01-11 10:50:44 +03:00
< a href = "readme.html" class = "sidebar-projectImage" >
< img src = "assets/logo.png" alt = "Plausible" / >
< / a >
2023-07-12 11:28:07 +03:00
2024-01-11 10:50:44 +03:00
< div >
< a href = "readme.html" class = "sidebar-projectName" translate = "no" >
2023-07-12 11:28:07 +03:00
Plausible
2024-01-11 10:50:44 +03:00
< / a >
< div class = "sidebar-projectVersion" translate = "no" >
v0.0.1
< / div >
2023-07-12 11:28:07 +03:00
< / div >
< / div >
2024-01-11 10:50:44 +03:00
< ul id = "sidebar-listNav" class = "sidebar-listNav" role = "tablist" >
< li >
< button id = "extras-list-tab-button" role = "tab" data-type = "extras" aria-controls = "extras-tab-panel" aria-selected = "true" tabindex = "0" >
Pages
< / button >
< / li >
< li >
< button id = "modules-list-tab-button" role = "tab" data-type = "modules" aria-controls = "modules-tab-panel" aria-selected = "false" tabindex = "-1" >
Modules
< / button >
< / li >
< li >
< button id = "tasks-list-tab-button" role = "tab" data-type = "tasks" aria-controls = "tasks-tab-panel" aria-selected = "false" tabindex = "-1" >
< span translate = "no" > Mix< / span > Tasks
< / button >
< / li >
2023-07-12 11:28:07 +03:00
2024-01-11 10:50:44 +03:00
< / ul >
< / div >
2023-07-12 11:28:07 +03:00
2024-01-11 10:50:44 +03:00
< div id = "extras-tab-panel" class = "sidebar-tabpanel" role = "tabpanel" aria-labelledby = "extras-list-tab-button" >
< ul id = "extras-full-list" class = "full-list" > < / ul >
< / div >
2023-07-12 11:28:07 +03:00
2024-01-11 10:50:44 +03:00
< div id = "modules-tab-panel" class = "sidebar-tabpanel" role = "tabpanel" aria-labelledby = "modules-list-tab-button" hidden >
< ul id = "modules-full-list" class = "full-list" > < / ul >
< / div >
2023-07-12 11:28:07 +03:00
2024-01-11 10:50:44 +03:00
< div id = "tasks-tab-panel" class = "sidebar-tabpanel" role = "tabpanel" aria-labelledby = "tasks-list-tab-button" hidden >
< ul id = "tasks-full-list" class = "full-list" > < / ul >
< / div >
< / nav >
2023-07-12 11:28:07 +03:00
2024-01-11 10:50:44 +03:00
< main class = "content" >
2023-07-12 11:28:07 +03:00
< output role = "status" id = "toast" > < / output >
< div class = "content-outer" >
< div id = "content" class = "content-inner" >
2024-01-11 10:50:44 +03:00
< div class = "top-search" >
< div class = "search-settings" >
< form class = "search-bar" action = "search.html" >
< label class = "search-label" >
< span class = "sr-only" > Search documentation of Plausible< / span >
< input name = "q" type = "text" class = "search-input" placeholder = "Search Documentation (press /)" autocomplete = "off" autocorrect = "off" autocapitalize = "off" spellcheck = "false" / >
< / label >
< button type = "submit" class = "search-button" aria-label = "Submit Search" >
< i class = "ri-search-2-line ri-lg" aria-hidden = "true" title = "Submit search" > < / i >
< / button >
< button type = "button" tabindex = "-1" class = "search-close-button" aria-hidden = "true" >
< i class = "ri-close-line ri-lg" title = "Cancel search" > < / i >
< / button >
< / form >
2024-01-16 10:41:49 +03:00
< div class = "autocomplete" >
< / div >
2024-01-11 10:50:44 +03:00
< button class = "icon-settings display-settings" >
< i class = "ri-settings-3-line" > < / i >
< span class = "sr-only" > Settings< / span >
< / button >
< / div >
2024-01-16 10:41:49 +03:00
2024-01-11 10:50:44 +03:00
< / div >
2023-07-12 11:28:07 +03:00
< h1 >
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/stats/comparisons.ex#L1" title = "View Source" class = "icon-action" rel = "help" >
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< span translate = "no" > Plausible.Stats.Comparisons< / span >
< small class = "app-vsn" translate = "no" > (Plausible v0.0.1)< / small >
< / h1 >
< section id = "moduledoc" >
< p > This module provides functions for comparing query periods.< / p > < p > It allows you to compare a given period with a previous period or with the
same period from the previous year. For example, you can compare this month's
main graph with last month or with the same month from last year.< / p >
< / section >
< section id = "summary" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#summary" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< / a >
2024-01-11 10:50:44 +03:00
< span class = "text" > Summary< / span >
2023-07-12 11:28:07 +03:00
< / h1 >
< div class = "summary-types summary" >
< h2 >
< a href = "#types" > Types< / a >
< / h2 >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#t:mode/0" translate = "no" > mode()< / a >
< / div >
< / div >
< / div >
< div class = "summary-functions summary" >
< h2 >
< a href = "#functions" > Functions< / a >
< / h2 >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#compare/4" translate = "no" > compare(site, source_query, mode, opts \\ [])< / a >
< / div >
< div class = "summary-synopsis" > < p > Generates a comparison query based on the source query and comparison mode.< / p > < / div >
< / div >
< / div >
< / section >
< section id = "types" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#types" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
2023-07-25 10:58:48 +03:00
< / a >
2024-01-11 10:50:44 +03:00
< span class = "text" > Types< / span >
2023-07-12 11:28:07 +03:00
< / h1 >
< div class = "types-list" >
< section class = "detail" id = "t:mode/0" >
< div class = "detail-header" >
< a href = "#t:mode/0" class = "detail-link" title = "Link to this type" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this type< / span >
< / a >
< h1 class = "signature" translate = "no" > mode()< / h1 >
2024-05-20 17:47:02 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/stats/comparisons.ex#L16" class = "icon-action" rel = "help" title = "View Source" >
2023-07-12 11:28:07 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
< pre translate = "no" > < span class = "attribute" > @type< / span > mode() :: < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > () | nil< / pre >
< / div >
< / section >
< / section >
< / div >
< / section >
< section id = "functions" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#functions" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
2023-07-25 10:58:48 +03:00
< / a >
2024-01-11 10:50:44 +03:00
< span class = "text" > Functions< / span >
2023-07-12 11:28:07 +03:00
< / h1 >
< div class = "functions-list" >
< section class = "detail" id = "compare/4" >
< span id = "compare/3" > < / span >
< div class = "detail-header" >
< a href = "#compare/4" class = "detail-link" title = "Link to this function" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
< h1 class = "signature" translate = "no" > compare(site, source_query, mode, opts \\ [])< / h1 >
2024-05-20 17:47:02 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/stats/comparisons.ex#L58" class = "icon-action" rel = "help" title = "View Source" >
2023-07-12 11:28:07 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
< pre translate = "no" > < span class = "attribute" > @spec< / span > compare(< a href = "Plausible.Site.html#t:t/0" > Plausible.Site.t< / a > (), < a href = "Plausible.Stats.Query.html#t:t/0" > Plausible.Stats.Query.t< / a > (), < a href = "#t:mode/0" > mode< / a > (), [option()]) ::
{:ok, < a href = "Plausible.Stats.Query.html#t:t/0" > Plausible.Stats.Query.t< / a > ()}
| {:error, :not_supported}
| {:error, :invalid_dates}< / pre >
< / div >
< p > Generates a comparison query based on the source query and comparison mode.< / p > < p > The mode parameter specifies the type of comparison and can be one of the
following:< / p > < ul > < li > < p > < code class = "inline" > " previous_period" < / code > - shifts back the query by the same number of days the
source query has.< / p > < / li > < li > < p > < code class = "inline" > " year_over_year" < / code > - shifts back the query by 1 year.< / p > < / li > < li > < p > < code class = "inline" > " custom" < / code > - compares the query using a custom date range. See options for
more details.< / p > < / li > < / ul > < p > The comparison query returned by the function has its end date restricted to
2024-01-30 12:12:14 +03:00
the current day. This can be overridden by the < code class = "inline" > now< / code > option, described below.< / p > < h2 id = "compare/4-options" class = "section-heading" >
2024-01-11 10:50:44 +03:00
< a href = "#compare/4-options" class = "hover-link" >
2023-07-25 10:58:48 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
2023-07-12 11:28:07 +03:00
< / a >
2024-01-11 10:50:44 +03:00
< span class = "text" > Options< / span >
2023-07-12 11:28:07 +03:00
< / h2 >
< ul > < li > < p > < code class = "inline" > :now< / code > - a < a href = "https://hexdocs.pm/elixir/NaiveDateTime.html" > < code class = "inline" > NaiveDateTime< / code > < / a > struct with the current date and time. This is
optional and used for testing purposes.< / p > < / li > < li > < p > < code class = "inline" > :from< / code > - a ISO-8601 date string used when mode is < code class = "inline" > " custom" < / code > .< / p > < / li > < li > < p > < code class = "inline" > :to< / code > - a ISO-8601 date string used when mode is < code class = "inline" > " custom" < / code > . Must be
after < code class = "inline" > from< / code > .< / p > < / li > < li > < p > < code class = "inline" > :match_day_of_week?< / code > - determines whether the comparison query should be
adjusted to match the day of the week of the source query. When this option
is set to true, the comparison query is shifted to start on the same day of
the week as the source query, rather than on the exact same date. For
example, if the source query starts on Sunday, January 1st, 2023 and the
< code class = "inline" > year_over_year< / code > comparison query is configured to < code class = "inline" > match_day_of_week?< / code > ,
it will be shifted to start on Sunday, January 2nd, 2022 instead of
January 1st. Defaults to false.< / p > < / li > < / ul >
< / section >
< / section >
< / div >
< / section >
< footer class = "footer" >
< p >
< span class = "line" >
< button class = "a-main footer-button display-quick-switch" title = "Search HexDocs packages" >
Search HexDocs
< / button >
< a href = "Plausible.epub" title = "ePub version" >
Download ePub version
< / a >
< / span >
< / p >
< p class = "built-using" >
Built using
2024-01-16 10:41:49 +03:00
< a href = "https://github.com/elixir-lang/ex_doc" title = "ExDoc" target = "_blank" rel = "help noopener" translate = "no" > ExDoc< / a > (v0.31.1) for the
2023-07-12 11:28:07 +03:00
< a href = "https://elixir-lang.org" title = "Elixir" target = "_blank" translate = "no" > Elixir programming language< / a >
< / p >
< / footer >
< / div >
< / div >
2024-01-11 10:50:44 +03:00
< / main >
2023-07-12 11:28:07 +03:00
< / div >
< script src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js" > < / script >
< script > mermaid . initialize ( { startOnLoad : true } ) < / script >
< / body >
< / html >