workarea-admin 3.5.0.beta.1 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/workarea/admin/config.js.erb +12 -4
  3. data/app/assets/javascripts/workarea/admin/modules/impersonation_notification.js +1 -3
  4. data/app/assets/javascripts/workarea/admin/modules/selects.js +11 -1
  5. data/app/assets/javascripts/workarea/admin/modules/timeline_report_chart.js +69 -5
  6. data/app/assets/javascripts/workarea/admin/modules/toggle_elements.js +2 -2
  7. data/app/assets/javascripts/workarea/admin/modules/tooltips.js +18 -3
  8. data/app/assets/javascripts/workarea/admin/templates/chart_legend.jst.ejs +2 -1
  9. data/app/assets/stylesheets/workarea/admin/application.scss.erb +1 -0
  10. data/app/assets/stylesheets/workarea/admin/components/_button.scss +7 -0
  11. data/app/assets/stylesheets/workarea/admin/components/_chart_legend.scss +18 -1
  12. data/app/assets/stylesheets/workarea/admin/components/_timeline_report.scss +30 -0
  13. data/app/assets/stylesheets/workarea/admin/settings/_grid.scss +1 -0
  14. data/app/controllers/workarea/admin/content_assets_controller.rb +1 -3
  15. data/app/controllers/workarea/admin/custom_events_controller.rb +41 -0
  16. data/app/controllers/workarea/admin/data_file_imports_controller.rb +1 -1
  17. data/app/controllers/workarea/admin/guest_browsings_controller.rb +1 -2
  18. data/app/controllers/workarea/admin/segmentables_controller.rb +12 -0
  19. data/app/helpers/workarea/admin/activities_helper.rb +1 -1
  20. data/app/helpers/workarea/admin/application_helper.rb +15 -0
  21. data/app/helpers/workarea/admin/facets_helper.rb +3 -0
  22. data/app/helpers/workarea/admin/icons_helper.rb +12 -3
  23. data/app/helpers/workarea/admin/segments_helper.rb +12 -1
  24. data/app/view_models/workarea/admin/alerts_view_model.rb +12 -1
  25. data/app/view_models/workarea/admin/reports/timeline_view_model.rb +77 -13
  26. data/app/view_models/workarea/admin/segment_view_model.rb +15 -0
  27. data/app/views/layouts/workarea/admin/application.html.haml +8 -2
  28. data/app/views/workarea/admin/activities/_create.html.haml +1 -1
  29. data/app/views/workarea/admin/activities/_destroy.html.haml +1 -1
  30. data/app/views/workarea/admin/activities/_update.html.haml +1 -1
  31. data/app/views/workarea/admin/catalog_categories/_cards.html.haml +1 -1
  32. data/app/views/workarea/admin/catalog_categories/index.html.haml +1 -1
  33. data/app/views/workarea/admin/catalog_products/_cards.html.haml +1 -1
  34. data/app/views/workarea/admin/catalog_products/index.html.haml +1 -1
  35. data/app/views/workarea/admin/content/_card.html.haml +3 -0
  36. data/app/views/workarea/admin/content/_edit.html.haml +11 -3
  37. data/app/views/workarea/admin/content/_form.html.haml +8 -1
  38. data/app/views/workarea/admin/content_assets/edit.html.haml +6 -1
  39. data/app/views/workarea/admin/content_assets/new.html.haml +6 -1
  40. data/app/views/workarea/admin/content_blocks/_asset.html.haml +3 -2
  41. data/app/views/workarea/admin/content_pages/_cards.html.haml +1 -1
  42. data/app/views/workarea/admin/content_pages/index.html.haml +1 -1
  43. data/app/views/workarea/admin/data_file_imports/new.html.haml +1 -1
  44. data/app/views/workarea/admin/insights/_cold_searches.html.haml +1 -1
  45. data/app/views/workarea/admin/insights/_hot_searches.html.haml +1 -1
  46. data/app/views/workarea/admin/insights/_searches_to_improve.html.haml +1 -1
  47. data/app/views/workarea/admin/insights/_star_searches.html.haml +1 -1
  48. data/app/views/workarea/admin/insights/_trending_searches.html.haml +1 -1
  49. data/app/views/workarea/admin/navigation_menus/index.html.haml +1 -1
  50. data/app/views/workarea/admin/pricing_discounts/_cards.html.haml +3 -1
  51. data/app/views/workarea/admin/pricing_discounts/edit.html.haml +16 -5
  52. data/app/views/workarea/admin/pricing_discounts/index.html.haml +1 -1
  53. data/app/views/workarea/admin/releases/edit.html.haml +1 -1
  54. data/app/views/workarea/admin/releases/index.html.haml +25 -0
  55. data/app/views/workarea/admin/releases/list.html.haml +2 -2
  56. data/app/views/workarea/admin/reports/timeline.html.haml +89 -1
  57. data/app/views/workarea/admin/search_customizations/_cards.html.haml +1 -1
  58. data/app/views/workarea/admin/search_customizations/index.html.haml +1 -1
  59. data/app/views/workarea/admin/segment_rules/fields/_last_order.html.haml +2 -1
  60. data/app/views/workarea/admin/segment_rules/fields/_revenue.html.haml +2 -3
  61. data/app/views/workarea/admin/segment_rules/fields/_traffic_referrer.html.haml +12 -6
  62. data/app/views/workarea/admin/segment_rules/summaries/_last_order.html.haml +4 -1
  63. data/app/views/workarea/admin/segment_rules/summaries/_traffic_referrer.html.haml +2 -10
  64. data/app/views/workarea/admin/segmentables/index.html.haml +46 -0
  65. data/app/views/workarea/admin/segments/_cards.html.haml +21 -0
  66. data/app/views/workarea/admin/segments/_publish.html.haml +2 -2
  67. data/app/views/workarea/admin/shared/_active_field.html.haml +5 -0
  68. data/app/views/workarea/admin/status_report_mailer/report.html.haml +5 -0
  69. data/app/views/workarea/admin/toolbar/show.html.haml +1 -0
  70. data/app/views/workarea/admin/users/index.html.haml +1 -0
  71. data/config/locales/en.yml +74 -17
  72. data/config/routes.rb +3 -0
  73. data/test/helpers/workarea/admin/application_helper_test.rb +24 -0
  74. data/test/helpers/workarea/admin/facets_helper_test.rb +28 -0
  75. data/test/integration/workarea/admin/assets_integration_test.rb +4 -2
  76. data/test/integration/workarea/admin/custom_events_integration_test.rb +54 -0
  77. data/test/integration/workarea/admin/data_file_imports_integration_test.rb +8 -0
  78. data/test/integration/workarea/admin/fulfillment_skus_integration_test.rb +2 -2
  79. data/test/system/workarea/admin/alerts_system_test.rb +7 -3
  80. data/test/system/workarea/admin/content_system_test.rb +46 -0
  81. data/test/system/workarea/admin/guest_browsing_system_test.rb +1 -1
  82. data/test/system/workarea/admin/orders_system_test.rb +3 -3
  83. data/test/system/workarea/admin/payment_transactions_system_test.rb +3 -3
  84. data/test/system/workarea/admin/reports_system_test.rb +50 -1
  85. data/test/system/workarea/admin/segments_system_test.rb +32 -4
  86. data/test/view_models/workarea/admin/reports/timeline_view_model_test.rb +32 -1
  87. metadata +14 -8
@@ -24,10 +24,15 @@
24
24
  = text_field_tag 'asset[name]', @asset.name, class: 'text-box'
25
25
 
26
26
  .property
27
- = label_tag 'asset_tag_list', t('workarea.admin.fields.tags'), class: 'property__name'
27
+ = label_tag 'asset_tag_list', class: 'property__name' do
28
+ %span= t('workarea.admin.fields.tags')
29
+ = link_to '#tags-info', data: { tooltip: '' } do
30
+ = inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue')
28
31
  = text_field_tag 'asset[tag_list]', @asset.tag_list, class: 'text-box'
29
32
  %span.property__note= t('workarea.admin.content_assets.edit.tags_note')
30
33
 
34
+ #tags-info.tooltip-content= t('workarea.admin.content_assets.edit.tags_tooltip_html')
35
+
31
36
  .grid.grid--huge
32
37
  .grid__cell.grid__cell--50-at-medium
33
38
  .property
@@ -34,10 +34,15 @@
34
34
  %span.property__note= t('workarea.admin.content_assets.new.alt_text_note')
35
35
 
36
36
  .property
37
- = label_tag 'asset_tag_list', t('workarea.admin.fields.tags'), class: 'property__name'
37
+ = label_tag 'asset_tag_list', class: 'property__name' do
38
+ %span= t('workarea.admin.fields.tags')
39
+ = link_to '#tags-info', data: { tooltip: '' } do
40
+ = inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue')
38
41
  = text_field_tag 'asset[tag_list]', @asset.tag_list, class: 'text-box'
39
42
  %span.property__note= t('workarea.admin.content_assets.new.tags_note')
40
43
 
44
+ #tags-info.tooltip-content= t('workarea.admin.content_assets.edit.tags_tooltip_html')
45
+
41
46
  .workflow-bar
42
47
  .grid.grid--auto.grid--right.grid--middle
43
48
  .grid__cell= button_tag t('workarea.admin.content_assets.new.create_asset'), value: 'create_asset', class: 'workflow-bar__button workflow-bar__button--create', data: { disable_with: t('workarea.admin.content_assets.new.create_asset_disabled_text') }
@@ -22,9 +22,10 @@
22
22
  .asset-picker-field__cell= button_tag t('workarea.admin.content_blocks.asset.clear_asset'), type: 'button', value: 'clear_asset', id: nil, class: 'text-button text-button--destroy', data: { asset_picker_field_clear: '' }
23
23
 
24
24
  %span.property__note
25
- = t('workarea.admin.content_blocks.asset.alt_text_note')
26
25
  - if asset.alt_text.present?
27
- %strong= "(#{asset.alt_text})"
26
+ = t('workarea.admin.content_blocks.asset.alt_text_note_html', text: asset.alt_text)
27
+ - else
28
+ = t('workarea.admin.content_blocks.asset.no_default_alt_text')
28
29
 
29
30
  - if field.tooltip.present?
30
31
  .tooltip-content{ id: "#{dom_id(block, field.slug)}_tooltip" }
@@ -11,7 +11,7 @@
11
11
  %li
12
12
  %strong= t('workarea.admin.fields.active')
13
13
  = check_box_tag 'page', 'active', model.active, disabled: true
14
- = inline_svg('workarea/admin/icons/user.svg', class: 'svg-icon svg-icon--small svg-icon--blue') if model.active? && model.segments.any?
14
+ = segments_icons_for(model)
15
15
  %li
16
16
  %strong= t('workarea.admin.fields.show_left_navigation')
17
17
  = model.show_navigation?.to_s.titleize
@@ -61,7 +61,7 @@
61
61
  = link_to result.name, content_page_path(result)
62
62
  = upcoming_changesets_icon_for(result)
63
63
  = comments_icon_for(result)
64
- = segments_icon_for(result)
64
+ = segments_icons_for(result)
65
65
  %td
66
66
  - if result.breadcrumbs.blank?
67
67
  %em= t('workarea.admin.fields.no_taxonomy')
@@ -35,7 +35,7 @@
35
35
  - Workarea.config.data_file_formats.each do |file_type|
36
36
  = link_to_unless @import.file_type.to_s == file_type.to_s, file_type.upcase, url_for(import: { model_type: @import.model_type, file_type: file_type }), data: { turbolinks: false }
37
37
  %br
38
- = link_to t('workarea.admin.data_file_imports.new.download_sample'), url_for(params.merge(action: 'sample')) if @import.samples.present?
38
+ = link_to t('workarea.admin.data_file_imports.new.download_sample'), url_for(params.merge(action: 'sample', format: @import.file_type)) if @import.samples.present?
39
39
 
40
40
  - if @import.samples.blank?
41
41
  %p.align-center= t('workarea.admin.data_file_imports.new.no_samples')
@@ -16,7 +16,7 @@
16
16
  %td.align-center
17
17
  = form_tag search_customizations_path, method: 'post' do
18
18
  = hidden_field_tag 'q', result.query_id, id: nil
19
- = button_tag result.query_id, class: 'button button--small'
19
+ = button_tag result.query_string, class: 'button button--small'
20
20
  %td.align-center
21
21
  - unless result.previous_week_revenue.zero?
22
22
  %strong= number_to_currency(result.revenue_change)
@@ -16,7 +16,7 @@
16
16
  %td.align-center
17
17
  = form_tag search_customizations_path, method: 'post' do
18
18
  = hidden_field_tag 'q', result.query_id, id: nil
19
- = button_tag result.query_id, class: 'button button--small'
19
+ = button_tag result.query_string, class: 'button button--small'
20
20
  %td.align-center
21
21
  - if result.previous_week_revenue.zero?
22
22
  \-
@@ -16,7 +16,7 @@
16
16
  %td.align-center
17
17
  = form_tag search_customizations_path, method: 'post' do
18
18
  = hidden_field_tag 'q', result.query_id, id: nil
19
- = button_tag result.query_id, class: 'button button--small'
19
+ = button_tag result.query_string, class: 'button button--small'
20
20
  %td.align-center= insights_number_to_percentage(result.conversion_rate)
21
21
  %td.align-center
22
22
  - if result.searches.blank?
@@ -16,6 +16,6 @@
16
16
  %td.align-center
17
17
  = form_tag search_customizations_path, method: 'post' do
18
18
  = hidden_field_tag 'q', result.query_id, id: nil
19
- = button_tag result.query_id, class: 'button button--small'
19
+ = button_tag result.query_string, class: 'button button--small'
20
20
  %td.align-center= insights_number_to_percentage(result.conversion_rate)
21
21
  %td.align-center= number_with_delimiter(result.searches)
@@ -16,6 +16,6 @@
16
16
  %td.align-center
17
17
  = form_tag search_customizations_path, method: 'post' do
18
18
  = hidden_field_tag 'q', result.query_id, id: nil
19
- = button_tag result.query_id, class: 'button button--small'
19
+ = button_tag result.query_string, class: 'button button--small'
20
20
  %td.align-center= number_with_delimiter result.improving_weeks
21
21
  %td.align-center= number_with_delimiter result.orders
@@ -40,7 +40,7 @@
40
40
  = link_to navigation_menus_path(menu_id: menu), class: 'navigation-builder__node-link', data: { tooltip: { content_id: "#navigation-builder__tooltip-#{menu.id}", interactive: true, allow_click: true }.to_json } do
41
41
  = inline_svg("workarea/admin/icons/grip.svg", title: t('workarea.admin.navigation_menus.index.drag_to_rearrange'), class: 'navigation-builder__node-icon svg-icon svg-icon--small')
42
42
  %span.navigation-builder__node-text= menu.name
43
- = segments_icon_for(menu)
43
+ = segments_icons_for(menu)
44
44
 
45
45
  .tooltip-content{ id: "navigation-builder__tooltip-#{menu.id}" }
46
46
  .navigation-builder__actions
@@ -15,7 +15,7 @@
15
15
  %li
16
16
  %strong #{t('workarea.admin.fields.active')}:
17
17
  = check_box_tag 'discount', 'active', model.active, disabled: true
18
- = inline_svg('workarea/admin/icons/user.svg', class: 'svg-icon svg-icon--small svg-icon--blue') if model.active? && model.segments.any?
18
+ = segments_icons_for(model)
19
19
  %li
20
20
  %strong #{t('workarea.admin.fields.redemptions')}:
21
21
  = model.redemptions.size
@@ -137,6 +137,8 @@
137
137
  = link_to pricing_discount_redemptions_path(model), class: 'card__button' do
138
138
  %span.button.button--small= t('workarea.admin.pricing_discounts.cards.redemptions.view')
139
139
 
140
+ = append_partials('admin.discount_cards', discount: model, active: local_assigns[:active])
141
+
140
142
  .grid__cell
141
143
  = render 'workarea/admin/timeline/card', timeline: model.timeline, active: local_assigns[:active]
142
144
 
@@ -30,12 +30,23 @@
30
30
  = text_field_tag 'discount[tag_list]', @discount.tag_list, class: 'text-box'
31
31
  %span.property__note= t('workarea.admin.form.csv_field_note')
32
32
 
33
- .property
34
- %span.property__name
35
- = t('workarea.admin.fields.active')
36
- = inline_svg('workarea/admin/i18n.svg', class: 'svg-icon svg-icon--small') if locale_options.many? && Workarea.config.localized_active_fields
37
- = render 'workarea/admin/shared/active_field', scope: 'discount', model: @discount
33
+ .grid
34
+ .grid__cell.grid__cell--50.grid__cell--25-at-medium
35
+ .property
36
+ %span.property__name
37
+ = t('workarea.admin.fields.active')
38
+ = inline_svg('workarea/admin/i18n.svg', class: 'svg-icon svg-icon--small') if locale_options.many? && Workarea.config.localized_active_fields
39
+ = render 'workarea/admin/shared/active_field', scope: 'discount', model: @discount
40
+
41
+ .grid__cell.grid__cell--50.grid__cell--25-at-medium
42
+ .property
43
+ %span.property__name
44
+ = t('workarea.admin.fields.auto_deactivate')
45
+ = link_to '#auto-deactivate-info', data: { tooltip: '' } do
46
+ = inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue')
47
+ = toggle_button_for 'discount[auto_deactivate]', @discount.auto_deactivate?
38
48
 
49
+ #auto-deactivate-info.tooltip-content= t('workarea.admin.pricing_discounts.edit.auto_deactivate_info', duration: duration_in_words(Workarea.config.discount_staleness_ttl))
39
50
 
40
51
  .grid
41
52
  .grid__cell.grid__cell--33.grid__cell--25-at-medium
@@ -63,7 +63,7 @@
63
63
  = upcoming_changesets_icon_for(result)
64
64
  = comments_icon_for(result)
65
65
  = top_icon_for(result)
66
- = segments_icon_for(result)
66
+ = segments_icons_for(result)
67
67
  %td= result.slug.titleize
68
68
  %td.align-center= t("workarea.admin.#{result.single_use?}")
69
69
  %td.align-center= t("workarea.admin.#{result.allow_sale_items?}")
@@ -37,7 +37,7 @@
37
37
  = label_tag 'release_publish_at', t('workarea.admin.fields.publish_at'), class: 'property__name'
38
38
 
39
39
  - if current_user.can_publish_now?
40
- .box.box--rounded= hidden_field_tag 'release[publish_at]', @release.publish_at, data: { datetimepicker_field: { inline: true } }
40
+ .box.box--rounded.box--padded= hidden_field_tag 'release[publish_at]', @release.publish_at, data: { datetimepicker_field: { inline: true } }
41
41
  - elsif @release.publish_at.present?
42
42
  = local_time(@release.publish_at)
43
43
  - else
@@ -87,3 +87,28 @@
87
87
 
88
88
 
89
89
  = link_to inline_svg('workarea/admin/icons/arrow_down.svg', title: t('workarea.admin.releases.calendar.next_week'), class: 'calendar__control-icon'), releases_path(start_date: @calendar.next_week), class: 'calendar__control calendar__control--next'
90
+
91
+ .workflow-bar
92
+ .grid.grid--auto.grid--right
93
+ - calendar_feed_url = calendar_feed_releases_url(token: current_user.token, protocol: 'webcal')
94
+ .grid__cell= button_tag t('workarea.admin.releases.index.add_to_calendar.link_text'), class: 'workflow-bar__button', data: { add_to_calendar_button: { initial: '#calendar-tooltip', moreInfo: '#google-calendar-info' }.as_json }
95
+ #calendar-tooltip.tooltip-content.tooltip-content--no-padding
96
+ .add-to-calendar
97
+ %ul.add-to-calendar__list
98
+ %li.add-to-calendar__item
99
+ = link_to calendar_feed_url, class: 'grid grid--auto grid--middle grid--large', data: { add_to_calendar_button_toggle: '' } do
100
+ %span.grid__cell= image_tag 'workarea/admin/icons/google_calendar.svg', size: '24x24'
101
+ %span.grid__cell
102
+ %span.add-to-calendar__link= t('workarea.admin.releases.index.add_to_calendar.tooltip.google_calendar')
103
+ %li.add-to-calendar__item
104
+ = link_to calendar_feed_url, class: 'grid grid--auto grid--middle grid--large' do
105
+ %span.grid__cell= image_tag 'workarea/admin/icons/apple_calendar.svg', size: '24x24'
106
+ %span.grid__cell
107
+ %span.add-to-calendar__link= t('workarea.admin.releases.index.add_to_calendar.tooltip.apple_calendar')
108
+ %li.add-to-calendar__item
109
+ = link_to calendar_feed_url, class: 'grid grid--auto grid--middle grid--large' do
110
+ %span.grid__cell= image_tag 'workarea/admin/icons/outlook.svg', size: '24x24'
111
+ %span.grid__cell
112
+ %span.add-to-calendar__link= t('workarea.admin.releases.index.add_to_calendar.tooltip.outlook')
113
+ .hidden
114
+ #google-calendar-info= t('workarea.admin.releases.index.add_to_calendar.tooltip.google_calendar_instructions_html', calendar_feed_url: calendar_feed_url)
@@ -78,9 +78,9 @@
78
78
 
79
79
  .workflow-bar
80
80
  .grid
81
- .grid__cell.grid__cell--80
81
+ .grid__cell.grid__cell--50
82
82
  = render 'workarea/admin/shared/bulk_actions', klass: Workarea::Release, search: @search, import: false, export: false
83
- .grid__cell.grid__cell--20
83
+ .grid__cell.grid__cell--50
84
84
  .grid.grid--auto.grid--right
85
85
  - calendar_feed_url = calendar_feed_releases_url(token: current_user.token, protocol: 'webcal')
86
86
  .grid__cell= button_tag t('workarea.admin.releases.index.add_to_calendar.link_text'), class: 'workflow-bar__button', data: { add_to_calendar_button: { initial: '#calendar-tooltip', moreInfo: '#google-calendar-info' }.as_json }
@@ -17,4 +17,92 @@
17
17
  -# Generated via JS
18
18
 
19
19
  .section
20
- %canvas#timeline-report{ data: { timeline_report_chart: @report.graph_data.to_json } }
20
+ .timeline-report
21
+ .grid.grid--huge
22
+ .grid__cell.grid__cell--80-at-medium
23
+ %canvas#timeline-report{ data: { timeline_report_chart: @report.graph_data.to_json } }
24
+
25
+ .grid__cell.grid__cell--20-at-medium
26
+ .timeline-report__sidebar
27
+ .timeline-report__sidebar-header
28
+ .grid.grid--middle
29
+ .grid__cell.grid__cell--40
30
+ %strong.heading.heading--3.heading--no-margin
31
+ = t('workarea.admin.reports.timeline.events')
32
+ .grid__cell.grid__cell--60
33
+ .align-right
34
+ = link_to '#add_custom_event', class: 'button button--create button--tiny', data: { tooltip: { trigger: 'click', interactive: true }.to_json } do
35
+ %span.grid.grid--auto.grid--middle.grid--tiny
36
+ %span.grid__cell
37
+ = t('workarea.admin.reports.timeline.add_custom')
38
+ %span.grid__cell
39
+ = inline_svg('workarea/admin/icons/add.svg', class: 'svg-icon svg-icon--white svg-icon--small', title: t('workarea.admin.reports.timeline.add_custom'))
40
+
41
+ #add_custom_event.tooltip-content
42
+ = form_tag report_custom_events_path, method: 'post' do
43
+ .property
44
+ = label_tag 'custom_event_name', t('workarea.admin.fields.name'), class: 'property__name'
45
+ = text_field_tag 'custom_event[name]', nil, class: 'text-box'
46
+ .property
47
+ .box.box--rounded.box--padded
48
+ = hidden_field_tag 'custom_event[occurred_at]', nil, data: { datetimepicker_field: { inline: true } }
49
+ .align-center
50
+ = submit_tag t('workarea.admin.reports.timeline.add_custom_event'), class: 'button button--create button--small'
51
+
52
+ - if @report.events.empty?
53
+ %p= t('workarea.admin.reports.timeline.no_events')
54
+ - else
55
+ %ol.list-reset
56
+ - @report.events.each do |date, events|
57
+ %li.timeline-report__event-group{ data: { timeline_report_chart_event: date.strftime('%Y|%m|%d').split('|') } }
58
+ %strong= date.strftime('%B %d, %Y')
59
+ %ul.timeline-report__events-list
60
+ - events.each do |event|
61
+ %li
62
+ = link_to event.name, "##{dom_id(event)}", { data: { tooltip: { trigger: 'click', interactive: true }.to_json } }
63
+
64
+ - if @report.events.any?
65
+ - @report.events.each do |date, events|
66
+ - events.each do |event|
67
+ .tooltip-content{ id: dom_id(event) }
68
+
69
+ - if event.type == 'release'
70
+ .card
71
+ = link_to release_path(id: event.id), class: 'card__header' do
72
+ %span.card__header-text= event.name
73
+ .card__body
74
+ - if event.model.changesets_with_releasable.empty?
75
+ %p.card__empty-note= t('workarea.admin.reports.timeline.no_planned_changes')
76
+ - else
77
+ - event.model.changesets_with_releasable.take(3).each do |changeset|
78
+ .activity
79
+ .activity__header
80
+ .activity__avatar
81
+ = changeset_icon changeset, { class: 'svg-icon'}
82
+ .activity__name= changeset.name
83
+ .activity__time
84
+ = changeset.publish_humanized
85
+ - if changeset.release_date.present?
86
+ = local_time(changeset.release_date, :long)
87
+ .activity__message
88
+ .release-changeset.release-changeset--activity
89
+ .release-changeset__body
90
+ - changeset.changed_fields.each do |field|
91
+ = render_changeset_field(changeset, field)
92
+
93
+ = link_to release_path(id: event.id), class: 'card__button' do
94
+ %span.button.button--small= t('workarea.admin.reports.timeline.view_release')
95
+ - else
96
+ = form_tag report_custom_event_path(id: event.id), method: 'patch' do
97
+ .property
98
+ = label_tag 'custom_event_name', t('workarea.admin.fields.name'), class: 'property__name'
99
+ = text_field_tag 'custom_event[name]', event.name, class: 'text-box', id: dom_id(event, 'name')
100
+ .property
101
+ .box.box--rounded.box--padded
102
+ = hidden_field_tag 'custom_event[occurred_at]', event.occurred_at, data: { datetimepicker_field: { inline: true } }, id: dom_id(event, 'date_picker')
103
+ .grid.grid--middle
104
+ .grid__cell.grid__cell--50
105
+ = link_to t('workarea.admin.actions.delete'), report_custom_event_path(id: event.id), class: 'text-button text-button--destroy', rel: 'nofollow', data: { method: 'delete' }
106
+ .grid__cell.grid__cell--50
107
+ .align-right
108
+ = submit_tag t('workarea.admin.reports.timeline.update_event'), class: 'button button--create button--small'
@@ -11,7 +11,7 @@
11
11
  %li
