From dca285c64bd9f92470ec4ceabbd014136a699f19 Mon Sep 17 00:00:00 2001 From: Jasper Berghoef Date: Thu, 17 Nov 2016 13:53:06 +0100 Subject: [PATCH] Extended info in the segment overview because vision --- .../static/personalisation/segment/index.css | 103 ++++++++++++++---- .../personalisation/segment/referral_icon.png | Bin 0 -> 1301 bytes .../personalisation/segment/time_icon.png | Bin 0 -> 1104 bytes .../segment/visit_count_icon.png | Bin 0 -> 1473 bytes ...pie_inactive.html => create_inactive.html} | 0 .../personalisation/segment/index.html | 40 ++++++- src/personalisation/wagtail_hooks.py | 11 +- 7 files changed, 125 insertions(+), 29 deletions(-) create mode 100644 src/personalisation/static/personalisation/segment/referral_icon.png create mode 100644 src/personalisation/static/personalisation/segment/time_icon.png create mode 100644 src/personalisation/static/personalisation/segment/visit_count_icon.png rename src/personalisation/templates/modeladmin/personalisation/segment/{derpie_inactive.html => create_inactive.html} (100%) diff --git a/src/personalisation/static/personalisation/segment/index.css b/src/personalisation/static/personalisation/segment/index.css index dc1c5f8..f446b5a 100644 --- a/src/personalisation/static/personalisation/segment/index.css +++ b/src/personalisation/static/personalisation/segment/index.css @@ -64,38 +64,93 @@ } } -.block_container .block .segment_stats { - list-style: none; - padding: 0; - margin: 0; - margin-bottom: 10px; +.block_container .block h2 { + display: block; } - .block_container .block .segment_stats li { +.block_container .block .inspect_container { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: space-between; + align-items: stretch; + margin-bottom: 5px; +} + +.block_container .block .inspect_container .inspect { + display: block; + float: left; + width: calc(50% - 10px); + padding: 0; + margin: 0; + list-style: none; +} + + .block_container .block .inspect_container .inspect li { display: inline-block; - font-size: 24px; - font-weight: bold; - margin-right: 50px; - } - .block_container .block .segment_stats li::last-child{ - margin-right: 0; + margin-bottom: 5px; } - .block_container .block .segment_stats li::before { - display: inline-block; - content: ""; - width: 20px; - height: 20px; - margin-right: 5px; - background-size: 20px 20px; + .block_container .block .inspect_container .inspect li span { + display: block; + font-size: 20px; + font-weight: bold; + margin: 5px 0; + overflow-wrap: break-word; } - .block_container .block .segment_stats .visit_stat::before { - background-image: url("./rocket_icon.png"); - } - .block_container .block .segment_stats .days_stat::before { - background-image: url("./calendar_icon.png"); + + .block_container .block .inspect_container .inspect li span::before { + display: inline-block; + content: ""; + width: 16px; + height: 16px; + margin-right: 5px; + background-size: contain; + } + + .block_container .block .inspect_container .segment_stats .visit_stat span::before { + background-image: url("./rocket_icon.png"); + } + .block_container .block .inspect_container .segment_stats .days_stat span::before { + background-image: url("./calendar_icon.png"); + } + + .block_container .block .inspect_container .segment_rules .time_rule span::before { + background-image: url("./time_icon.png"); + } + .block_container .block .inspect_container .segment_rules .visit_count_rule span::before { + background-image: url("./visit_count_icon.png"); + } + + .block_container .block .inspect_container .inspect li pre { + position: relative; + box-sizing: border-box; + width: auto; + background-color: #eee; + border: 1px solid #ccc; + margin: 5px 0 5px 21px; + padding: 2px 5px; + word-wrap: break-word; + word-break: break-all; + border-radius: 3px; } + .block_container .block .inspect_container .inspect li pre::before { + display: inline-block; + position: absolute; + content: ""; + left: -21px; + top: 6px; + width: 16px; + height: 16px; + margin-right: 5px; + background-size: contain; + } + + .block_container .block .inspect_container .segment_rules .referral_rule pre::before { + background-image: url("./referral_icon.png"); + } + .block_container .block.suggestion .suggestive_text { display: block; position: absolute; diff --git a/src/personalisation/static/personalisation/segment/referral_icon.png b/src/personalisation/static/personalisation/segment/referral_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4955b08b2da278743dafb59b8022ccc132b96281 GIT binary patch literal 1301 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 bwI2Kl_iI`CRKdHN00000NkvXXu0mjf5cuIL literal 0 HcmV?d00001 diff --git a/src/personalisation/templates/modeladmin/personalisation/segment/derpie_inactive.html b/src/personalisation/templates/modeladmin/personalisation/segment/create_inactive.html similarity index 100% rename from src/personalisation/templates/modeladmin/personalisation/segment/derpie_inactive.html rename to src/personalisation/templates/modeladmin/personalisation/segment/create_inactive.html diff --git a/src/personalisation/templates/modeladmin/personalisation/segment/index.html b/src/personalisation/templates/modeladmin/personalisation/segment/index.html index 723c387..e87bfd7 100644 --- a/src/personalisation/templates/modeladmin/personalisation/segment/index.html +++ b/src/personalisation/templates/modeladmin/personalisation/segment/index.html @@ -23,10 +23,42 @@ {% for segment in object_list %}

{{ segment }}

-
    -
  • {{ segment.visit_count|localize }} {% trans "visits" %}
  • -
  • {{ segment.enable_date|days_since:segment.disable_date }} {% trans "days" %}
  • -
+
+
    +
  • + {{ segment.visit_count|localize }} + {% trans "Visitors are part of this segment" %} +
  • +
  • + {{ segment.enable_date|days_since:segment.disable_date }} + {% trans "Days since matching visitors are appointed to this segment" %} +
  • +
+ +
    + {% for rule in segment.time_rules.all %} +
  • + These users visit between + {{ rule.start_time }} and {{ rule.end_time }} +
  • + {% endfor %} + + {% for rule in segment.referral_rules.all %} +
  • + These visits originate from +
    {{ rule.regex_string }}
    +
  • + {% endfor %} + + {% for rule in segment.visit_count_rules.all %} +
  • + These users visited {{ rule.counted_page }} + {{ rule.get_operator_display }} {{ rule.count }} times +
  • + {% endfor %} +
+
+ {% if user_can_create %}
    {% if segment.status == "disabled" %} diff --git a/src/personalisation/wagtail_hooks.py b/src/personalisation/wagtail_hooks.py index 9d8e14d..ec53309 100644 --- a/src/personalisation/wagtail_hooks.py +++ b/src/personalisation/wagtail_hooks.py @@ -2,7 +2,7 @@ import time from django.conf.urls import include, url from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register -from wagtail.contrib.modeladmin.views import CreateView +from wagtail.contrib.modeladmin.views import IndexView from wagtail.wagtailcore import hooks from personalisation import admin_urls @@ -22,6 +22,15 @@ def register_admin_urls(): ] +class SegmentIndexView(IndexView): + def get_context_data(self, **kwargs): + context = { + 'additional_forms': (TimeRuleForm, ReferralRuleForm, VisitCountRuleForm), + } + context.update(kwargs) + return super(SegmentIndexView, self).get_context_data(**context) + + class SegmentModelAdmin(ModelAdmin): """The base model for the Segments administration interface.""" model = Segment