2024-07-09 13:19:23 -07:00
- page_title = params[:for] ? "Shopping List for \"#{params[:for]}\"" : "Shopping List"
- title page_title
%h1#title= page_title
2024-07-09 13:04:22 -07:00
:markdown
Here's a custom shopping list for exactly the items in your outfit!
Have fun bringing your design to life!!
Add bare-bones Item Getting Guide page
TNT requested that we figure out ways to connect the dots between
people's intentions on DTI to their purchases in the NC Mall.
But rather than just slam ad links everywhere, our plan is to design an
actually useful feature about it: the "Item Getting Guide". It'll break
down items by how you can actually get them (NP economy, NC Mall,
retired NC, Dyeworks, etc), and we're planning some cute actions you
can take, like shortcuts for getting them onto trade wishlists or into
your NC Mall cart.
This is just a little demo version of the page, just breaking down
items specified in the URL into NC/NP/PB! Later we'll do more granular
breakdown than this, with more info and actions—and we'll also like,
link to it at all, which isn't the case yet! (The main way we expect
people to get here is by a "Get these items" button we'll add to the
outfit editor, but there might be other paths, too.)
2024-05-06 20:37:59 -07:00
2024-06-16 12:37:53 -07:00
- if @items[:nc_mall].present?
2024-05-14 00:09:27 -07:00
%h2 NC Mall items
2024-05-14 17:41:05 -07:00
:markdown
2024-05-14 16:03:35 -07:00
These items are available in the NC Mall right now! You can buy them
2024-05-14 17:41:05 -07:00
with Neocash, a special currency you can [purchase directly][nc]
from Neopets or redeem via [gift cards][gc].
[nc]: https://secure.nc.neopets.com/get-neocash
[gc]: https://secure.nc.neopets.com/nickcash-cards
2024-06-09 15:05:00 -07:00
2024-06-20 14:16:51 -07:00
%table.item-list{"data-complexity": complexity_for(@items[:nc_mall])}
2024-05-20 15:23:34 -07:00
%thead
%tr
%td
2024-06-20 13:55:04 -07:00
%th.name-cell
2024-06-16 12:37:53 -07:00
Total: #{nc_total_for @items_needed[:nc_mall]} NC
(#{pluralize @items_needed[:nc_mall].size, "item"})
2024-05-20 16:15:46 -07:00
%td.actions-cell
2024-06-16 12:37:53 -07:00
- if @items_needed[:nc_mall].present?
2024-06-20 14:20:06 -07:00
%button{
onclick: "alert('Todo!')",
data: {"action-kind": "bulk-nc-mall"},
}
2024-06-15 15:47:52 -07:00
= cart_icon alt: ""
Buy all in NC Mall
2024-05-20 15:23:34 -07:00
%tbody
2024-06-16 12:37:53 -07:00
- @items[:nc_mall].each do |item|
2024-05-21 18:48:29 -07:00
= render "item_list_row", item: do
%button{onclick: "alert('Todo!')"}
= cart_icon alt: ""
Buy (#{item.current_nc_price} NC)
Add bare-bones Item Getting Guide page
TNT requested that we figure out ways to connect the dots between
people's intentions on DTI to their purchases in the NC Mall.
But rather than just slam ad links everywhere, our plan is to design an
actually useful feature about it: the "Item Getting Guide". It'll break
down items by how you can actually get them (NP economy, NC Mall,
retired NC, Dyeworks, etc), and we're planning some cute actions you
can take, like shortcuts for getting them onto trade wishlists or into
your NC Mall cart.
This is just a little demo version of the page, just breaking down
items specified in the URL into NC/NP/PB! Later we'll do more granular
breakdown than this, with more info and actions—and we'll also like,
link to it at all, which isn't the case yet! (The main way we expect
people to get here is by a "Get these items" button we'll add to the
outfit editor, but there might be other paths, too.)
2024-05-06 20:37:59 -07:00
2024-06-16 12:37:53 -07:00
- if @items[:dyeworks].present?
2024-06-09 13:25:59 -07:00
%h2 Dyeworks items
:markdown
2024-06-20 13:21:56 -07:00
These are recolored "Dyeworks" variants of items. Dyeworks is a game of
chance: if you have the "base" item and a Dyeworks Hue Brew Potion, you can
[combine them][dyeworks] to receive a random color variant. You keep both
the new item *and* the base item.
If you don't get the color you want, you can use another potion to try
again. It's also common for users to exchange the variants they don't want
2024-06-20 14:40:09 -07:00
via "NC Trading". Potions can be bought individually, or in bundles of 5
or 10.
2024-06-09 13:25:59 -07:00
[dyeworks]: https://www.neopets.com/mall/dyeworks/
2024-06-09 15:05:00 -07:00
2024-06-20 14:16:51 -07:00
%table.item-list{"data-complexity": complexity_for(@items[:dyeworks])}
2024-06-09 13:25:59 -07:00
%thead
2024-06-15 15:47:52 -07:00
%tr
%td.thumbnail-cell
= image_tag "https://images.neopets.com/items/mall_80x80_cleaning.gif",
alt: "Dyeworks Hue Brew Potion"
2024-06-20 13:55:04 -07:00
%th.name-cell
2024-06-16 12:37:53 -07:00
Total: #{dyeworks_nc_total_for @items_needed[:dyeworks]} NC
2024-06-20 13:14:51 -07:00
+
%span.price-breakdown{
title: "At least #{pluralize @items_needed[:dyeworks].size, 'potion'}, " +
"average " +
"#{dyeworks_average_num_potions_for @items_needed[:dyeworks]}, " +
2024-06-20 14:40:09 -07:00
"could be more. 125 NC per potion, but cheaper in bundles."
2024-06-20 13:14:51 -07:00
}
?? potions
(~#{dyeworks_estimated_potions_cost_for @items_needed[:dyeworks]} NC)
2024-06-15 15:47:52 -07:00
%td.actions-cell
2024-06-16 12:37:53 -07:00
- if @items_needed[:dyeworks].present?
2024-06-20 14:20:06 -07:00
%button{
onclick: "alert('Todo!')",
data: {"action-kind": "bulk-nc-mall"},
}
2024-06-15 15:47:52 -07:00
= cart_icon alt: ""
Buy all in NC Mall
2024-06-09 13:25:59 -07:00
%tbody
2024-06-16 12:37:53 -07:00
- @items[:dyeworks].each do |item|
Move Item Getting Guide subtitle UI out of helpers, into templates
I thought to myself, "I wonder if it's possible to use a sneaky hacky
`content_for` trick to be able to run this code in the template." And
indeed it is!
It's tricky cuz like, I want to render this template, and I want to
provide _multiple_ slots of content to it. So, in this variant, we keep
the block as being primarily for the actions, but also optionally
accept `content_for :subtitle` inside that block, too.
Executing that correctly is a bit tricky! The subtitle comes *before*
the actions. So, we `yield` the actions block immediately, save it to a
variable, and *then* get the subtitle block.
2024-06-09 15:03:35 -07:00
= render "item_list_row", item: do
- base_item = item.dyeworks_base_item
2024-06-09 15:05:00 -07:00
Move Item Getting Guide subtitle UI out of helpers, into templates
I thought to myself, "I wonder if it's possible to use a sneaky hacky
`content_for` trick to be able to run this code in the template." And
indeed it is!
It's tricky cuz like, I want to render this template, and I want to
provide _multiple_ slots of content to it. So, in this variant, we keep
the block as being primarily for the actions, but also optionally
accept `content_for :subtitle` inside that block, too.
Executing that correctly is a bit tricky! The subtitle comes *before*
the actions. So, we `yield` the actions block immediately, save it to a
variable, and *then* get the subtitle block.
2024-06-09 15:03:35 -07:00
- content_for :subtitle, flush: true do
2024-06-20 13:50:48 -07:00
= link_to base_item, target: "_blank" do
#{probability item.dyeworks_odds} chance
- if item.dyeworks_permanent?
%span.dyeworks-timeframe{
title: "This recipe is NOT currently scheduled to be removed " +
"from Dyeworks. It might not stay forever, but it's also " +
"not part of a known limited-time event, like most " +
"Dyeworks items are. (Thanks Owls team!)"
}
(Always available)
- elsif item.dyeworks_limited_final_date.present?
%span.dyeworks-timeframe{
title: "This recipe is part of a limited-time Dyeworks " +
"event. The last day you can dye this is " +
"#{item.dyeworks_limited_final_date.to_fs(:long)}. " +
"(Thanks Owls team!)"
}
(Limited-time: #{item.dyeworks_limited_final_date.to_fs(:month_and_day)})
- elsif item.dyeworks_limited?
%span.dyeworks-timeframe{
title: "This recipe is part of a limited-time Dyeworks " +
"event, and is scheduled to be removed from the NC Mall " +
"soon. (Thanks Owls team!)"
}
(Limited-time)
2024-06-09 15:05:00 -07:00
2024-06-09 13:25:59 -07:00
%button{onclick: "alert('Todo!')"}
= cart_icon alt: ""
Buy base (#{item.dyeworks_base_item.current_nc_price} NC)
2024-06-20 13:50:04 -07:00
= button_link_to "NC Trades",
item_trades_path(item, type: "offering"),
target: "_blank", icon: search_icon
2024-06-16 12:37:53 -07:00
- if @items[:np].present?
Add bare-bones Item Getting Guide page
TNT requested that we figure out ways to connect the dots between
people's intentions on DTI to their purchases in the NC Mall.
But rather than just slam ad links everywhere, our plan is to design an
actually useful feature about it: the "Item Getting Guide". It'll break
down items by how you can actually get them (NP economy, NC Mall,
retired NC, Dyeworks, etc), and we're planning some cute actions you
can take, like shortcuts for getting them onto trade wishlists or into
your NC Mall cart.
This is just a little demo version of the page, just breaking down
items specified in the URL into NC/NP/PB! Later we'll do more granular
breakdown than this, with more info and actions—and we'll also like,
link to it at all, which isn't the case yet! (The main way we expect
people to get here is by a "Get these items" button we'll add to the
outfit editor, but there might be other paths, too.)
2024-05-06 20:37:59 -07:00
%h2 Neopoint items
2024-05-14 17:41:05 -07:00
:markdown
These items can be purchased with Neopoints. For less-expensive items,
check the [Shop Wizard][wiz] first. Otherwise, try the
[Trading Post][tp] or [Auction Genie][ag]. Dress to Impress doesn't
track Neopoint item prices, but other fansites do!
[wiz]: https://www.neopets.com/shops/wizard.phtml
[tp]: https://www.neopets.com/island/tradingpost.phtml?type=browse
[ag]: https://www.neopets.com/genie.phtml
2024-06-09 15:05:00 -07:00
2024-06-20 14:16:51 -07:00
%table.item-list{"data-complexity": complexity_for(@items[:np])}
2024-05-21 18:03:00 -07:00
%thead
2024-06-15 15:47:52 -07:00
%tr
%td
2024-06-20 13:55:04 -07:00
%th.name-cell{colspan: 2}
2024-06-16 12:37:53 -07:00
Total: #{pluralize @items_needed[:np].size, "item"}
2024-05-21 18:03:00 -07:00
%tbody
2024-06-16 12:37:53 -07:00
- @items[:np].each do |item|
2024-05-21 18:48:29 -07:00
= render "item_list_row", item: do
= button_link_to "Shops", shop_wizard_url_for(item),
target: "_blank", icon: search_icon
= button_link_to "Trades", trading_post_url_for(item),
target: "_blank", icon: search_icon
Add bare-bones Item Getting Guide page
TNT requested that we figure out ways to connect the dots between
people's intentions on DTI to their purchases in the NC Mall.
But rather than just slam ad links everywhere, our plan is to design an
actually useful feature about it: the "Item Getting Guide". It'll break
down items by how you can actually get them (NP economy, NC Mall,
retired NC, Dyeworks, etc), and we're planning some cute actions you
can take, like shortcuts for getting them onto trade wishlists or into
your NC Mall cart.
This is just a little demo version of the page, just breaking down
items specified in the URL into NC/NP/PB! Later we'll do more granular
breakdown than this, with more info and actions—and we'll also like,
link to it at all, which isn't the case yet! (The main way we expect
people to get here is by a "Get these items" button we'll add to the
outfit editor, but there might be other paths, too.)
2024-05-06 20:37:59 -07:00
2024-06-16 12:37:53 -07:00
- if @pb_items_by_color.present?
2024-05-22 15:41:46 -07:00
%h2 Paint Brush items
2024-05-14 17:41:05 -07:00
:markdown
2024-05-22 15:41:46 -07:00
These items are part of a paint brush set. Once you paint your pet,
2024-05-14 17:41:05 -07:00
these items will be semi-permanently added to your Closet, even if your
pet changes color again! You can use this to mix-and-match styles for
"cross-paint" outfits.
2024-06-09 15:05:00 -07:00
2024-05-22 16:34:48 -07:00
- @pb_items_by_color.each do |color, items|
2024-06-15 15:47:52 -07:00
- items_needed = @pb_items_needed_by_color[color]
%table.item-list{
"data-group-type": "bundle",
"data-group-owned": items.all?(&:owned?),
2024-06-20 14:16:51 -07:00
"data-complexity": complexity_for(items),
2024-06-15 15:47:52 -07:00
}
2024-05-22 16:34:48 -07:00
%thead
2024-06-15 15:47:52 -07:00
%tr
%td.thumbnail-cell
- if color&.pb_item_thumbnail_url?
= image_tag color.pb_item_thumbnail_url,
alt: "Item thumbnail for #{color.pb_item_name}"
- elsif color
= image_tag pet_type_image_url(@pb_color_pet_types[color], size: :face),
srcset: ["#{pet_type_image_url(@pb_color_pet_types[color], size: :face_2x)} 2x"],
alt: @pb_color_pet_types[color].human_name
- else
= image_tag "https://images.neopets.com/items/starter_red_pb.gif",
alt: "Item thumbnail for Starter Red Paint Brush"
%th
- if color
#{color.pb_item_name || color.name.humanize}
- else
Basic colors
(#{pluralize items_needed.size, "item"})
%td.actions-cell
- if color&.pb_item_name?
= button_link_to "Shops",
shop_wizard_url_for(color.pb_item_name),
target: "_blank", icon: search_icon
= button_link_to "Trades",
trading_post_url_for(color.pb_item_name),
target: "_blank", icon: search_icon
- elsif color
.special-color-explanation
Get via Lab Ray, morphing potions, etc.
- else
.special-color-explanation
Many colors, like Red, will grant these items.
2024-05-22 16:34:48 -07:00
%tbody
- items.each do |item|
= render "item_list_row", item:
2024-05-14 00:09:27 -07:00
2024-06-16 12:37:53 -07:00
- if @items[:other_nc].present?
2024-06-09 13:25:59 -07:00
%h2 Neocash items (Capsules, events, retired, etc.)
2024-05-14 17:41:05 -07:00
:markdown
2024-06-09 19:22:34 -07:00
These items are part of the Neocash economy, but not directly for sale.
Sometimes they're available in the [NC Mall][mall], via special
bundles or events. Sometimes they're retired, and can only be obtained via
gifts or trades.
2024-05-14 17:41:05 -07:00
[mall]: https://ncmall.neopets.com/
2024-06-09 19:22:34 -07:00
2024-06-16 12:37:53 -07:00
- if @items[:other_nc].any?(&:nc_trade_value)
2024-06-09 19:22:34 -07:00
:markdown
The [Owls Value Guide][owls] often has more details about how to get
these items, and how much they're usually worth in the NC Trading
community. We've loaded their info here for you, too! Thanks, Owls team!
[owls]: https://www.neopets.com/~owls
2024-06-09 15:05:00 -07:00
2024-06-20 14:16:51 -07:00
%table.item-list{"data-complexity": complexity_for(@items[:other_nc])}
2024-05-27 14:25:12 -07:00
%thead
%td
2024-06-20 13:55:04 -07:00
%th.name-cell{colspan: 2}
2024-06-16 12:37:53 -07:00
Total: #{pluralize @items_needed[:other_nc].size, "item"}
2024-05-27 14:25:12 -07:00
%tbody
2024-06-16 12:37:53 -07:00
- @items[:other_nc].each do |item|
Move Item Getting Guide subtitle UI out of helpers, into templates
I thought to myself, "I wonder if it's possible to use a sneaky hacky
`content_for` trick to be able to run this code in the template." And
indeed it is!
It's tricky cuz like, I want to render this template, and I want to
provide _multiple_ slots of content to it. So, in this variant, we keep
the block as being primarily for the actions, but also optionally
accept `content_for :subtitle` inside that block, too.
Executing that correctly is a bit tricky! The subtitle comes *before*
the actions. So, we `yield` the actions block immediately, save it to a
variable, and *then* get the subtitle block.
2024-06-09 15:03:35 -07:00
= render "item_list_row", item: do
- content_for :subtitle, flush: true do
- if item.nc_trade_value.present?
2024-06-09 19:22:34 -07:00
- if nc_trade_value_is_estimate(item.nc_trade_value)
= link_to "https://www.neopets.com/~owls",
class: "owls-info-link", target: "_blank",
title: 'Owls keeps track of approximate "capsule" values of NC items for trading. Items with similar values can often be traded for one another. This is an estimate, not a rule!' do
%span.owls-info-label [Owls]
Estimated value:
= nc_trade_value_estimate_text(item.nc_trade_value)
- else
= link_to "https://www.neopets.com/~owls",
class: "owls-info-link", target: "_blank",
title: "Owls keeps track of how to get certain special items, even when there isn't a clear NC trade estimate." do
%span.owls-info-label [Owls]
Trade info:
#{item.nc_trade_value.value_text}
2024-06-09 15:05:00 -07:00
2024-05-27 14:25:12 -07:00
= button_link_to "NC Trades",
item_trades_path(item, type: "offering"),
target: "_blank", icon: search_icon
2024-05-14 16:03:35 -07:00
- content_for :stylesheets do
= page_stylesheet_link_tag "items/sources"