12
12
  %strong= t('workarea.admin.fields.active')
13
13
  = check_box_tag 'customization', 'active', model.active, disabled: true
14
- = inline_svg('workarea/admin/icons/user.svg', class: 'svg-icon svg-icon--small svg-icon--blue') if model.active? && model.segments.any?
14
+ = segments_icons_for(model)
15
15
  %li
16
16
  %strong= t('workarea.admin.search_customizations.cards.attribtes.search_id')
17
17
  = model.id
@@ -53,7 +53,7 @@
53
53
  = comments_icon_for(customization)
54
54
  = top_icon_for(customization)
55
55
  = trending_icon_for(customization)
56
- = segments_icon_for(customization)
56
+ = segments_icons_for(customization)
57
57
  %td= link_to customization.query, search_customization_path(customization)
58
58
  %td.align-center= t("workarea.admin.#{customization.redirect?}")
59
59
  %td.align-center= t("workarea.admin.#{customization.rewrite?}")
@@ -1,3 +1,4 @@
1
- %span Ordered in the last
1
+ = select_tag 'rule[within]', options_for_select(last_order_options, rule.within)
2
+ %span within the last
2
3
  = number_field_tag 'rule[days]', rule.days.presence || Workarea.config.loyal_customers_last_order_days_ago, class: 'text-box text-box--small'
3
4
  %span days
@@ -1,9 +1,8 @@
1
1
  %span
2
- From
2
+ Spent
3
3
  = Money.default_currency.symbol
4
4
  = number_field_tag 'rule[minimum]', rule.minimum, class: 'text-box text-box--small'
5
5
  %span
6
- To
6
+ to
7
7
  = Money.default_currency.symbol
8
8
  = number_field_tag 'rule[maximum]', rule.maximum, class: 'text-box text-box--small'
9
- %span in revenue
@@ -1,13 +1,19 @@
1
+ %p= t('workarea.admin.segment_rules.fields.traffic_referrer.note_html')
2
+
1
3
  .property
2
4
  = label_tag 'rule[medium]', t('workarea.admin.fields.medium'), class: 'property__name'
3
5
  = select_tag 'rule[medium]', options_for_select(traffic_referrer_medium_options, rule.medium)
4
6
 
5
7
  .property
6
8
  = label_tag 'rule[source]', t('workarea.admin.fields.source'), class: 'property__name'
7
- = text_field_tag 'rule[source]', rule.medium, class: 'text-box text-box--wide'
9
+ = select_tag 'rule[source]', options_for_select(traffic_referrer_source_options, rule.source), multiple: true, data: { select: { placeholder: t('workarea.admin.fields.source') + '...', allowClear: true } }
10
+
11
+ .property
12
+ = label_tag 'rule[url]', t('workarea.admin.fields.url'), class: 'property__name'
13
+ = text_field_tag 'rule[url]', rule.url, class: 'text-box text-box--wide'
8
14
  %span.property__note
