Skip to content

Commit

Permalink
feat(chalice): save&update specific replay for heatmap-card
Browse files Browse the repository at this point in the history
  • Loading branch information
tahayk committed Jun 27, 2024
1 parent f295e40 commit 4025e6f
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 12 deletions.
23 changes: 16 additions & 7 deletions api/chalicelib/core/custom_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,11 +330,14 @@ def __get_path_analysis_card_info(data: schemas.CardPathAnalysis):
def create_card(project_id, user_id, data: schemas.CardSchema, dashboard=False):
with pg_client.PostgresClient() as cur:
session_data = None
if data.metric_type == schemas.MetricType.click_map:
session_data = __get_click_map_chart(project_id=project_id, user_id=user_id,
data=data, include_mobs=False)
if session_data is not None:
session_data = json.dumps(session_data)
if data.metric_type in (schemas.MetricType.click_map, schemas.MetricType.heat_map):
if data.session_id is not None:
session_data = json.dumps({"sessionId": data.session_id})
else:
session_data = __get_click_map_chart(project_id=project_id, user_id=user_id,
data=data, include_mobs=False)
if session_data is not None:
session_data = json.dumps({"sessionId": session_data["sessionId"]})
_data = {"session_data": session_data}
for i, s in enumerate(data.series):
for k in s.model_dump().keys():
Expand Down Expand Up @@ -373,7 +376,8 @@ def create_card(project_id, user_id, data: schemas.CardSchema, dashboard=False):


def update_card(metric_id, user_id, project_id, data: schemas.CardSchema):
metric: dict = get_card(metric_id=metric_id, project_id=project_id, user_id=user_id, flatten=False)
metric: dict = get_card(metric_id=metric_id, project_id=project_id,
user_id=user_id, flatten=False, include_data=True)
if metric is None:
return None
series_ids = [r["seriesId"] for r in metric["series"]]
Expand Down Expand Up @@ -406,8 +410,12 @@ def update_card(metric_id, user_id, project_id, data: schemas.CardSchema):
d_series_ids.append(i)
params["d_series_ids"] = tuple(d_series_ids)
params["card_info"] = None
params["session_data"] = metric["data"]
if data.metric_type == schemas.MetricType.pathAnalysis:
params["card_info"] = json.dumps(__get_path_analysis_card_info(data=data))
elif data.metric_type in (schemas.MetricType.click_map, schemas.MetricType.heat_map) \
and data.session_id is not None:
params["session_data"] = json.dumps({"sessionId": data.session_id})

with pg_client.PostgresClient() as cur:
sub_queries = []
Expand Down Expand Up @@ -441,7 +449,8 @@ def update_card(metric_id, user_id, project_id, data: schemas.CardSchema):
edited_at = timezone('utc'::text, now()),
default_config = %(config)s,
thumbnail = %(thumbnail)s,
card_info = %(card_info)s
card_info = %(card_info)s,
data = %(session_data)s
WHERE metric_id = %(metric_id)s
AND project_id = %(project_id)s
AND (user_id = %(user_id)s OR is_public)
Expand Down
2 changes: 2 additions & 0 deletions api/schemas/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -1128,6 +1128,8 @@ class __CardSchema(CardSessionsSchema):
metric_type: MetricType = Field(...)
metric_of: Any
metric_value: List[IssueType] = Field(default=[])
# This is used to save the selected session for heatmaps
session_id: Optional[int] = Field(default=None)

@computed_field
@property
Expand Down
19 changes: 14 additions & 5 deletions ee/api/chalicelib/core/custom_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -350,9 +350,12 @@ def __get_path_analysis_card_info(data: schemas.CardPathAnalysis):
def create_card(project_id, user_id, data: schemas.CardSchema, dashboard=False):
with pg_client.PostgresClient() as cur:
session_data = None
if data.metric_type == schemas.MetricType.click_map:
session_data = __get_click_map_chart(project_id=project_id, user_id=user_id,
data=data, include_mobs=False)
if data.metric_type in (schemas.MetricType.click_map, schemas.MetricType.heat_map):
if data.session_id is not None:
session_data = json.dumps({"sessionId": data.session_id})
else:
session_data = __get_click_map_chart(project_id=project_id, user_id=user_id,
data=data, include_mobs=False)
if session_data is not None:
# for EE only
keys = sessions_mobs. \
Expand Down Expand Up @@ -405,7 +408,8 @@ def create_card(project_id, user_id, data: schemas.CardSchema, dashboard=False):


def update_card(metric_id, user_id, project_id, data: schemas.CardSchema):
metric: dict = get_card(metric_id=metric_id, project_id=project_id, user_id=user_id, flatten=False)
metric: dict = get_card(metric_id=metric_id, project_id=project_id,
user_id=user_id, flatten=False, include_data=True)
if metric is None:
return None
series_ids = [r["seriesId"] for r in metric["series"]]
Expand Down Expand Up @@ -438,8 +442,12 @@ def update_card(metric_id, user_id, project_id, data: schemas.CardSchema):
d_series_ids.append(i)
params["d_series_ids"] = tuple(d_series_ids)
params["card_info"] = None
params["session_data"] = metric["data"]
if data.metric_type == schemas.MetricType.pathAnalysis:
params["card_info"] = json.dumps(__get_path_analysis_card_info(data=data))
elif data.metric_type in (schemas.MetricType.click_map, schemas.MetricType.heat_map) \
and data.session_id is not None:
params["session_data"] = json.dumps({"sessionId": data.session_id})

with pg_client.PostgresClient() as cur:
sub_queries = []
Expand Down Expand Up @@ -473,7 +481,8 @@ def update_card(metric_id, user_id, project_id, data: schemas.CardSchema):
edited_at = timezone('utc'::text, now()),
default_config = %(config)s,
thumbnail = %(thumbnail)s,
card_info = %(card_info)s
card_info = %(card_info)s,
data = %(session_data)s
WHERE metric_id = %(metric_id)s
AND project_id = %(project_id)s
AND (user_id = %(user_id)s OR is_public)
Expand Down

0 comments on commit 4025e6f

Please sign in to comment.