Class: ThinkFeelDoEngine::Reports::ModulePageView
- Inherits:
-
Object
- Object
- ThinkFeelDoEngine::Reports::ModulePageView
- Includes:
- ToolModule
- Defined in:
- app/models/think_feel_do_engine/reports/module_page_view.rb
Overview
Scenario: A Participant starts using a Module page.
Constant Summary
Constants included from ToolModule
Class Method Summary collapse
- .all ⇒ Object
- .columns ⇒ Object
- .page_exit_event_at(page_render_event) ⇒ Object
- .slide_render_events_for(participant, modules) ⇒ Object
Methods included from ToolModule
Class Method Details
.all ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/models/think_feel_do_engine/reports/module_page_view.rb', line 13 def self.all modules = modules_map Participant.not_moderator.select(:id, :study_id).map do |participant| (participant, modules).map do |module_event| e = module_event[1] mod = module_event[0] { participant_id: participant.study_id, tool_id: mod.bit_core_tool_id, module_id: mod.id, page_headers: e.headers, page_selected_at: e.emitted_at.iso8601, page_exited_at: page_exit_event_at(e).try(:iso8601), url: e.payload["currentUrl"] } end end.flatten end |
.columns ⇒ Object
8 9 10 11 |
# File 'app/models/think_feel_do_engine/reports/module_page_view.rb', line 8 def self.columns %w( participant_id tool_id module_id page_headers page_selected_at page_exited_at url ) end |
.page_exit_event_at(page_render_event) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'app/models/think_feel_do_engine/reports/module_page_view.rb', line 48 def self.page_exit_event_at(page_render_event) EventCapture::Event .order(:emitted_at) .where("emitted_at > ? AND payload NOT LIKE ?", page_render_event.emitted_at, "%currentUrl: #{page_render_event.current_url}\n%") .select(:emitted_at).limit(1).first.try(:emitted_at) end |
.slide_render_events_for(participant, modules) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/models/think_feel_do_engine/reports/module_page_view.rb', line 34 def self.(participant, modules) EventCapture::Event .where(participant_id: participant.id, kind: %w( render )) .select(:participant_id, :emitted_at, :payload) .to_a.map do |e| key = modules.keys.find do |l| !e.current_url.match(%r{#{ l }(\/.*)?$}).nil? end key ? [modules[key], e] : nil end.compact end |