forked from cybrespace/mastodon
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:
parent
ec2c516ab8
commit
aaac14b8ad
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue