diff --git a/issues/templates/issues/base.html b/issues/templates/issues/base.html index a06a2b4..5adb8bb 100644 --- a/issues/templates/issues/base.html +++ b/issues/templates/issues/base.html @@ -108,6 +108,7 @@
Event List
History
Grouping
+
Breadcrumbs
diff --git a/issues/templates/issues/issue_breadcrumbs.html b/issues/templates/issues/issue_breadcrumbs.html new file mode 100644 index 0000000..b062cc4 --- /dev/null +++ b/issues/templates/issues/issue_breadcrumbs.html @@ -0,0 +1,39 @@ +{% extends "issues/base.html" %} +{% load static %} +{% load stricter_templates %} +{% load issues %} + +{% block tab_content %} + + +{# #} + +{% for breadcrumb in parsed_data.breadcrumbs.values %} + + + + + {% comment %} + {# not _that_ useful + + {% endcomment %} + + + + + + {% endfor %} + +
+ {{ breadcrumb.category }} + + {{ breadcrumb.type }} + + {{ breadcrumb.message }} + + {{ breadcrumb.timestamp }} + {# {{ breadcrumb.timestamp|date:"G:i" and milis }} #} +
+ + +{% endblock %} diff --git a/issues/urls.py b/issues/urls.py index 88a8873..943aaad 100644 --- a/issues/urls.py +++ b/issues/urls.py @@ -2,7 +2,7 @@ from django.urls import path from .views import ( issue_list, issue_event_stacktrace, issue_event_details, issue_last_event, issue_event_list, issue_history, - issue_grouping) + issue_grouping, issue_event_breadcrumbs) urlpatterns = [ path('/', issue_list, {"state_filter": "open"}, name="issue_list_open"), @@ -13,6 +13,7 @@ urlpatterns = [ path('issue//event//', issue_event_stacktrace), path('issue//event//details/', issue_event_details), + path('issue//event//breadcrumbs/', issue_event_breadcrumbs), path('issue//history/', issue_history), path('issue//grouping/', issue_grouping), path('issue//event/last/', issue_last_event), diff --git a/issues/views.py b/issues/views.py index 1340517..35d3f41 100644 --- a/issues/views.py +++ b/issues/views.py @@ -200,6 +200,26 @@ def issue_event_stacktrace(request, issue, event_pk): }) +@issue_membership_required +def issue_event_breadcrumbs(request, issue, event_pk): + if request.method == "POST": + return _handle_post(request, issue) + + event = get_object_or_404(Event, pk=event_pk) + + parsed_data = json.loads(event.data) + + return render(request, "issues/issue_breadcrumbs.html", { + "tab": "breadcrumbs", + "project": issue.project, + "issue": issue, + "event": event, + "is_event_page": True, + "parsed_data": parsed_data, + "mute_options": GLOBAL_MUTE_OPTIONS, + }) + + @issue_membership_required def issue_event_details(request, issue, event_pk): if request.method == "POST": diff --git a/theme/static/css/dist/styles.css b/theme/static/css/dist/styles.css index 1966e2d..9078016 100644 --- a/theme/static/css/dist/styles.css +++ b/theme/static/css/dist/styles.css @@ -1319,6 +1319,10 @@ select { text-align: center; } +.align-top { + vertical-align: top; +} + .font-mono { font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }