feat(db): defined new predefined templates (errors)
feat(api): support for errors predefined templates feat(api): fixed update widget config
This commit is contained in:
parent
91e7a4103e
commit
f26fbc9a71
7 changed files with 80 additions and 13 deletions
|
|
@ -170,7 +170,7 @@ def get_processed_sessions(project_id, startTimestamp=TimeUTC.now(delta_days=-1)
|
|||
count = cur.fetchone()["count"]
|
||||
|
||||
results["progress"] = helper.__progress(old_val=count, new_val=results["value"])
|
||||
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.count
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -998,6 +998,7 @@ def get_pages_dom_build_time(project_id, startTimestamp=TimeUTC.now(delta_days=-
|
|||
|
||||
cur.execute(cur.mogrify(pg_query, params))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return row
|
||||
|
||||
|
||||
|
|
@ -1156,7 +1157,7 @@ def get_pages_response_time(project_id, startTimestamp=TimeUTC.now(delta_days=-1
|
|||
WHERE {" AND ".join(pg_sub_query)};"""
|
||||
cur.execute(cur.mogrify(pg_query, params))
|
||||
avg = cur.fetchone()["avg"]
|
||||
return {"value": avg, "chart": rows}
|
||||
return {"value": avg, "chart": rows, "unit": schemas.TemplatePredefinedUnits.millisecond}
|
||||
|
||||
|
||||
def get_pages_response_time_distribution(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
|
||||
|
|
@ -1378,6 +1379,7 @@ def get_time_to_render(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
|
|||
"endTimestamp": endTimestamp, "value": url, **__get_constraint_values(args)}
|
||||
cur.execute(cur.mogrify(pg_query, params))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return row
|
||||
|
||||
|
||||
|
|
@ -1448,7 +1450,7 @@ def get_memory_consumption(project_id, startTimestamp=TimeUTC.now(delta_days=-1)
|
|||
WHERE {" AND ".join(pg_sub_query)};"""
|
||||
cur.execute(cur.mogrify(pg_query, params))
|
||||
avg = cur.fetchone()["avg"]
|
||||
return {"value": avg, "chart": helper.list_to_camel_case(rows)}
|
||||
return {"value": avg, "chart": helper.list_to_camel_case(rows), "unit": schemas.TemplatePredefinedUnits.memory}
|
||||
|
||||
|
||||
def get_avg_cpu(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
|
||||
|
|
@ -1480,7 +1482,8 @@ def get_avg_cpu(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
|
|||
WHERE {" AND ".join(pg_sub_query)};"""
|
||||
cur.execute(cur.mogrify(pg_query, params))
|
||||
avg = cur.fetchone()["avg"]
|
||||
return {"value": avg, "chart": helper.list_to_camel_case(rows)}
|
||||
return {"value": avg, "chart": helper.list_to_camel_case(rows),
|
||||
"unit": schemas.TemplatePredefinedUnits.percentage}
|
||||
|
||||
|
||||
def get_avg_fps(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
|
||||
|
|
@ -1512,7 +1515,7 @@ def get_avg_fps(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
|
|||
WHERE {" AND ".join(pg_sub_query)};"""
|
||||
cur.execute(cur.mogrify(pg_query, params))
|
||||
avg = cur.fetchone()["avg"]
|
||||
return {"value": avg, "chart": helper.list_to_camel_case(rows)}
|
||||
return {"value": avg, "chart": helper.list_to_camel_case(rows), "unit": schemas.TemplatePredefinedUnits.frame}
|
||||
|
||||
|
||||
def get_crashes(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
|
||||
|
|
@ -2269,7 +2272,7 @@ def get_application_activity_avg_image_load_time(project_id, startTimestamp=Time
|
|||
row = __get_application_activity_avg_image_load_time(cur, project_id, startTimestamp, endTimestamp, **args)
|
||||
previous = helper.dict_to_camel_case(row)
|
||||
results["progress"] = helper.__progress(old_val=previous["value"], new_val=results["value"])
|
||||
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -2345,6 +2348,7 @@ def get_application_activity_avg_page_load_time(project_id, startTimestamp=TimeU
|
|||
row = __get_application_activity_avg_page_load_time(cur, project_id, startTimestamp, endTimestamp, **args)
|
||||
previous = helper.dict_to_camel_case(row)
|
||||
results["progress"] = helper.__progress(old_val=previous["value"], new_val=results["value"])
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -2414,6 +2418,7 @@ def get_application_activity_avg_request_load_time(project_id, startTimestamp=Ti
|
|||
row = __get_application_activity_avg_request_load_time(cur, project_id, startTimestamp, endTimestamp, **args)
|
||||
previous = helper.dict_to_camel_case(row)
|
||||
results["progress"] = helper.__progress(old_val=previous["value"], new_val=results["value"])
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -2475,6 +2480,7 @@ def get_page_metrics_avg_dom_content_load_start(project_id, startTimestamp=TimeU
|
|||
if len(rows) > 0:
|
||||
previous = helper.dict_to_camel_case(rows[0])
|
||||
results["progress"] = helper.__progress(old_val=previous["value"], new_val=results["value"])
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -2509,6 +2515,7 @@ def get_page_metrics_avg_first_contentful_pixel(project_id, startTimestamp=TimeU
|
|||
if len(rows) > 0:
|
||||
previous = helper.dict_to_camel_case(rows[0])
|
||||
results["progress"] = helper.__progress(old_val=previous["value"], new_val=results["value"])
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -2542,6 +2549,7 @@ def get_user_activity_avg_visited_pages(project_id, startTimestamp=TimeUTC.now(d
|
|||
|
||||
previous = helper.dict_to_camel_case(row)
|
||||
results["progress"] = helper.__progress(old_val=previous["value"], new_val=results["value"])
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.count
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -2572,6 +2580,7 @@ def get_user_activity_avg_session_duration(project_id, startTimestamp=TimeUTC.no
|
|||
|
||||
previous = helper.dict_to_camel_case(row)
|
||||
results["progress"] = helper.__progress(old_val=previous["value"], new_val=results["value"])
|
||||
results["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return results
|
||||
|
||||
|
||||
|
|
@ -2609,6 +2618,7 @@ def get_top_metrics_avg_response_time(project_id, startTimestamp=TimeUTC.now(del
|
|||
"endTimestamp": endTimestamp,
|
||||
"value": value, **__get_constraint_values(args)}))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return helper.dict_to_camel_case(row)
|
||||
|
||||
|
||||
|
|
@ -2631,6 +2641,7 @@ def get_top_metrics_avg_first_paint(project_id, startTimestamp=TimeUTC.now(delta
|
|||
"endTimestamp": endTimestamp,
|
||||
"value": value, **__get_constraint_values(args)}))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return helper.dict_to_camel_case(row)
|
||||
|
||||
|
||||
|
|
@ -2653,6 +2664,7 @@ def get_top_metrics_avg_dom_content_loaded(project_id, startTimestamp=TimeUTC.no
|
|||
"endTimestamp": endTimestamp,
|
||||
"value": value, **__get_constraint_values(args)}))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return helper.dict_to_camel_case(row)
|
||||
|
||||
|
||||
|
|
@ -2675,6 +2687,7 @@ def get_top_metrics_avg_till_first_bit(project_id, startTimestamp=TimeUTC.now(de
|
|||
"endTimestamp": endTimestamp,
|
||||
"value": value, **__get_constraint_values(args)}))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return helper.dict_to_camel_case(row)
|
||||
|
||||
|
||||
|
|
@ -2697,6 +2710,7 @@ def get_top_metrics_avg_time_to_interactive(project_id, startTimestamp=TimeUTC.n
|
|||
"endTimestamp": endTimestamp,
|
||||
"value": value, **__get_constraint_values(args)}))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.millisecond
|
||||
return helper.dict_to_camel_case(row)
|
||||
|
||||
|
||||
|
|
@ -2715,4 +2729,5 @@ def get_top_metrics_count_requests(project_id, startTimestamp=TimeUTC.now(delta_
|
|||
"endTimestamp": endTimestamp,
|
||||
"value": value, **__get_constraint_values(args)}))
|
||||
row = cur.fetchone()
|
||||
row["unit"] = schemas.TemplatePredefinedUnits.count
|
||||
return helper.dict_to_camel_case(row)
|
||||
|
|
|
|||
|
|
@ -191,9 +191,10 @@ def update_widget(project_id, user_id, dashboard_id, widget_id, data: schemas.Up
|
|||
pg_query = """UPDATE dashboard_widgets
|
||||
SET config= %(config)s
|
||||
WHERE dashboard_id=%(dashboard_id)s AND widget_id=%(widget_id)s
|
||||
RETURNINIG *;"""
|
||||
RETURNING *;"""
|
||||
params = {"userId": user_id, "projectId": project_id, "dashboard_id": dashboard_id,
|
||||
"widget_id": widget_id, **data.dict()}
|
||||
params["config"] = json.dumps(data.config)
|
||||
cur.execute(cur.mogrify(pg_query, params))
|
||||
row = cur.fetchone()
|
||||
return helper.dict_to_camel_case(row)
|
||||
|
|
@ -248,7 +249,15 @@ PREDEFINED = {schemas.TemplatePredefinedKeys.count_sessions: dashboard.get_proce
|
|||
schemas.TemplatePredefinedKeys.avg_time_to_render: dashboard.get_time_to_render,
|
||||
schemas.TemplatePredefinedKeys.avg_used_js_heap_size: dashboard.get_memory_consumption,
|
||||
schemas.TemplatePredefinedKeys.avg_cpu: dashboard.get_avg_cpu,
|
||||
schemas.TemplatePredefinedKeys.avg_fps: dashboard.get_avg_fps}
|
||||
schemas.TemplatePredefinedKeys.avg_fps: dashboard.get_avg_fps,
|
||||
schemas.TemplatePredefinedKeys.impacted_sessions_by_js_errors: dashboard.get_impacted_sessions_by_js_errors,
|
||||
schemas.TemplatePredefinedKeys.domains_errors_4xx: dashboard.get_domains_errors_4xx,
|
||||
schemas.TemplatePredefinedKeys.domains_errors_5xx: dashboard.get_domains_errors_5xx,
|
||||
schemas.TemplatePredefinedKeys.errors_per_domains: dashboard.get_errors_per_domains,
|
||||
schemas.TemplatePredefinedKeys.calls_errors: dashboard.get_calls_errors,
|
||||
schemas.TemplatePredefinedKeys.errors_by_type: dashboard.get_errors_per_type,
|
||||
schemas.TemplatePredefinedKeys.errors_by_origin: dashboard.get_resources_by_party,
|
||||
}
|
||||
|
||||
|
||||
def get_predefined_metric(key: schemas.TemplatePredefinedKeys, project_id: int, data: dict):
|
||||
|
|
@ -260,7 +269,6 @@ def make_chart_metrics(project_id, user_id, metric_id, data: schemas.CustomMetri
|
|||
include_dashboard=False)
|
||||
if raw_metric is None:
|
||||
return None
|
||||
print(raw_metric)
|
||||
metric = schemas.CustomMetricAndTemplate = schemas.CustomMetricAndTemplate.parse_obj(raw_metric)
|
||||
if metric.is_template:
|
||||
return get_predefined_metric(key=metric.predefined_key, project_id=project_id, data=data.dict())
|
||||
|
|
|
|||
|
|
@ -934,6 +934,22 @@ class TemplatePredefinedKeys(str, Enum):
|
|||
avg_used_js_heap_size = "avg_used_js_heap_size"
|
||||
avg_cpu = "avg_cpu"
|
||||
avg_fps = "avg_fps"
|
||||
impacted_sessions_by_js_errors = "impacted_sessions_by_js_errors"
|
||||
domains_errors_4xx = "domains_errors_4xx"
|
||||
domains_errors_5xx = "domains_errors_5xx"
|
||||
errors_per_domains = "errors_per_domains"
|
||||
calls_errors = "calls_errors"
|
||||
errors_by_type = "errors_per_type"
|
||||
errors_by_origin = "resources_by_party"
|
||||
|
||||
|
||||
class TemplatePredefinedUnits(str, Enum):
|
||||
millisecond = "ms"
|
||||
minute = "min"
|
||||
memory = "mb"
|
||||
frame = "f/s"
|
||||
percentage = "%"
|
||||
count = "count"
|
||||
|
||||
|
||||
class CustomMetricAndTemplate(BaseModel):
|
||||
|
|
|
|||
|
|
@ -77,7 +77,14 @@ VALUES ('sessions count', 'overview', '{"col":1,"row":1,"position":0}', true, tr
|
|||
('requests count', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'count_requests', 'predefined', 'overview'),
|
||||
('avg time to render', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_time_to_render', 'predefined', 'overview'),
|
||||
('avg used js heap size', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_used_js_heap_size', 'predefined', 'overview'),
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview')
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview'),
|
||||
('sessions affected by js errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'impacted_sessions_by_js_errors', 'predefined', 'barChart'),
|
||||
('top domains with 4xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_4xx', 'predefined', 'lineChart'),
|
||||
('top domains with 5xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_5xx', 'predefined', 'lineChart'),
|
||||
('errors per domain', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_domains', 'predefined', 'table'),
|
||||
('fetch calls with errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'calls_errors', 'predefined', 'table'),
|
||||
('errors by type', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_type', 'predefined', 'barChart'),
|
||||
('errors by origin', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'resources_by_party', 'predefined', 'stackedBarChart')
|
||||
ON CONFLICT (predefined_key) DO UPDATE
|
||||
SET name=excluded.name,
|
||||
category=excluded.category,
|
||||
|
|
|
|||
|
|
@ -1276,7 +1276,14 @@ VALUES ('sessions count', 'overview', '{"col":1,"row":1,"position":0}', true, tr
|
|||
('requests count', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'count_requests', 'predefined', 'overview'),
|
||||
('avg time to render', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_time_to_render', 'predefined', 'overview'),
|
||||
('avg used js heap size', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_used_js_heap_size', 'predefined', 'overview'),
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview')
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview'),
|
||||
('sessions affected by js errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'impacted_sessions_by_js_errors', 'predefined', 'barChart'),
|
||||
('top domains with 4xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_4xx', 'predefined', 'lineChart'),
|
||||
('top domains with 5xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_5xx', 'predefined', 'lineChart'),
|
||||
('errors per domain', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_domains', 'predefined', 'table'),
|
||||
('fetch calls with errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'calls_errors', 'predefined', 'table'),
|
||||
('errors by type', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_type', 'predefined', 'barChart'),
|
||||
('errors by origin', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'resources_by_party', 'predefined', 'stackedBarChart')
|
||||
ON CONFLICT (predefined_key) DO UPDATE
|
||||
SET name=excluded.name,
|
||||
category=excluded.category,
|
||||
|
|
|
|||
|
|
@ -76,7 +76,14 @@ VALUES ('sessions count', 'overview', '{"col":1,"row":1,"position":0}', true, tr
|
|||
('requests count', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'count_requests', 'predefined', 'overview'),
|
||||
('avg time to render', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_time_to_render', 'predefined', 'overview'),
|
||||
('avg used js heap size', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_used_js_heap_size', 'predefined', 'overview'),
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview')
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview'),
|
||||
('sessions affected by js errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'impacted_sessions_by_js_errors', 'predefined', 'barChart'),
|
||||
('top domains with 4xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_4xx', 'predefined', 'lineChart'),
|
||||
('top domains with 5xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_5xx', 'predefined', 'lineChart'),
|
||||
('errors per domain', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_domains', 'predefined', 'table'),
|
||||
('fetch calls with errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'calls_errors', 'predefined', 'table'),
|
||||
('errors by type', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_type', 'predefined', 'barChart'),
|
||||
('errors by origin', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'resources_by_party', 'predefined', 'stackedBarChart')
|
||||
ON CONFLICT (predefined_key) DO UPDATE
|
||||
SET name=excluded.name,
|
||||
category=excluded.category,
|
||||
|
|
|
|||
|
|
@ -1067,7 +1067,14 @@ VALUES ('sessions count', 'overview', '{"col":1,"row":1,"position":0}', true, tr
|
|||
('requests count', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'count_requests', 'predefined', 'overview'),
|
||||
('avg time to render', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_time_to_render', 'predefined', 'overview'),
|
||||
('avg used js heap size', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_used_js_heap_size', 'predefined', 'overview'),
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview')
|
||||
('avg cpu', 'overview', '{"col":1,"row":1,"position":0}', true, true, true, 'avg_cpu', 'predefined', 'overview'),
|
||||
('sessions affected by js errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'impacted_sessions_by_js_errors', 'predefined', 'barChart'),
|
||||
('top domains with 4xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_4xx', 'predefined', 'lineChart'),
|
||||
('top domains with 5xx fetch errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'domains_errors_5xx', 'predefined', 'lineChart'),
|
||||
('errors per domain', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_domains', 'predefined', 'table'),
|
||||
('fetch calls with errors', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'calls_errors', 'predefined', 'table'),
|
||||
('errors by type', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'errors_per_type', 'predefined', 'barChart'),
|
||||
('errors by origin', 'errors', '{"col":1,"row":1,"position":0}', true, true, true, 'resources_by_party', 'predefined', 'stackedBarChart')
|
||||
ON CONFLICT (predefined_key) DO UPDATE
|
||||
SET name=excluded.name,
|
||||
category=excluded.category,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue