Adjusting design of public pages, optimizing account page queries

pull/6/head
Eugen Rochko 2016-03-06 12:34:39 +01:00
parent ab80ebdeec
commit aab330eb2d
8 changed files with 79 additions and 34 deletions

View File

@ -1,14 +1,10 @@
.card { .card {
background: $primary-color image-url('background-photo.jpeg'); background: $primary-color image-url('background-photo.jpeg');
background-size: cover; background-size: cover;
padding: 80px 0; padding: 60px 0;
padding-bottom: 30px; padding-bottom: 10px;
border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0;
.bio {
}
.name { .name {
display: block; display: block;
font-size: 20px; font-size: 20px;
@ -37,4 +33,38 @@
border-radius: 120px; border-radius: 120px;
} }
} }
.details {
display: flex;
margin-top: 30px;
}
.counter {
width: 80px;
color: #9baec8;
padding: 0 10px;
border-right: 1px solid #9baec8;
cursor: default;
.counter-label {
font-size: 12px;
text-transform: uppercase;
display: block;
margin-bottom: 5px;
}
.counter-number {
font-weight: 500;
font-size: 18px;
color: #fff;
}
}
.bio {
flex: 1;
font-size: 14px;
line-height: 18px;
padding: 5px 10px;
color: #d9e1e8;
}
} }

View File

@ -181,7 +181,6 @@ body {
margin-top: 30px; margin-top: 30px;
text-align: center; text-align: center;
a { a {
color: #9baec8; color: #9baec8;
text-decoration: none; text-decoration: none;

View File

@ -9,34 +9,38 @@
border-left: 2px solid #fff; border-left: 2px solid #fff;
&.entry-reblog { &.entry-reblog {
border-left: 2px solid $tertiary-color; border-left-color: #2b90d9;
.content {
a {
color: $tertiary-color;
}
}
} }
&.entry-predecessor, &.entry-successor { &.entry-predecessor, &.entry-successor {
background: #d9e1e8;
.content { border-left-color: #d9e1e8;
a {
}
}
} }
&.entry-follow, &.entry-favourite { &.entry-follow, &.entry-favourite {
.content { .content {
padding-top: 10px; padding-top: 10px;
padding-bottom: 10px; padding-bottom: 10px;
strong {
font-weight: 500;
}
} }
} }
&:last-child { &:last-child {
border-bottom: 0; border-bottom: 0;
border-radius: 0 0 4px 0; border-radius: 0 0 4px 4px;
}
}
&.activity-stream-headless {
.entry:first-child {
border-radius: 4px 4px 0 0;
&:last-child {
border-radius: 4px;
}
} }
} }

View File

@ -5,6 +5,8 @@ class AccountsController < ApplicationController
before_action :set_webfinger_header before_action :set_webfinger_header
def show def show
@statuses = @account.statuses.order('id desc').includes(thread: [:account], reblog: [:account], stream_entry: [])
respond_to do |format| respond_to do |format|
format.html format.html
format.atom format.atom

View File

@ -1,14 +1,14 @@
class Status < ActiveRecord::Base class Status < ActiveRecord::Base
belongs_to :account, inverse_of: :statuses belongs_to :account, inverse_of: :statuses
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status' belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status' belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs
has_one :stream_entry, as: :activity, dependent: :destroy has_one :stream_entry, as: :activity, dependent: :destroy
has_many :favourites, inverse_of: :status, dependent: :destroy has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status' has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog
has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status' has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :thread
has_many :mentioned_accounts, class_name: 'Mention', dependent: :destroy has_many :mentioned_accounts, class_name: 'Mention', dependent: :destroy
validates :account, presence: true validates :account, presence: true

View File

@ -4,11 +4,21 @@
.card .card
.avatar= image_tag @account.avatar.url(:large) .avatar= image_tag @account.avatar.url(:large)
.bio %h1.name
%h1.name = @account.display_name.blank? ? @account.username : @account.display_name
= @account.display_name.blank? ? @account.username : @account.display_name %small= "@#{@account.username}"
%small= "@#{@account.username}" .details
.counter
%span.counter-label Posts
%span.counter-number= @account.statuses.count
.counter
%span.counter-label Following
%span.counter-number= @account.following.count
.counter
%span.counter-label Followers
%span.counter-number= @account.followers.count
.bio
%p= @account.note
.activity-stream .activity-stream
- @account.statuses.order('id desc').each do |status| - @statuses.each do |status|
= render partial: 'stream_entries/status', locals: { status: status, include_threads: false, is_successor: false, is_predecessor: false } = render partial: 'stream_entries/status', locals: { status: status, include_threads: false, is_successor: false, is_predecessor: false }

View File

@ -1,5 +1,5 @@
.entry.entry-follow .entry.entry-follow
.content .content
%strong= follow.account.acct %strong= link_to follow.account.acct, account_path(follow.account)
is now following is now following
%strong= follow.target_account.acct %strong= link_to follow.target_account.acct, url_for_target(follow.target_account)

View File

@ -1,5 +1,5 @@
- content_for :header_tags do - content_for :header_tags do
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_stream_entry_url(@account, @stream_entry, format: 'atom') }/ %link{ rel: 'alternate', type: 'application/atom+xml', href: account_stream_entry_url(@account, @stream_entry, format: 'atom') }/
.activity-stream .activity-stream.activity-stream-headless
= render partial: @type, locals: { @type.to_sym => @stream_entry.activity, include_threads: true, is_predecessor: false, is_successor: false } = render partial: @type, locals: { @type.to_sym => @stream_entry.activity, include_threads: true, is_predecessor: false, is_successor: false }