Module: Lookout

Defined in:
lib/lookout.rb,
lib/lookout/goals.rb,
lib/lookout/engine.rb,
lib/lookout/funnels.rb,
lib/lookout/railtie.rb,
lib/lookout/version.rb,
app/models/lookout/export.rb,
app/models/lookout/widget.rb,
lib/lookout/configuration.rb,
lib/lookout/predicate_label.rb,
app/models/lookout/rangeable.rb,
lib/lookout/database_adapter.rb,
lib/lookout/period_collection.rb,
app/queries/lookout/city_query.rb,
lib/lookout/ahoy/event_methods.rb,
lib/lookout/ahoy/visit_methods.rb,
app/queries/lookout/event_query.rb,
app/queries/lookout/visit_query.rb,
app/models/lookout/filter_parser.rb,
app/queries/lookout/device_query.rb,
app/queries/lookout/region_query.rb,
app/queries/lookout/source_query.rb,
app/queries/lookout/country_query.rb,
lib/lookout/filters_configuration.rb,
app/models/lookout/comparison_mode.rb,
app/queries/lookout/campaign_query.rb,
app/queries/lookout/top_page_query.rb,
app/models/lookout/range_from_params.rb,
app/queries/lookout/exit_pages_query.rb,
app/queries/lookout/stats/base_query.rb,
app/decorators/lookout/city_decorator.rb,
app/decorators/lookout/page_decorator.rb,
app/models/concerns/lookout/limitable.rb,
app/queries/lookout/application_query.rb,
app/queries/lookout/entry_pages_query.rb,
app/helpers/lookout/application_helper.rb,
app/presenters/lookout/goals_presenter.rb,
app/decorators/lookout/device_decorator.rb,
app/decorators/lookout/region_decorator.rb,
app/decorators/lookout/source_decorator.rb,
app/presenters/lookout/funnel_presenter.rb,
lib/lookout/filter_configuration/filter.rb,
app/controllers/lookout/goals_controller.rb,
app/controllers/lookout/roots_controller.rb,
app/controllers/lookout/stats_controller.rb,
app/decorators/lookout/country_decorator.rb,
app/models/concerns/lookout/compare_mode.rb,
lib/generators/lookout/install_generator.rb,
app/components/lookout/combobox_component.rb,
app/decorators/lookout/campaign_decorator.rb,
app/decorators/lookout/top_page_decorator.rb,
app/models/concerns/lookout/range_options.rb,
app/controllers/lookout/devices_controller.rb,
app/controllers/lookout/exports_controller.rb,
app/controllers/lookout/funnels_controller.rb,
app/controllers/lookout/sources_controller.rb,
app/decorators/lookout/exit_page_decorator.rb,
app/presenters/lookout/dashboard_presenter.rb,
lib/generators/lookout/migration_generator.rb,
app/components/lookout/tables/dynamic_table.rb,
app/decorators/lookout/entry_page_decorator.rb,
app/controllers/lookout/campaigns_controller.rb,
app/controllers/lookout/realtimes_controller.rb,
app/controllers/lookout/top_pages_controller.rb,
app/decorators/lookout/application_decorator.rb,
app/queries/lookout/stats/bounce_rates_query.rb,
app/controllers/lookout/exit_pages_controller.rb,
app/controllers/lookout/properties_controller.rb,
app/controllers/lookout/stats/base_controller.rb,
app/queries/concerns/lookout/comparable_query.rb,
app/components/lookout/previous_next_component.rb,
app/components/lookout/tables/header_component.rb,
app/controllers/lookout/application_controller.rb,
app/controllers/lookout/entry_pages_controller.rb,
app/queries/lookout/stats/total_visitors_query.rb,
app/queries/lookout/stats/visit_duration_query.rb,
app/controllers/lookout/filters/base_controller.rb,
app/controllers/lookout/filters/utms_controller.rb,
app/queries/concerns/lookout/comparable_queries.rb,
app/queries/lookout/stats/total_pageviews_query.rb,
app/queries/lookout/stats/unique_visitors_query.rb,
app/queries/lookout/stats/views_per_visit_query.rb,
app/components/lookout/stats/container_component.rb,
app/components/lookout/tables/rows/row_component.rb,
app/controllers/lookout/filters/goals_controller.rb,
app/controllers/lookout/locations/maps_controller.rb,
app/controllers/lookout/filters/screens_controller.rb,
app/controllers/lookout/filters/sources_controller.rb,
app/queries/concerns/lookout/lazy_comparable_query.rb,
lib/lookout/filter_configuration/filter_collection.rb,
app/components/lookout/tables/goals_table_component.rb,
app/controllers/lookout/locations/cities_controller.rb,
app/controllers/lookout/filters/locations_controller.rb,
app/controllers/lookout/locations/regions_controller.rb,
app/components/lookout/tables/devices_table_component.rb,
app/components/lookout/tables/dynamic_table_component.rb,
app/controllers/lookout/stats/bounce_rates_controller.rb,
app/controllers/lookout/stats/total_visits_controller.rb,
app/components/lookout/tables/headers/header_component.rb,
app/controllers/lookout/locations/countries_controller.rb,
app/queries/lookout/stats/average_visit_duration_query.rb,
app/queries/lookout/stats/average_views_per_visit_query.rb,
app/components/lookout/tables/properties_table_component.rb,
app/controllers/lookout/filters/pages/actions_controller.rb,
app/controllers/lookout/stats/total_pageviews_controller.rb,
app/controllers/lookout/stats/unique_visitors_controller.rb,
app/controllers/lookout/stats/visit_durations_controller.rb,
app/controllers/lookout/stats/views_per_visits_controller.rb,
app/components/lookout/stats/comparable_container_component.rb,
app/controllers/lookout/filters/pages/exit_pages_controller.rb,
app/controllers/lookout/filters/properties/names_controller.rb,
app/controllers/lookout/filters/pages/entry_pages_controller.rb,
app/controllers/lookout/filters/properties/values_controller.rb,
app/controllers/lookout/filters/operating_systems/names_controller.rb,
app/controllers/lookout/filters/operating_systems/versions_controller.rb