9
- = t('workarea.admin.segment_rules.fields.traffic_referrer.source_notes')
10
- = link_to '#source-help', data: { tooltip: { interactive: true } } do
11
- = inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue', title: t('workarea.admin.segment_rules.fields.traffic_referrer.source'))
12
- #source-help.tooltip-content
13
- %p= t('workarea.admin.segment_rules.fields.traffic_referrer.source_notes_html')
15
+ = t('workarea.admin.segment_rules.fields.traffic_referrer.url_notes')
16
+ = link_to '#url-help', data: { tooltip: { interactive: true } } do
17
+ = inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue', title: t('workarea.admin.segment_rules.fields.traffic_referrer.url'))
18
+ #url-help.tooltip-content
19
+ %p= t('workarea.admin.segment_rules.fields.traffic_referrer.url_notes_html')
@@ -1,2 +1,5 @@
1
1
  %span.text.text--large
2
- = t('workarea.admin.segment_rules.summaries.last_order.description_html', count: rule.days)
2
+ - if rule.within?
3
+ = t('workarea.admin.segment_rules.summaries.last_order.within_description_html', count: rule.days)
4
+ - else
5
+ = t('workarea.admin.segment_rules.summaries.last_order.not_within_description_html', count: rule.days)
@@ -1,10 +1,2 @@
1
- - if rule.medium.present?
2
- %span.text.text--large
3
- %span #{t('workarea.admin.fields.medium')}:
4
- %strong= rule.medium.titleize
5
- ,
6
-
7
- - if rule.source.present?
8
- %span.text.text--large
9
- %span #{t('workarea.admin.fields.source')}:
10
- %strong= rule.source
1
+ %span.text.text--large
2
+ %strong= [rule.medium.try(:titleize), rule.source, rule.url].flatten.reject(&:blank?).to_sentence
@@ -0,0 +1,46 @@
1
+ - @page_title = t('workarea.admin.segmentables.index.title', name: @segment.name)
2
+
3
+ .view
4
+ .view__header
5
+ .grid.grid--center
6
+ .grid__cell.grid__cell--50
7
+ .view__heading
8
+ = link_to_index_for(@segment)
9
+ %h1= @segment.name
10
+
11
+ .view__container
12
+ = render_cards_for(@segment, :content)
13
+
14
+ .section
15
+ - if @search.results.empty?
16
+ .grid.grid--center
17
+ .grid__cell.grid__cell--50
18
+ %h2.align-center= t('workarea.admin.segmentables.index.no_content')
19
+ %p.align-center= t('workarea.admin.segmentables.index.no_content_instructions_html')
20
+
21
+ - else
22
+ %h2.align-center= t('workarea.admin.segmentables.index.title', name: @segment.name)
23
+ .browsing-controls.browsing-controls--with-divider.browsing-controls--center{ class: ('browsing-controls--filters-displayed' unless @search.toggle_facets?) }
24
+ = form_tag search_path, method: 'get', class: 'browsing-controls__form' do
25
+ = facet_hidden_inputs(@search.facets)
26
+ .browsing-controls__sort
27
+ .property.property--inline
28
+ = label_tag 'sort', t('workarea.admin.searches.show.sort_by'), class: 'property__name'
29
+ = select_tag :sort, options_for_select(@search.sorts, selected: @search.sort), data: { form_submitting_control: '' }
30
+
31
+ .browsing-controls__search
32
+ .search-form
33
+ = text_field_tag :q, params[:q], class: 'search-form__input', id: 'search_again', title: t('workarea.admin.search.keywords'), placeholder: t('workarea.admin.search.keywords')
34
+ = submit_tag 'search_again', class: 'search-form__button'
35
+
36
+ %p.browsing-controls__count= pluralize(@search.results.total, 'result')
37
+
38
+ - if @search.results.present?
39
+ - if @search.results.any?
40
+ .section
41
+ .grid.grid--auto.grid--flush.grid--center
42
+ - @search.results.each do |result|
43
+ .grid__cell= render_summary_for(result)
44
+
45
+ - if @search.results.total_pages > 1
46
+ = render 'workarea/admin/shared/pagination', collection: @search.results