Skip to content

Commit ae7c71e

Browse files
authored
Merge pull request #111 from internetee/fix-statistics-1
Fixed statistics
2 parents 7ac8899 + a89352d commit ae7c71e

File tree

14 files changed

+46
-57
lines changed

14 files changed

+46
-57
lines changed

app/controllers/stats/market_share_controller.rb

+1-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ def growth_rate_data
4444

4545
def set_default_search_params
4646
@search_params = params[:search]&.to_unsafe_h || {}
47-
today = Time.zone.today
48-
end_date = @search_params[:end_date].presence || format_date(today)
47+
end_date = @search_params[:end_date].presence || format_date(Time.zone.today)
4948
last_month = Date.strptime(end_date, '%m.%y').last_month
5049
compare_to_date = @search_params[:compare_to_end_date].presence || format_date(last_month)
5150
@search_params[:end_date] = end_date

app/helpers/application_helper.rb

+4-5
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,18 @@ def login_with_role(user, registrar: true)
1818
end
1919

2020
def back_link
21-
link_to :back, class: 'back-link' do
21+
link_to :back, class: 'back-link', data: { turbo: false } do
2222
out = []
2323
out << tag.i(nil, class: 'fas fa-arrow-left')
2424
out << tag.span(t(:back))
2525
safe_join(out)
2626
end
2727
end
2828

29-
def toggle_filter
29+
def toggle_filter(reverse: false)
3030
button_tag(data: { toggle: 'filters' }, type: '', class: 'button button--toggle') do
31-
out = []
32-
out << tag.span(t(:open_filter))
33-
out << tag.span(t(:close_filter))
31+
out = [tag.span(t(:open_filter)), tag.span(t(:close_filter))]
32+
out.reverse! if reverse
3433
out << tag.i(nil, class: 'fas fa-filter')
3534
safe_join(out)
3635
end

app/helpers/stats_helper.rb

+15-11
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,24 @@ module StatsHelper
22
def market_share_distribution_chart(search_params)
33
url = market_share_distribution_data_path(search: search_params)
44
title = t('stats.market_share.distribution.chart_title',
5-
date: title_period(search_params[:start_date],
6-
search_params[:end_date]))
5+
date: title_period(search_params[:end_date]))
76
tag.div(nil, data: chart_data_params(url: url, title: title, type: __method__.to_s)) do
87
tag.div(preloader, class: 'pie_chart')
98
end
109
end
1110

12-
# rubocop:disable Metrics/MethodLength
1311
def market_share_growth_rate_chart(search_params)
1412
url = market_share_growth_rate_data_path(search: search_params)
1513
title = t('stats.market_share.growth_rate.chart_title',
16-
date: title_period(search_params[:start_date],
17-
search_params[:end_date]))
14+
date: title_period(search_params[:end_date]))
1815
subtitle = t('stats.market_share.growth_rate.chart_subtitle',
19-
date: title_period(search_params[:compare_to_start_date],
20-
search_params[:compare_to_end_date]))
16+
date: title_period(search_params[:compare_to_end_date]))
2117
tag.div(nil, data: chart_data_params(url: url, title: title, type: __method__.to_s,
2218
subtitle: subtitle,
2319
translations: date_translations(search_params))) do
2420
data_type_radio_buttons + tag.div(preloader, class: 'bar_chart')
2521
end
2622
end
27-
# rubocop:enable Metrics/MethodLength
2823

2924
private
3025

@@ -46,14 +41,22 @@ def data_type_radio_buttons(tags: [])
4641
end
4742
end
4843

49-
def title_period(start_date, end_date, period: '')
50-
period += "#{translate_date(to_date(start_date))} - " if start_date.present?
44+
def title_period(end_date, period: '')
5145
period += translate_date(to_date(end_date)).to_s
46+
5247
period
5348
end
5449

5550
def to_date(month_year)
56-
Date.strptime(month_year, '%m.%y')
51+
parsed_date = Date.strptime(month_year, '%m.%y')
52+
53+
current_date = Time.zone.today
54+
55+
if parsed_date.month == current_date.month && parsed_date.year == current_date.year
56+
current_date
57+
else
58+
parsed_date.end_of_month
59+
end
5760
end
5861

5962
def translate_date(date)
@@ -76,6 +79,7 @@ def date_translations(params, dates: {})
7679
compare_to_end_date = to_date(params[:compare_to_end_date])
7780
dates[params[:end_date]] = translate_date(end_date)
7881
dates[params[:compare_to_end_date]] = translate_date(compare_to_end_date)
82+
7983
dates
8084
end
8185
end

app/javascript/controllers/chart_controller.js

