workarea-admin 3.5.0.beta.1 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
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