forked from OpenNeo/impress
Matchu
154bdd5d0d
items#show has been very slow recently, and I think it's because there's a lot of querying to be done. Another option would have been to attempt to short-circuit Item#supported_species if not body specific, but that would still leave us with 1s load times for body specific items, which is not satisfactory. The short-circuiting might still be worth doing, but probably not now. I'm also not sure that this is actually the core performance problem, but we'll see. It definitely helped on the dev server: items#show took about 200ms on item pages where everything but species images were cached, then took about 30ms on subsequent loads. Looking like a good candidate.
113 lines
4.3 KiB
Text
113 lines
4.3 KiB
Text
- title @item.name
|
|
- canonical_path @item
|
|
|
|
- localized_cache "items/#{@item.id} header" do
|
|
%header#item-header
|
|
= image_tag @item.thumbnail_url, :id => 'item-thumbnail'
|
|
%div
|
|
%h2#item-name= @item.name
|
|
= nc_icon_for(@item)
|
|
- unless @item.rarity.blank?
|
|
== #{t '.rarity'}: #{@item.rarity_index} (#{@item.rarity})
|
|
= link_to t('.resources.jn_items'), jn_items_url_for(@item)
|
|
- unless @item.nc?
|
|
= link_to t('.resources.shop_wizard'), shop_wizard_url_for(@item)
|
|
= link_to t('.resources.super_shop_wizard'), super_shop_wizard_url_for(@item)
|
|
= link_to t('.resources.trading_post'), trading_post_url_for(@item)
|
|
= link_to t('.resources.auction_genie'), auction_genie_url_for(@item)
|
|
|
|
- if user_signed_in?
|
|
#closet-hangers
|
|
%h3
|
|
= t '.closet_hangers.header_html',
|
|
:user_items_link => link_to(t('your_items'),
|
|
user_closet_hangers_path(current_user))
|
|
= form_tag update_quantities_user_item_closet_hangers_path(:user_id => current_user, :item_id => @item), :method => :put do
|
|
#closet-hangers-ownership-groups
|
|
- @current_user_lists.each do |owned, lists|
|
|
%div
|
|
%h4= closet_lists_group_name(:you, owned)
|
|
%ul
|
|
- lists.each do |list|
|
|
%li
|
|
= number_field_tag "quantity[#{list.id}]",
|
|
@current_user_quantities[list.id], :min => 0
|
|
= label_tag "quantity[#{list.id}]", list.name
|
|
|
|
%li
|
|
= number_field_tag "quantity[#{owned}]",
|
|
@current_user_quantities[owned], :min => 0
|
|
|
|
- unless lists.empty?
|
|
= label_tag "quantity[#{owned}]",
|
|
t('closet_lists.unlisted_name'),
|
|
:class => 'unlisted'
|
|
- else
|
|
= label_tag "quantity[#{owned}]",
|
|
t('.closet_hangers.quantity_label')
|
|
= submit_tag t('.closet_hangers.submit')
|
|
|
|
- localized_cache "items/#{@item.id} info" do
|
|
%p= @item.description
|
|
|
|
#item-zones
|
|
%p
|
|
%strong #{t '.zones.occupied_header'}:
|
|
= list_zones @occupied_zones, :uncertain_label
|
|
%p
|
|
%strong #{t '.zones.restricted_header'}:
|
|
- if @restricted_zones.empty?
|
|
= t '.zones.none'
|
|
- else
|
|
= list_zones @restricted_zones
|
|
|
|
#trade-hangers
|
|
- [true, false].each do |owned|
|
|
%p
|
|
%strong
|
|
= trading_closet_hangers_header(owned, @trading_closet_hangers_by_owned[owned].size)
|
|
= render_trading_closet_hangers(owned)
|
|
%span.toggle
|
|
%span.more= t '.trading_closet_hangers.show_more'
|
|
%span.less= t '.trading_closet_hangers.show_less'
|
|
|
|
- localized_cache 'items#show preview_header' do
|
|
#item-preview-header
|
|
%h3= t '.preview.header'
|
|
= link_to t('.preview.customize_more'), root_path, :id => 'customize-more',
|
|
:class => 'button'
|
|
|
|
#item-preview
|
|
#item-preview-species
|
|
-# Does this cache ever need to be swept? I don't think so. These days we
|
|
-# can identify body-specific items instantly, and, if it's instead
|
|
-# particular to a single species, we definitely know that the first time
|
|
-# we render.
|
|
- localized_cache "items/#{@item.id} item_preview_species" do
|
|
= standard_species_images_for(@item)
|
|
#item-preview-error
|
|
#item-preview-swf= t '.preview.requirements_not_met'
|
|
|
|
- localized_cache "items/#{@item.id} contributors" do
|
|
- unless @contributors_with_counts.empty?
|
|
#item-contributors
|
|
%header #{t '.contributors.header'}:
|
|
%ul
|
|
- @contributors_with_counts.each do |contributor, count|
|
|
%li= link_to(contributor.name, user_contributions_path(contributor)) + format_contribution_count(count)
|
|
%footer= t '.contributors.footer'
|
|
|
|
:javascript
|
|
var CURRENT_ITEM_ZONES_RESTRICT = #{@item.zones_restrict.inspect},
|
|
IMPRESS_HOST = #{RemoteImpressHost.inspect};
|
|
|
|
%script#swf-assets-not-found-template{:type => 'text/x-jquery-tmpl'}
|
|
= twl '.preview.not_found', :item_name => h(@item.name),
|
|
:species_name => '${species_name}',
|
|
:color_name => '${color_name}',
|
|
:modeling_link_url => root_path
|
|
|
|
- content_for :javascripts do
|
|
= include_javascript_libraries :jquery, :swfobject, :jquery_tmpl
|
|
= javascript_include_tag 'items/show'
|
|
|