Skip to content

Commit

Permalink
lazy load segment predicates
Browse files Browse the repository at this point in the history
  • Loading branch information
michelson committed Nov 15, 2023
1 parent 262a748 commit f79ea06
Show file tree
Hide file tree
Showing 18 changed files with 129 additions and 5,571 deletions.
21 changes: 20 additions & 1 deletion app/assets/stylesheets/application.tailwind.css
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,29 @@
rounded-md transition ease-in-out duration-150;
}

.navigator-count {
@apply ml-auto inline-block py-0.5 px-3 text-xs leading-4
rounded-full
text-gray-600 bg-gray-200
dark:text-gray-200 dark:bg-gray-600
group-hover:bg-gray-200
dark:group-focus:bg-gray-600
transition ease-in-out duration-150;
}

.navigator-item.navigator-active {
@apply bg-gray-100 dark:bg-gray-800;
}

a > input[type="radio"]:checked + .navigator-item {
@apply bg-gray-500 text-white;
@apply bg-gray-100 dark:bg-gray-800;
}

a > input[type="radio"]:checked + .navigator-item .navigator-count {
@apply bg-gray-200 dark:bg-gray-600;
}


.input, input[type=datetime-local] {
@apply shadow appearance-none border border-gray-300
dark:border-gray-700
Expand Down
8 changes: 4 additions & 4 deletions app/controllers/apps/bots_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -236,9 +236,9 @@ def audience_handler

@segment_manager.handle_new_segment = params["new_segment"] if params["new_segment"].present?

@collection = @segment_manager.results({
page: params[:page],
per: 5
})
# @collection = @segment_manager.results({
# page: params[:page],
# per: 5
# })
end
end
39 changes: 0 additions & 39 deletions app/controllers/apps/campaigns_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -244,45 +244,6 @@ def audience_handler
)

@segment_manager.handle_new_segment = params["new_segment"] if params["new_segment"].present?

@collection = @segment_manager.results({
page: params[:page],
per: 5
})
end

def handle_audience
turbo_views = [
turbo_stream.replace(
"segment_form",
partial: "apps/segment_manager/form",
locals: {
app: @app,
segment_manager: @segment_manager,
changed: false,
incomplete: false
}
)
]

unless @segment_manager.predicates.find { |o| o.value.nil? }
turbo_views << turbo_stream.replace(
"segment-table",
partial: "apps/segment_manager/table",
locals: {
app: @app,
segment_manager: @segment_manager,
results: @segment_manager.results(params)
}
)
end

respond_to do |format|
format.turbo_stream do
render turbo_stream: turbo_views
end
format.html # { redirect_to "/" }
end
end

def resource_params
Expand Down
27 changes: 12 additions & 15 deletions app/controllers/apps/inbound_settings_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,22 @@ def show

def update
if params[:new_segment].blank?

segment_predicate = resource_params[:inbound_settings_objects_attributes]["#{@namespace}_attributes"][:segment_predicate]
segment_predicate = params["app"]["inbound_settings_objects_attributes"]["segment_predicate"]
segment_predicates = begin
segment_predicate.keys.sort.map { |key| segment_predicate[key].to_h }
segment_predicate.permit!.keys.sort.map { |key| segment_predicate[key].to_h }
rescue StandardError
[]
end

# first updates everything else
@app.update(resource_params)

current_segments = @app.inbound_settings
current_segments[@namespace]["predicates"] = segment_predicates

@app.update(resource_params)

# if params[:force_save] == "true"
# @app.update(inbound_settings: current_segments)
# else
# @changed = true
# @app.assign_attributes(inbound_settings: current_segments)
# end
# second attached the new predicates
@app.update({ inbound_settings: current_segments })
@app.reload
end

audience_handler
Expand All @@ -42,10 +39,10 @@ def audience_handler

@segment_manager.handle_new_segment = params["new_segment"] if params["new_segment"].present?

@collection = @segment_manager.results({
page: params[:page],
per: 5
})
# @collection = @segment_manager.results({
# page: params[:page],
# per: 5
# })
end

def set_namespace
Expand Down
65 changes: 37 additions & 28 deletions app/controllers/apps/segments_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,43 +101,52 @@ def edit_segment

resource_params = params[:segment_manager_service].permit!
@segment_manager = SegmentManagerService.new(app: @app)
@segment_manager.segment_predicates = resource_params["segment_predicate"]
@segment_manager.segment_predicates = resource_params["segment_predicate"].to_h

@segment_manager.handle_new_segment = params["new_segment"] if params["new_segment"].present?

turbo_views = [
turbo_stream.replace(
"segment_form",
partial: "apps/segment_manager/form",
locals: {
segment_manager: @segment_manager,
changed: @segment.predicates.to_json != @segment_manager.predicates.to_json,
incomplete: @segment_manager.predicates.any? { |o| o.value.nil? },
url_form: edit_segment_app_segment_path(@app.key, @segment)
}
)
]

unless @segment_manager.predicates.find { |o| o.value.nil? }
turbo_views << turbo_stream.replace(
"segment-table",
partial: "apps/segment_manager/table",
locals: {
app: @app,
segment_manager: @segment_manager,
results: @segment_manager.results(params)
}
)
end
# turbo_views = [
# turbo_stream.replace(
# "segment_form",
# partial: "apps/segment_manager/form",
# locals: {
# segment_manager: @segment_manager,
# changed: @segment.predicates.to_json != @segment_manager.predicates.to_json,
# incomplete: @segment_manager.predicates.any? { |o| o.value.nil? },
# url_form: edit_segment_app_segment_path(@app.key, @segment)
# }
# )
# ]

# unless @segment_manager.predicates.find { |o| o.value.nil? }
# turbo_views << turbo_stream.replace(
# "segment-table",
# partial: "apps/segment_manager/table",
# locals: {
# app: @app,
# segment_manager: @segment_manager,
# results: @segment_manager.results(params)
# }
# )
# end

respond_to do |format|
format.turbo_stream do
render turbo_stream: turbo_views
end
format.turbo_stream
format.html # { redirect_to "/" }
end
end

def table
predicates = JSON.parse(params[:segments])
@segment_manager = SegmentManagerService.new(
app: @app,
predicates: predicates # resource_params_custom
)

@app_users = @segment_manager.results(params)
render "table", layout: false
end

private

def find_segments
Expand Down

0 comments on commit f79ea06

Please sign in to comment.