Class: Hyperlayer::EventsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/hyperlayer/events_controller.rb

Constant Summary collapse

APP_DIR =
Rails.root.to_s.split('/').last

Instance Method Summary collapse

Instance Method Details

#indexObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
61
62
63
64
65
66
67
68
69
70
71
# File 'app/controllers/hyperlayer/events_controller.rb', line 5

def index
  @spec = Spec.find(params[:spec_id])
  
  @example_group = @spec.example_groups.find(params[:example_group_id])
  
  @events = @example_group.events
                          .call
                          .includes(:path)
                          .where(path: { spec: nil })
                          .order(id: :asc)
                          .select { |e| e.path.path.include?(APP_DIR) }

  @groups = []
  used_ids = []

  @events.each.with_index do |event, index|
    next if used_ids.flatten.include?(event.id)

    batch = { event.defined_class => [] }

    count = index

    while true do
      next_event = @events[count]

      break if next_event.nil? || next_event.defined_class != event.defined_class

      batch[event.defined_class] << @events[count]

      count += 1
    end

    @groups << batch
    used_ids << batch.values.flatten.map(&:id)
    used_ids.flatten
  end

  # first_klass = @groups.first.keys.first
  # first_event = @groups.first.values.first.first

  # @tree = [
  #   {
  #     klass: first_klass,
  #     method: first_event.method,
  #     return_value_id: first_event.return_value_events&.id,
  #     children: []
  #   }
  # ]

  # @groups.each do |group|
  #   klass = group.keys.first
  #   events = group.values.first

  #   events.each do |event|
  #     while event.id < @tree.last[:return_value_id]
  #       {
  #         klass: klass,
  #         method: event.method,
  #         return_value_id: event.return_value_events&.id,
  #         children: []
  #       }
  #     end
  #   end
  # end

  @tree = BuildTree.call(@events)
end