-5
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,8 @@ export default class extends Controller {
205205
var curData = data['current'], prevData = data['previous'];
206206
this.setLegends(curData[data_type]);
207207
var apndx = ((data_type == 'market_share') ? '%' : '');
208-
// console.log(curData[data_type]);
209-
// console.log(this.getData(curData[data_type], prevData[data_type], data_type).slice());
210208
const newPrevData = this.filterData(prevData[data_type]),
211209
newCurData = this.filterData(curData[data_type]);
212-
// console.log(newPrevData);
213-
// console.log(this.getData(newCurData, newPrevData, data_type).slice());
214210
return [{ color: 'rgba(158, 159, 163, 0.5)',
215211
pointPlacement: -0.15,
216212
linkedTo: 'main',
@@ -281,7 +277,6 @@ export default class extends Controller {
281277
} else {
282278
this.hiddenRegistrars = this.hiddenRegistrars.filter(function(e) { return e !== name });
283279
}
284-
// console.log(this.hiddenRegistrars);
285280
this.updateChart(data_type);
286281
}
287282
getData(curData, prevData, data_type) {

app/javascript/datepicker.js

+4
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export default class Datepicker {
1414
init() {
1515
const that = this;
1616
let dateFormat = that.target.getAttribute('dateFormat');
17+
let minDate = that.target.getAttribute('minDate');
1718
if (dateFormat == "m.y") {
1819
that.options['plugins'] = [
1920
new monthSelectPlugin({
@@ -23,6 +24,9 @@ export default class Datepicker {
2324
})
2425
];
2526
that.options['maxDate'] = new Date();
27+
if (minDate) {
28+
that.options['minDate'] = new Date(minDate);
29+
}
2630
}
2731
let options = {
2832
allowInput: true,

app/views/contacts/partials/_search_form.html.erb

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
<% end %>
99
<%= form.text_field :name_matches, 'aria-label': t(:search), class: 'input search', placeholder: t(:search), value: params[:search]&.dig(:name_matches) %>
1010
</div>
11-
<%= toggle_filter %>
11+
<%= toggle_filter(reverse: params[:search].present?) %>
1212
</div>
1313
</div>
1414
</div>
15-
<div id="filters" class="form--filters">
15+
<div id="filters" class="form--filters <%= 'open' if params[:search] %>">
1616
<div class="row bottom-xs">
1717
<div class="col-md-3 col-xs-12">
1818
<%= form.label :code_eq, t('contacts.index.code'), class: 'form--label' %>

app/views/domains/partials/_search_form.html.erb

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
<%= form.text_field :name_matches, 'aria-label': t(:search), class: 'input search',
1010
placeholder: t(:search), value: params[:search]&.dig(:name_matches) %>
1111
</div>
12-
<%= toggle_filter %>
12+
<%= toggle_filter(reverse: params[:search].present?) %>
1313
</div>
1414
</div>
1515
</div>
16-
<div id="filters" class="form--filters">
16+
<div id="filters" class="form--filters <%= 'open' if params[:search] %>">
1717
<div class="row bottom-xs">
1818
<div class="col-md-4 col-xs-12">
1919
<%= form.label :registrant_code_eq, t('domains.index.registrant_name'), class: 'form--label' %>

app/views/invoices/partials/_search_form.html.erb

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
placeholder: t('invoices.index.search_number'),
1212
value: params[:search]&.dig(:number_str_matches) %>
1313
</div>
14-
<%= toggle_filter %>
14+
<%= toggle_filter(reverse: params[:search].present?) %>
1515
</div>
1616
</div>
1717
</div>
18-
<div id="filters" class="form--filters">
18+
<div id="filters" class="form--filters <%= 'open' if params[:search] %>">
1919
<div class="row bottom-xs">
2020
<div class="col-xs-auto">
2121
<%= form.label :due_date_gteq, t('invoices.index.due_date'), class: 'form--label' %>

app/views/stats/_search_form.html.erb

+5-15
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,17 @@
22
<div class="row">
33
<div class="col-md-12 col-xs center-xs">
44
<div class="text-center">
5-
<%= toggle_filter %>
5+
<%= toggle_filter(reverse: params[:search].present?) %>
66
</div>
77
</div>
88
</div>
9-
<div id="filters" class="form--filters">
9+
<div id="filters" class="form--filters <%= 'open' if params[:search] %>">
1010
<div class="row bottom-xs">
1111
<div class="col-md-5 col-xs-12">
1212
<%= form.label :period, t('stats.market_share.index.period'), class: 'form--label' %>
1313
<div class="form--field">
1414
<div class="form--input small">
15-
<%= form.date_field :start_date, class: 'datepicker', value: params[:search]&.dig(:start_date), dateFormat: 'm.y' %>
16-
<div class="form--suffix"><i class="fas fa-calendar"></i></div>
17-
</div>
18-
<span class="form--sep">-</span>
19-
<div class="form--input small">
20-
<%= form.date_field :end_date, class: 'datepicker', value: params[:search]&.dig(:end_date), dateFormat: 'm.y' %>
15+
<%= form.date_field :end_date, class: 'datepicker', value: params[:search]&.dig(:end_date), dateFormat: 'm.y', minDate: '2015/12/01' %>
2116
<div class="form--suffix"><i class="fas fa-calendar"></i></div>
2217
</div>
2318
</div>
@@ -27,12 +22,7 @@
2722
<%= form.label :compare_period, t('stats.market_share.index.compare_to'), class: 'form--label' %>
2823
<div class="form--field">
2924
<div class="form--input small">
30-
<%= form.date_field :compare_to_start_date, class: 'datepicker', value: params[:search]&.dig(:compare_to_start_date), dateFormat: 'm.y' %>
31-
<div class="form--suffix"><i class="fas fa-calendar"></i></div>
32-
</div>
33-
<span class="form--sep">-</span>
34-
<div class="form--input small">
35-
<%= form.date_field :compare_to_end_date, class: 'datepicker', value: params[:search]&.dig(:compare_to_end_date), dateFormat: 'm.y' %>
25+
<%= form.date_field :compare_to_end_date, class: 'datepicker', value: params[:search]&.dig(:compare_to_end_date), dateFormat: 'm.y', minDate: '2015/12/01' %>
3626
<div class="form--suffix"><i class="fas fa-calendar"></i></div>
3727
</div>
3828
</div>
@@ -41,7 +31,7 @@
4131
<div class="col-md-auto col-xs-8">
4232
<div class="form--actions">
4333
<%= button_tag t(:filter), type: 'submit', class: 'button button--primary small' %>
44-
<%= link_to t(:clear_filter), "#{url_for(request.params.slice(:type))}", class: 'button button--link' %>
34+
<%= link_to t(:clear_filter), "#{url_for(request.params.slice(:type))}", class: 'button button--link', data: { turbo: false } %>
4535
</div>
4636
</div>
4737
</div>

app/views/stats/market_share/index.html.erb

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
<div class="page--actions">
1515
<div class="wrapper">
1616
<div class="page--actions__left">
17-
<%= link_to t('.market_share'), market_share_path(type: 'distribution'), class: 'button button--secondary' %>
18-
<%= link_to t('.market_share_growth'), market_share_path(type: 'growth_rate'), class: 'button button--secondary' %>
17+
<%= link_to t('.market_share'), market_share_path(type: 'distribution'), class: 'button button--secondary', data: { turbo: false } %>
18+
<%= link_to t('.market_share_growth'), market_share_path(type: 'growth_rate'), class: 'button button--secondary', data: { turbo: false } %>
1919
</div>
2020
<div class="page--actions__right">
2121
<%= link_to "#{t(:download_csv)} <i class='fas fa-download'></i>".html_safe, market_share_path(format: 'csv', search: params[:search]&.to_unsafe_h) %>

config/locales/en.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ en:
6666
[~, January, February, March, April, May, June, July, August, September, October, November, December]
6767
formats:
6868
default: "%Y-%m-%d"
69-
month_year: "%B, %Y"
69+
month_year: "%d %B %Y"
7070
month_year_short: "%b, %Y"
7171

7272
auth:
@@ -605,7 +605,7 @@ en:
605605
title: "Stats"
606606
market_share: "Market share and distribution"
607607
market_share_growth: "Market share and growth rate"
608-
period: "Period"
608+
period: "Month"
609609
compare_to: "Compare to"
610610
domains: "Domains"
611611
registrars: "Registrars"
@@ -638,9 +638,9 @@ en:
638638
- ['Choose', '']
639639
- ['Previous month', 'previous_month']
640640
distribution:
641-
chart_title: "Market share and distribution in %{date}"
641+
chart_title: "Market share and distribution %{date}"
642642
growth_rate:
643-
chart_title: "Market share and growth rate in %{date}"
643+
chart_title: "Market share and growth rate %{date}"
644644
chart_subtitle: "Comparing to results from %{date}"
645645

646646
xml_console:

config/locales/et.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ et:
6868
[~, Jaan, Veeb, Märts, Apr, Mai, Juuni, Juuli, Aug, Sep, Okt, Nov, Det]
6969
formats:
7070
default: "%Y-%m-%d"
71-
month_year: "%B, %Y"
71+
month_year: "%d %B %Y"
7272
month_year_short: "%b, %Y"
7373

7474
auth:
@@ -607,8 +607,8 @@ et:
607607
title: "Statistika"
608608
market_share: "Turuosa ja jaotus"
609609
market_share_growth: "Turuosa ja kasvumäär"
610-
period: "Periood"
611-
compare_to: "Võrdlusperiood"
610+
period: "Kuu"
611+
compare_to: "Võrdluskuu"
612612
domains: "Domeenid"
613613
registrars: "Registripidajad"
614614
csv:

spec/features/managing_stats_spec.rb

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@
99
visit market_share_path
1010
expect(page).to have_content('Stats')
1111

12-
page.fill_in 'search_start_date', with: '01.22'
1312
page.fill_in 'search_end_date', with: '09.22'
1413

1514
click_button('Filter')
16-
expect(page).to have_current_path(/search\[start_date\]=01.22/)
15+
expect(page).to have_current_path(/search\[end_date\]=09.22/)
1716
end
1817
end
1918

@@ -38,7 +37,6 @@
3837
visit market_share_path(type: 'distribution')
3938
expect(page).to have_content('Stats')
4039

41-
page.fill_in 'search_start_date', with: '01.22'
4240
page.fill_in 'search_end_date', with: '09.22'
4341

4442
click_link('Download CSV')

spec/fixtures/vcr_cassettes/controllers/stats/market_share_controller/distribution_data-auth-fail.yml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)