Show exact number of followers/statuses on export page/in tooltip (#8199)

* Show exact number of followers/statuses on export page/in tooltip

* Fix tests
This commit is contained in:
Eugen Rochko 2018-08-14 21:56:17 +02:00 committed by GitHub
parent ec2c516ab8
commit aaac14b8ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 36 additions and 17 deletions

View File

@ -147,17 +147,17 @@ export default class ActionBar extends React.PureComponent {
<div className='account__action-bar'> <div className='account__action-bar'>
<div className='account__action-bar-links'> <div className='account__action-bar-links'>
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}`}> <Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}`} title={intl.formatNumber(account.get('statuses_count'))}>
<FormattedMessage id='account.posts' defaultMessage='Toots' /> <FormattedMessage id='account.posts' defaultMessage='Toots' />
<strong>{shortNumberFormat(account.get('statuses_count'))}</strong> <strong>{shortNumberFormat(account.get('statuses_count'))}</strong>
</Link> </Link>
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`}> <Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`} title={intl.formatNumber(account.get('following_count'))}>
<FormattedMessage id='account.follows' defaultMessage='Follows' /> <FormattedMessage id='account.follows' defaultMessage='Follows' />
<strong>{shortNumberFormat(account.get('following_count'))}</strong> <strong>{shortNumberFormat(account.get('following_count'))}</strong>
</Link> </Link>
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`}> <Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`} title={intl.formatNumber(account.get('followers_count'))}>
<FormattedMessage id='account.followers' defaultMessage='Followers' /> <FormattedMessage id='account.followers' defaultMessage='Followers' />
<strong>{shortNumberFormat(account.get('followers_count'))}</strong> <strong>{shortNumberFormat(account.get('followers_count'))}</strong>
</Link> </Link>

View File

@ -24,8 +24,16 @@ class Export
account.media_attachments.sum(:file_file_size) account.media_attachments.sum(:file_file_size)
end end
def total_statuses
account.statuses_count
end
def total_follows def total_follows
account.following.count account.following_count
end
def total_followers
account.followers_count
end end
def total_blocks def total_blocks

View File

@ -14,17 +14,17 @@
.public-account-header__tabs__tabs .public-account-header__tabs__tabs
.details-counters .details-counters
.counter{ class: active_nav_class(short_account_url(account)) } .counter{ class: active_nav_class(short_account_url(account)) }
= link_to short_account_url(account), class: 'u-url u-uid' do = link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do
%span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
%span.counter-label= t('accounts.posts') %span.counter-label= t('accounts.posts')
.counter{ class: active_nav_class(account_following_index_url(account)) } .counter{ class: active_nav_class(account_following_index_url(account)) }
= link_to account_following_index_url(account) do = link_to account_following_index_url(account), title: number_with_delimiter(account.following_count) do
%span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
%span.counter-label= t('accounts.following') %span.counter-label= t('accounts.following')
.counter{ class: active_nav_class(account_followers_url(account)) } .counter{ class: active_nav_class(account_followers_url(account)) }
= link_to account_followers_url(account) do = link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do
%span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
%span.counter-label= t('accounts.followers') %span.counter-label= t('accounts.followers')
.spacer .spacer

View File

@ -8,17 +8,25 @@
%th= t('exports.storage') %th= t('exports.storage')
%td= number_to_human_size @export.total_storage %td= number_to_human_size @export.total_storage
%td %td
%tr
%th= t('accounts.statuses')
%td= number_with_delimiter @export.total_statuses
%td
%tr %tr
%th= t('exports.follows') %th= t('exports.follows')
%td= number_to_human @export.total_follows %td= number_with_delimiter @export.total_follows
%td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv) %td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv)
%tr
%th= t('accounts.followers')
%td= number_with_delimiter @export.total_followers
%td
%tr %tr
%th= t('exports.blocks') %th= t('exports.blocks')
%td= number_to_human @export.total_blocks %td= number_with_delimiter @export.total_blocks
%td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv) %td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv)
%tr %tr
%th= t('exports.mutes') %th= t('exports.mutes')
%td= number_to_human @export.total_mutes %td= number_with_delimiter @export.total_mutes
%td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv) %td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv)
%p.muted-hint= t('exports.archive_takeout.hint_html') %p.muted-hint= t('exports.archive_takeout.hint_html')

View File

@ -1,11 +1,14 @@
- content_for :page_title do - content_for :page_title do
= t('settings.import') = t('settings.import')
%p.hint= t('imports.preface')
= simple_form_for @import, url: settings_import_path do |f| = simple_form_for @import, url: settings_import_path do |f|
= f.input :type, collection: Import.types.keys, wrapper: :with_label, include_blank: false, label_method: lambda { |type| I18n.t("imports.types.#{type}") }, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' %p.hint= t('imports.preface')
= f.input :data, wrapper: :with_label, hint: t('simple_form.hints.imports.data')
.field-group
= f.input :type, collection: Import.types.keys, wrapper: :with_label, include_blank: false, label_method: lambda { |type| I18n.t("imports.types.#{type}") }, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
.field-group
= f.input :data, wrapper: :with_block_label, hint: t('simple_form.hints.imports.data')
.actions .actions
= f.button :button, t('imports.upload'), type: :submit = f.button :button, t('imports.upload'), type: :submit

View File

@ -48,17 +48,17 @@ describe Export do
describe 'total_follows' do describe 'total_follows' do
it 'returns the total number of the followed accounts' do it 'returns the total number of the followed accounts' do
target_accounts.each(&account.method(:follow!)) target_accounts.each(&account.method(:follow!))
expect(Export.new(account).total_follows).to eq 2 expect(Export.new(account.reload).total_follows).to eq 2
end end
it 'returns the total number of the blocked accounts' do it 'returns the total number of the blocked accounts' do
target_accounts.each(&account.method(:block!)) target_accounts.each(&account.method(:block!))
expect(Export.new(account).total_blocks).to eq 2 expect(Export.new(account.reload).total_blocks).to eq 2
end end
it 'returns the total number of the muted accounts' do it 'returns the total number of the muted accounts' do
target_accounts.each(&account.method(:mute!)) target_accounts.each(&account.method(:mute!))
expect(Export.new(account).total_mutes).to eq 2 expect(Export.new(account.reload).total_mutes).to eq 2
end end
end end
end end