solidus_admin_insights 2.1.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.
- checksums.yaml +7 -0
- data/.gitignore +54 -0
- data/Gemfile +2 -0
- data/LICENSE +26 -0
- data/README.md +71 -0
- data/Rakefile +21 -0
- data/app/assets/javascripts/spree/backend/jquery.tablesorter.min.js +4 -0
- data/app/assets/javascripts/spree/backend/solidus_admin_insights.js +2 -0
- data/app/assets/javascripts/spree/backend/solidus_admin_insights/paginator.js +128 -0
- data/app/assets/javascripts/spree/backend/solidus_admin_insights/report_loader.js +265 -0
- data/app/assets/javascripts/spree/backend/solidus_admin_insights/searcher.js +72 -0
- data/app/assets/javascripts/spree/backend/solidus_admin_insights/table_sorter.js +47 -0
- data/app/assets/javascripts/spree/backend/tmpl.js +87 -0
- data/app/assets/javascripts/spree/frontend/solidus_admin_insights.js +2 -0
- data/app/assets/stylesheets/spree/backend/override_pdf.css +71 -0
- data/app/assets/stylesheets/spree/backend/solidus_admin_insights.css +132 -0
- data/app/assets/stylesheets/spree/frontend/solidus_admin_insights.css +4 -0
- data/app/controllers/spree/admin/insights_controller.rb +103 -0
- data/app/helpers/spree/admin/base_helper_decorator.rb +17 -0
- data/app/models/spree/app_configuration_decorator.rb +3 -0
- data/app/models/spree/product_decorator.rb +3 -0
- data/app/models/spree/promotion_action_decorator.rb +3 -0
- data/app/models/spree/return_authorization_decorator.rb +4 -0
- data/app/permissions/spree/permission_sets/insight_display.rb +9 -0
- data/app/reports/spree/best_selling_products_report.rb +42 -0
- data/app/reports/spree/cart_additions_report.rb +36 -0
- data/app/reports/spree/cart_removals_report.rb +36 -0
- data/app/reports/spree/cart_updations_report.rb +40 -0
- data/app/reports/spree/payment_method_transactions_conversion_rate_report.rb +74 -0
- data/app/reports/spree/payment_method_transactions_conversion_rate_report/payment_method_state_distribution_chart.rb +39 -0
- data/app/reports/spree/payment_method_transactions_report.rb +60 -0
- data/app/reports/spree/payment_method_transactions_report/payment_method_revenue_distribution_chart.rb +36 -0
- data/app/reports/spree/product_views_report.rb +46 -0
- data/app/reports/spree/product_views_to_cart_additions_report.rb +53 -0
- data/app/reports/spree/product_views_to_purchases_report.rb +54 -0
- data/app/reports/spree/promotional_cost_report.rb +84 -0
- data/app/reports/spree/promotional_cost_report/promotional_cost_chart.rb +37 -0
- data/app/reports/spree/promotional_cost_report/usage_count_chart.rb +41 -0
- data/app/reports/spree/report.rb +131 -0
- data/app/reports/spree/report/chart.rb +11 -0
- data/app/reports/spree/report/configuration.rb +40 -0
- data/app/reports/spree/report/date_slicer.rb +61 -0
- data/app/reports/spree/report/observation.rb +49 -0
- data/app/reports/spree/report/query_fragments.rb +45 -0
- data/app/reports/spree/report/query_time_scale.rb +19 -0
- data/app/reports/spree/report/result.rb +100 -0
- data/app/reports/spree/report/timed_observation.rb +47 -0
- data/app/reports/spree/report/timed_result.rb +48 -0
- data/app/reports/spree/returned_products_report.rb +37 -0
- data/app/reports/spree/sales_performance_report.rb +107 -0
- data/app/reports/spree/sales_performance_report/profit_loss_chart.rb +37 -0
- data/app/reports/spree/sales_performance_report/profit_loss_percent_chart.rb +36 -0
- data/app/reports/spree/sales_performance_report/sale_cost_price_chart.rb +48 -0
- data/app/reports/spree/sales_tax_report.rb +64 -0
- data/app/reports/spree/sales_tax_report/monthly_sales_tax_comparison_chart.rb +39 -0
- data/app/reports/spree/shipping_cost_report.rb +89 -0
- data/app/reports/spree/shipping_cost_report/shipping_cost_distribution_chart.rb +38 -0
- data/app/reports/spree/trending_search_report.rb +50 -0
- data/app/reports/spree/trending_search_report/frequency_distribution_pie_chart.rb +41 -0
- data/app/reports/spree/unique_purchases_report.rb +39 -0
- data/app/reports/spree/user_pool_report.rb +66 -0
- data/app/reports/spree/user_pool_report/distribution_column_chart.rb +65 -0
- data/app/reports/spree/users_not_converted_report.rb +48 -0
- data/app/reports/spree/users_who_recently_purchased_report.rb +69 -0
- data/app/services/spree/report_generation_service.rb +27 -0
- data/app/views/spree/admin/insights/_chart.html.erb +4 -0
- data/app/views/spree/admin/insights/download.pdf.erb +27 -0
- data/app/views/spree/admin/insights/index.html.erb +82 -0
- data/app/views/spree/admin/insights/search/_product_views_search.html.erb +13 -0
- data/app/views/spree/admin/insights/search/_search_form.html.erb +39 -0
- data/app/views/spree/admin/insights/search/_trending_searches_search.html.erb +13 -0
- data/app/views/spree/admin/insights/search/_users_not_converted_search.html.erb +13 -0
- data/app/views/spree/admin/insights/search/_users_who_have_not_purchased_recently_search.html.erb +13 -0
- data/app/views/spree/admin/insights/search/_users_who_recently_purchased_search.html.erb +13 -0
- data/app/views/spree/admin/shared/_insights_side_menu.html.erb +5 -0
- data/app/views/spree/admin/shared/sub_menu/_insight.html.erb +7 -0
- data/app/views/spree/admin/templates/insights/_paginator.template +11 -0
- data/app/views/spree/admin/templates/insights/_search.template +76 -0
- data/app/views/spree/admin/templates/insights/_show.template +49 -0
- data/app/views/spree/layouts/pdf.html.erb +9 -0
- data/bin/rails +7 -0
- data/config/initializers/add_to_sidebar.rb +14 -0
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/mime_types.rb +2 -0
- data/config/initializers/wicked_pdf.rb +21 -0
- data/config/locales/en.yml +167 -0
- data/config/routes.rb +6 -0
- data/lib/generators/solidus_admin_insights/install/install_generator.rb +36 -0
- data/lib/generators/solidus_admin_insights/install/solidus_admin_insights.rb +22 -0
- data/lib/solidus_admin_insights.rb +14 -0
- data/lib/solidus_admin_insights/engine.rb +27 -0
- data/lib/solidus_admin_insights/factories.rb +6 -0
- data/solidus_admin_insights.gemspec +42 -0
- data/spec/spec_helper.rb +93 -0
- metadata +419 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<div data-hook="admin_insights_sidebar">
|
|
2
|
+
<%= form_tag form_action(@report_name, params[:type]), method: :get, id: "filter-search" do %>
|
|
3
|
+
<div class="quick_search_form">
|
|
4
|
+
</div>
|
|
5
|
+
<div class="row">
|
|
6
|
+
<div class="date-range-filter col-md-8">
|
|
7
|
+
<div class="form-group">
|
|
8
|
+
<div class="row no-padding-bottom">
|
|
9
|
+
<div class="col-md-6">
|
|
10
|
+
<%= label_tag :search_start_date, Spree.t(:start_date) %>
|
|
11
|
+
<div class="input-group">
|
|
12
|
+
<%= text_field_tag 'search[start_date]', params.fetch(:search, {})[:start_date], class: 'datepicker datepicker-from form-control js-filterable', placeholder: Spree.t(:start) %>
|
|
13
|
+
<span class="input-group-addon">
|
|
14
|
+
<i class="fa fa-calendar"></i>
|
|
15
|
+
</span>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
<div class="col-md-6">
|
|
20
|
+
<%= label_tag :search_end_date, Spree.t(:end_date) %>
|
|
21
|
+
<div class="input-group">
|
|
22
|
+
<%= text_field_tag 'search[end_date]', params.fetch(:search, {})[:end_date], class: 'datepicker datepicker-to form-control js-filterable', placeholder: Spree.t(:stop) %>
|
|
23
|
+
<span class="input-group-addon">
|
|
24
|
+
<i class="fa fa-calendar"></i>
|
|
25
|
+
</span>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div class="form-actions" data-hook="admin_insights_index_search_buttons">
|
|
35
|
+
<%= button Spree.t(:search), 'search' %>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<% end %>
|
|
39
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% content_for :quick_search_form do %>
|
|
2
|
+
<div class="row">
|
|
3
|
+
<div class="col col-md-6">
|
|
4
|
+
<div data-hook="admin_property_index_search" class="form-group">
|
|
5
|
+
<%= label_tag :keywords_cont, Spree.t(:search_keywords) %>
|
|
6
|
+
<%= text_field_tag 'search[keywords_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="col-md-6">
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% content_for :quick_search_form do %>
|
|
2
|
+
<div class="row">
|
|
3
|
+
<div class="col col-md-6">
|
|
4
|
+
<div data-hook="admin_insight_index_search" class="form-group">
|
|
5
|
+
<%= label_tag :email_cont, Spree.t(:email) %>
|
|
6
|
+
<%= text_field_tag 'search[email_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="col-md-6">
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<% end %>
|
data/app/views/spree/admin/insights/search/_users_who_have_not_purchased_recently_search.html.erb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% content_for :quick_search_form do %>
|
|
2
|
+
<div class="row">
|
|
3
|
+
<div class="col col-md-6">
|
|
4
|
+
<div data-hook="admin_insight_index_search" class="form-group">
|
|
5
|
+
<%= label_tag :email_cont, Spree.t(:email) %>
|
|
6
|
+
<%= text_field_tag 'search[email_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="col-md-6">
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% content_for :quick_search_form do %>
|
|
2
|
+
<div class="row">
|
|
3
|
+
<div class="col col-md-6">
|
|
4
|
+
<div data-hook="admin_insight_index_search" class="form-group">
|
|
5
|
+
<%= label_tag :email_cont, Spree.t(:email) %>
|
|
6
|
+
<%= text_field_tag 'search[email_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="col-md-6">
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<% content_for :sub_menu do %>
|
|
2
|
+
<ul id="sidebar-insights" class="inline-menu" data-hook="admin_insight_sub_tabs">
|
|
3
|
+
<% Spree::ReportGenerationService.reports.each do |_key, _value| %>
|
|
4
|
+
<%= tab _key, url: admin_insight_path(report_category: _key, id: _value.first) %>
|
|
5
|
+
<% end %>
|
|
6
|
+
<ul>
|
|
7
|
+
<% end %>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script type="text/x-tmpl" id="paginator-tmpl">
|
|
2
|
+
{% if(o['total_pages'] > 0) { %}
|
|
3
|
+
<nav>
|
|
4
|
+
<ul class="pagination pagination-sm center-block">
|
|
5
|
+
{% for(var i = 0; i <= o['total_pages']; i++) { %}
|
|
6
|
+
<li class="{%= ((o['current_page'] == i) ? 'active' : '') %} page-item"><a href="{%= o['url'] %}&page={%= i %}" class="page-link">{%= i+1 %}</a></li>
|
|
7
|
+
{% } %}
|
|
8
|
+
</ul>
|
|
9
|
+
</nav>
|
|
10
|
+
{% } %}
|
|
11
|
+
</script>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script type="text/x-tmpl" id="search-tmpl">
|
|
2
|
+
|
|
3
|
+
<fieldset>
|
|
4
|
+
<legend align="center">Search</legend>
|
|
5
|
+
<div data-hook="admin_insights_sidebar" class="container">
|
|
6
|
+
<form id="filter-search" action="{%= o['url'] %}" accept-charset="UTF-8" method="get">
|
|
7
|
+
|
|
8
|
+
<div class="quick_search_form">
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div class="row">
|
|
12
|
+
{% if(o['search_attributes']['name']) { %}
|
|
13
|
+
<div class="one-third column">
|
|
14
|
+
<div data-hook="admin_property_index_search">
|
|
15
|
+
<label for="search_name">{%= o['search_attributes']['name'] %}</label>
|
|
16
|
+
<input type="text" name="search[name]" id="search_name" class="form-control js-quick-search-target js-filterable full-width" placeholder="Name">
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
{% } %}
|
|
20
|
+
|
|
21
|
+
{% if(o['search_attributes']['email_cont']) { %}
|
|
22
|
+
<div class="one-third column">
|
|
23
|
+
<div data-hook="admin_property_index_search">
|
|
24
|
+
<label for="search_email_cont">{%= o['search_attributes']['email_cont'] %}</label>
|
|
25
|
+
<input type="text" name="search[email_cont]" id="search_email_cont" class="form-control js-quick-search-target js-filterable full-width" placeholder="Email">
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
{% } %}
|
|
29
|
+
|
|
30
|
+
{% if(o['search_attributes']['keywords_cont']) { %}
|
|
31
|
+
<div class="one-third column">
|
|
32
|
+
<div data-hook="admin_property_index_search">
|
|
33
|
+
<label for="search_keywords_cont">{%= o['search_attributes']['keywords_cont'] %}</label>
|
|
34
|
+
<input type="text" name="search[keywords_cont]" id="search_keywords_cont" class="form-control js-quick-search-target js-filterable full-width" placeholder="Keyword">
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
{% } %}
|
|
38
|
+
|
|
39
|
+
<div class="row">
|
|
40
|
+
<div class="date-range-filter">
|
|
41
|
+
<div class="form-group">
|
|
42
|
+
<div class="no-padding-bottom">
|
|
43
|
+
<div class="one-third column">
|
|
44
|
+
<label for="search_start_date">{%= o['search_attributes']['start_date'] %}</label>
|
|
45
|
+
<div class="input-group">
|
|
46
|
+
<input type="text" name="search[start_date]" id="search_start_date" class="datepicker datepicker-from form-control js-filterable full-width" placeholder="Start">
|
|
47
|
+
<span class="input-group-addon">
|
|
48
|
+
<i class="fa fa-calendar"></i>
|
|
49
|
+
</span>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="one-third column">
|
|
53
|
+
<label for="search_end_date">{%= o['search_attributes']['end_date'] %}</label>
|
|
54
|
+
<div class="input-group">
|
|
55
|
+
<input type="text" name="search[end_date]" id="search_end_date" class="datepicker datepicker-to form-control js-filterable full-width" placeholder="Stop">
|
|
56
|
+
<span class="input-group-addon">
|
|
57
|
+
<i class="fa fa-calendar"></i>
|
|
58
|
+
</span>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="row">
|
|
68
|
+
<div class="form-actions text-center" data-hook="admin_insights_index_search_buttons">
|
|
69
|
+
<button name="button" type="submit" class="fa fa-search button"><span class="icon icon-search"></span> Search</button>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</form>
|
|
73
|
+
</div>
|
|
74
|
+
</fieldset>
|
|
75
|
+
|
|
76
|
+
</script>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script type="text/x-tmpl" id="tmpl">
|
|
2
|
+
<table class="table admin-insight table-hover" id="admin-insight">
|
|
3
|
+
<thead>
|
|
4
|
+
<tr>
|
|
5
|
+
{% for(var i = 0; i < o['headers'].length; i++) { %}
|
|
6
|
+
<th>
|
|
7
|
+
{% if(o['headers'][i].sortable) { %}
|
|
8
|
+
<a href="{%= o['request_path'] %}?report_category={%= o['report_category'] %}&sort%5Battribute%5D={%= o['headers'][i].value %}&sort%5Btype%5D={%= (o['headers'][i].sorted == 'asc') ? 'desc' : 'asc' %}" class="sortable-link {%= o['headers'][i].sorted %}" data-attribute="{%= o['headers'][i].value %}">{%= o['headers'][i].name %}
|
|
9
|
+
</a>
|
|
10
|
+
{% if(o['headers'][i].sorted != undefined) { %}
|
|
11
|
+
<span class="sortable-arrow {%= (o['headers'][i].sorted == 'asc') ? 'fa fa-chevron-down' : 'fa fa-chevron-up' %}"></span>
|
|
12
|
+
{% } %}
|
|
13
|
+
{% } else { %}
|
|
14
|
+
{%= o['headers'][i].name %}
|
|
15
|
+
{% } %}
|
|
16
|
+
</th>
|
|
17
|
+
{% } %}
|
|
18
|
+
</tr>
|
|
19
|
+
</thead>
|
|
20
|
+
<tbody class='table-data'>
|
|
21
|
+
{% for(var i = 0; i < o['stats'].length; i++) { %}
|
|
22
|
+
<tr>
|
|
23
|
+
{% for(var j = 0; j < o['headers'].length; j++) { %}
|
|
24
|
+
<td>
|
|
25
|
+
{% if (o['headers'][j].value == 'profit_loss' || o['headers'][j].value == 'profit_loss_percent') { %}
|
|
26
|
+
{%= Math.abs(o['stats'][i][o['headers'][j].value] || 0) %}
|
|
27
|
+
{% if (o['stats'][i][o['headers'][j].value] > 0) { %}
|
|
28
|
+
<span class="fa fa-chevron-up profit-indicator"></span>
|
|
29
|
+
{% } %}
|
|
30
|
+
{% if (o['stats'][i][o['headers'][j].value] < 0) { %}
|
|
31
|
+
<span class="fa fa-chevron-down loss-indicator"></span>
|
|
32
|
+
{% } %}
|
|
33
|
+
{% } else if (o['headers'][j].type == 'integer') { %}
|
|
34
|
+
{%= o['stats'][i][o['headers'][j].value] || 0 %}
|
|
35
|
+
{% } else { %}
|
|
36
|
+
{% if (o['deeplink']['deeplinked'] && o['deeplink'][o['headers'][j].value]) { %}
|
|
37
|
+
{%# tmpl(o['deeplink'][o['headers'][j].value]['template'], o['stats'][i]) %}
|
|
38
|
+
{% } else { %}
|
|
39
|
+
{%= o['stats'][i][o['headers'][j].value] || '-' %}
|
|
40
|
+
{% } %}
|
|
41
|
+
{% } %}
|
|
42
|
+
</td>
|
|
43
|
+
{% } %}
|
|
44
|
+
</tr>
|
|
45
|
+
{% } %}
|
|
46
|
+
</tbody>
|
|
47
|
+
</table>
|
|
48
|
+
|
|
49
|
+
</script>
|
data/bin/rails
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
|
2
|
+
|
|
3
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
|
4
|
+
ENGINE_PATH = File.expand_path('../../lib/solidus_admin_insights/engine', __FILE__)
|
|
5
|
+
|
|
6
|
+
require 'rails/all'
|
|
7
|
+
require 'rails/engine/commands'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
REPORT_TABS = [:insights, *Spree::ReportGenerationService.reports.keys.collect(&:to_sym)]
|
|
2
|
+
|
|
3
|
+
Spree::Backend::Config.configure do |config|
|
|
4
|
+
config.menu_items << config.class::MenuItem.new(
|
|
5
|
+
REPORT_TABS,
|
|
6
|
+
'bar-chart',
|
|
7
|
+
condition: ->{ can?(:display, :insights) },
|
|
8
|
+
partial: 'spree/admin/shared/insights_side_menu'
|
|
9
|
+
)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Spree::RoleConfiguration.configure do |config|
|
|
13
|
+
config.assign_permissions :admin, [Spree::PermissionSets::InsightDisplay]
|
|
14
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Rails.application.config.assets.precompile += %w( spree/backend/solidus_admin_insights.js )
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# WickedPDF Global Configuration
|
|
2
|
+
#
|
|
3
|
+
# Use this to set up shared configuration options for your entire application.
|
|
4
|
+
# Any of the configuration options shown here can also be applied to single
|
|
5
|
+
# models by passing arguments to the `render :pdf` call.
|
|
6
|
+
#
|
|
7
|
+
# To learn more, check out the README:
|
|
8
|
+
#
|
|
9
|
+
# https://github.com/mileszs/wicked_pdf/blob/master/README.md
|
|
10
|
+
|
|
11
|
+
WickedPdf.config = {
|
|
12
|
+
# Path to the wkhtmltopdf executable: This usually isn't needed if using
|
|
13
|
+
# one of the wkhtmltopdf-binary family of gems.
|
|
14
|
+
# exe_path: '/usr/local/bin/wkhtmltopdf',
|
|
15
|
+
# or
|
|
16
|
+
# exe_path: Gem.bin_path('wkhtmltopdf-binary', 'wkhtmltopdf')
|
|
17
|
+
|
|
18
|
+
# Layout file to be used for all PDFs
|
|
19
|
+
# (but can be overridden in `render :pdf` calls)
|
|
20
|
+
# layout: 'pdf.html',
|
|
21
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
en:
|
|
2
|
+
spree:
|
|
3
|
+
admin:
|
|
4
|
+
day_name: Day
|
|
5
|
+
hour_name: Hour
|
|
6
|
+
month_name: Month
|
|
7
|
+
year: Year
|
|
8
|
+
tab:
|
|
9
|
+
insights: Insights
|
|
10
|
+
finance_analysis: Finance Analysis
|
|
11
|
+
product_analysis: Product Analysis
|
|
12
|
+
promotion_analysis: Promotion Analysis
|
|
13
|
+
trending_search_analysis: Trending Search Analysis
|
|
14
|
+
user_analysis: User Analysis
|
|
15
|
+
insights: Insights
|
|
16
|
+
insight:
|
|
17
|
+
heading: 'Insights: %{type}'
|
|
18
|
+
tab_heading: Insights
|
|
19
|
+
not_found: Report not found.
|
|
20
|
+
product_views:
|
|
21
|
+
title: Product Show Page Views
|
|
22
|
+
description: To fetch the number of times Product Show page is viewed by the Customers.
|
|
23
|
+
product_name: Product
|
|
24
|
+
views: Total Views
|
|
25
|
+
users: Users(Unique)
|
|
26
|
+
guest_sessions: Guest Sessions
|
|
27
|
+
cart_additions:
|
|
28
|
+
title: Product Add to cart
|
|
29
|
+
additions: Additions
|
|
30
|
+
description: Will project the data about how many times product has been added to the cart.
|
|
31
|
+
product_name: Product
|
|
32
|
+
quantity_change: Cart Addition(Qty)
|
|
33
|
+
sku: Variant
|
|
34
|
+
cart_removals:
|
|
35
|
+
title: Product Removed from cart
|
|
36
|
+
description: Will project the data about how many time product has been removed from cart.
|
|
37
|
+
product_name: Product
|
|
38
|
+
quantity_change: Cart Removal(Qty)
|
|
39
|
+
removals: Removals
|
|
40
|
+
sku: Variant
|
|
41
|
+
cart_updations:
|
|
42
|
+
title: Product Updation
|
|
43
|
+
description: Will project the data about how many times product has been updated from the cart.
|
|
44
|
+
product_name: Product
|
|
45
|
+
quantity_decrease: Quantity Decreased(From Cart)
|
|
46
|
+
quantity_increase: Quantity Increased(From Cart)
|
|
47
|
+
removals: Quantity Removed(From Cart)
|
|
48
|
+
sku: Variant
|
|
49
|
+
updations: Total Updation Requests
|
|
50
|
+
product_views_to_cart_additions:
|
|
51
|
+
title: Product 'Views' To 'Cart Additions'
|
|
52
|
+
description: Ratio of number of views (on product show page) to number of times product has been added to the cart after view.
|
|
53
|
+
cart_additions: Conversion to cart (product qty.)
|
|
54
|
+
product_name: Product
|
|
55
|
+
views: Show page views
|
|
56
|
+
cart_to_view_ratio: Cart To View Ratio
|
|
57
|
+
trending_search:
|
|
58
|
+
title: Trending Searches
|
|
59
|
+
description: You can view/search list of keywords which have been searched by customers.
|
|
60
|
+
searched_term: Searched Term
|
|
61
|
+
occurrences: Occurrences
|
|
62
|
+
users_not_converted:
|
|
63
|
+
title: Users Not Converted
|
|
64
|
+
description: Information about number of registered users who haven’t purchased any product after registration.
|
|
65
|
+
signup_date: Signup At
|
|
66
|
+
user_email: Email
|
|
67
|
+
users_who_recently_purchased:
|
|
68
|
+
title: Users who purchased recently
|
|
69
|
+
description: Number of users who frequently purchased products
|
|
70
|
+
last_purchase_date: Last Purchase At
|
|
71
|
+
last_purchased_order_number: Last Purchased Order
|
|
72
|
+
purchase_count: Purchased Count
|
|
73
|
+
user_email: Email
|
|
74
|
+
users_who_have_not_recently_purchased:
|
|
75
|
+
title: Users who didn't purchase recently
|
|
76
|
+
description: Number of users who have not purchased anything since a particular time period
|
|
77
|
+
last_purchase_date: Last Purchase At
|
|
78
|
+
last_purchased_order_number: Last Purchased Order
|
|
79
|
+
user_email: Email
|
|
80
|
+
user_pool:
|
|
81
|
+
title: User Pool
|
|
82
|
+
description: To view monthly stats about type of users who visited site
|
|
83
|
+
months_name: Month
|
|
84
|
+
guest_users: Guests
|
|
85
|
+
active_users: Active Users(Registered)
|
|
86
|
+
new_sign_ups: New Users
|
|
87
|
+
payment_method_transactions:
|
|
88
|
+
title: Payment Method Transactions Count
|
|
89
|
+
description: Transactions from different payment methods
|
|
90
|
+
payment_method_name: Payment Method
|
|
91
|
+
payment_amount: Transaction Amount
|
|
92
|
+
months_name: Month
|
|
93
|
+
payment_method_transactions_conversion_rate:
|
|
94
|
+
payment_method_name: Payment Method
|
|
95
|
+
title: Payment Method Transaction Conversion Rate
|
|
96
|
+
description: Success/Failure rate of different payment methods
|
|
97
|
+
months_name: Month
|
|
98
|
+
payment_state: Payment State
|
|
99
|
+
count: Count
|
|
100
|
+
promotional_cost:
|
|
101
|
+
title: Promotional Cost
|
|
102
|
+
description: Total money invested on a particular promotion - Admin will view total money invested, total revenue and profit from a particular promotion.
|
|
103
|
+
promotion_code: Code
|
|
104
|
+
promotion_discount: Discount
|
|
105
|
+
promotion_name: Promotion
|
|
106
|
+
promotion_start_date: Start Date
|
|
107
|
+
promotion_end_date: End Date
|
|
108
|
+
usage_count: Usage Count
|
|
109
|
+
months_name: Month
|
|
110
|
+
annual_promotional_cost:
|
|
111
|
+
title: Annual Promotional Cost
|
|
112
|
+
description: Total money invested on a particular promotion - Admin will view total money invested, total revenue and profit from a particular promotion.
|
|
113
|
+
promotion_discount: Discount
|
|
114
|
+
promotion_name: Promotion
|
|
115
|
+
usage_count: Usage Count
|
|
116
|
+
sales_performance:
|
|
117
|
+
title: Sales Performance
|
|
118
|
+
description: Info about revenue, tax, shipment total and return amount.
|
|
119
|
+
adjustment_total: Adjustment Total
|
|
120
|
+
cost_price: Cost Price
|
|
121
|
+
months_name: Month
|
|
122
|
+
profit_loss: Profit/Loss
|
|
123
|
+
profit_loss_percent: Profit/Loss %
|
|
124
|
+
refund_amount: Refund Amount
|
|
125
|
+
revenue: Revenue
|
|
126
|
+
sale_price: Sale Price
|
|
127
|
+
shipping_charges: Shipping Charges
|
|
128
|
+
tax: Tax
|
|
129
|
+
promotion_discount: Promotional Discounts
|
|
130
|
+
unique_purchases:
|
|
131
|
+
title: Unique Purchases
|
|
132
|
+
description: Will project the data about how many unique users have purchased a particular product.
|
|
133
|
+
product_name: Product
|
|
134
|
+
sku: Variant
|
|
135
|
+
sold_count: Sold Count
|
|
136
|
+
users: Users
|
|
137
|
+
best_selling_products:
|
|
138
|
+
title: Best Selling Products
|
|
139
|
+
description: Best/least Selling Products as per maximum quantities purchased.
|
|
140
|
+
product_name: Product
|
|
141
|
+
sku: Variant
|
|
142
|
+
sold_count: Sold Quantity
|
|
143
|
+
product_views_to_purchases:
|
|
144
|
+
title: Product 'Views' To 'Purchases'
|
|
145
|
+
description: Ratio of number of views (on product show page) to number of times product has been purchased after view.
|
|
146
|
+
product_name: Product
|
|
147
|
+
purchases: Purchases
|
|
148
|
+
views: Views
|
|
149
|
+
purchase_to_view_ratio: Purchase To View Ratio
|
|
150
|
+
returned_products:
|
|
151
|
+
title: Product Returned
|
|
152
|
+
description: Number of products returned
|
|
153
|
+
product_name: Product
|
|
154
|
+
return_count: Returned Count
|
|
155
|
+
sku: Variant
|
|
156
|
+
shipping_cost:
|
|
157
|
+
title: Shipping Cost
|
|
158
|
+
name: Shipping Method Name
|
|
159
|
+
months_name: Month
|
|
160
|
+
shipping_charge: Shipping Charge
|
|
161
|
+
revenue: Revenue
|
|
162
|
+
shipping_cost_percentage: Shipping Cost %
|
|
163
|
+
sales_tax:
|
|
164
|
+
title: Sales Tax
|
|
165
|
+
months_name: Month
|
|
166
|
+
zone_name: Zone
|
|
167
|
+
sales_tax: Sales Tax
|