Defined Under Namespace

Modules: Ahoy, ApplicationHelper, ComparableQueries, ComparableQuery, CompareMode, DatabaseAdapter, Filters, Generators, LazyComparableQuery, Limitable, Locations, RangeOptions, Rangeable, Stats, Tables Classes: ApplicationController, ApplicationDecorator, ApplicationQuery, CampaignDecorator, CampaignQuery, CampaignsController, CityDecorator, CityQuery, ComboboxComponent, ComparisonLinkComponent, ComparisonMode, Configuration, CountryDecorator, CountryQuery, DashboardPresenter, DeviceDecorator, DeviceQuery, DevicesController, DropdownButtonComponent, DropdownLinkComponent, Engine, EntryPageDecorator, EntryPagesController, EntryPagesQuery, EventQuery, ExitPageDecorator, ExitPagesController, ExitPagesQuery, Export, ExportsController, FilterConfiguration, FilterParser, FiltersConfiguration, Funnel, FunnelCollection, FunnelPresenter, FunnelsController, Goal, GoalCollection, GoalsController, GoalsPresenter, PageDecorator, PeriodCollection, PredicateLabel, PreviousNextComponent, PropertiesController, Railtie, RangeFromParams, RealtimesController, RegionDecorator, RegionQuery, RootsController, SourceDecorator, SourceQuery, SourcesController, StatsController, StickyNavComponent, TableComponent, TileComponent, TooltipComponent, TopPageDecorator, TopPageQuery, TopPagesController, VisitQuery, Widget

Constant Summary collapse

VERSION =
"0.6.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject

Returns the value of attribute configuration.



16
17
18
# File 'lib/lookout.rb', line 16

def configuration
  @configuration
end

Class Method Details

.cacheObject



18
19
20
21
22
23
24
# File 'lib/lookout.rb', line 18

def cache
  @cache ||= if config.cache[:enabled]
               config.cache[:store]
             else
               ActiveSupport::Cache::NullStore.new
             end
end

.configObject



62
63
64
# File 'lib/lookout.rb', line 62

def config
  self.configuration ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



66
67
68
# File 'lib/lookout.rb', line 66

def configure
  yield config
end

.eventObject



70
71
72
# File 'lib/lookout.rb', line 70

def event
  @event ||= config.models[:event].constantize
end

.importmap(builder = nil) ⇒ Object

Rails 8+ one-liner support: In a host app's config/importmap.rb you can now do:

Lookout.importmap(self)

This will draw all Lookout pins onto the host's map builder. If no builder is provided, this returns a standalone Importmap::Map (for inlining).



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/lookout.rb', line 31

def importmap(builder = nil)
  if builder
    builder.pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
    builder.pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
    builder.pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
    builder.pin "application", to: "lookout/application.js", preload: true
    # Chart.js must be pinned BEFORE its plugins
    builder.pin "chart.js", to: "https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js", preload: true
    builder.pin "chartjs-plugin-datalabels", to: "https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2", preload: true
    builder.pin "classnames", to: "https://cdnjs.cloudflare.com/ajax/libs/classnames/2.3.2/index.min.js", preload: true
    builder.pin "chartjs-chart-geo", to: "https://cdn.jsdelivr.net/npm/[email protected]/build/index.umd.min.js", preload: true
    builder.pin_all_from Lookout::Engine.root.join("app/assets/javascript/lookout/controllers"), under: "controllers", to: "lookout/controllers"
    builder.pin_all_from Lookout::Engine.root.join("app/assets/javascript/lookout/helpers"), under: "helpers", to: "lookout/helpers"
    return builder
  end

  Importmap::Map.new.draw do
    pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
    pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
    pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
    pin "application", to: "lookout/application.js", preload: true
    # Chart.js must be pinned BEFORE its plugins
    pin "chart.js", to: "https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js", preload: true
    pin "chartjs-plugin-datalabels", to: "https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2", preload: true
    pin "classnames", to: "https://cdnjs.cloudflare.com/ajax/libs/classnames/2.3.2/index.min.js", preload: true
    pin "chartjs-chart-geo", to: "https://cdn.jsdelivr.net/npm/[email protected]/build/index.umd.min.js", preload: true
    pin_all_from Lookout::Engine.root.join("app/assets/javascript/lookout/controllers"), under: "controllers", to: "lookout/controllers"
    pin_all_from Lookout::Engine.root.join("app/assets/javascript/lookout/helpers"), under: "helpers", to: "lookout/helpers"
  end
end

.noneObject



78
79
80
# File 'lib/lookout.rb', line 78

def none
  @none ||= OpenStruct.new(text: "(none)", value: "!none!")
end

.visitObject



74
75
76
# File 'lib/lookout.rb', line 74

def visit
  @visit ||= config.models[:visit].constantize
end