Commit graph

277 commits

Author SHA1 Message Date
8e93d603fa list prank colors as fake on the homepage, unless pranks are funny today 2014-03-27 22:44:18 -05:00
2df0133cff Oops, using item proxies broke closet comparison. Fix.
Turns out we need to assign closeted to actual items, not
the item proxies, since that's what we check against. (I
would've thought they're backed by the same instance of
the item anyway, but, whatever. The fix works :P)
2014-02-04 16:29:59 -06:00
62f584e366 triple oops; stop using removed field neopets_username in NeopetsUsers#new 2014-01-20 16:31:15 -06:00
b2fca6b6c1 closet hangers index uses neopets connections dropdown 2014-01-18 22:50:14 -06:00
72b174c9b3 store all neopets usernames for logged-in users, but breaks closet_hangers#index 2014-01-18 21:55:01 -06:00
8288b8a10d username form, backed by localstorage for guests; not yet backed by db for logged-in users 2014-01-17 11:12:56 -06:00
99b2acd419 attach body id to newest unmodeled item species names 2014-01-10 16:25:03 -05:00
7dd2646dbb add basic caching - TODO: avoid these computations in the controller 2014-01-10 16:25:02 -05:00
9a4e114964 oh yum, this is really starting to come together :) 2014-01-10 16:25:02 -05:00
7c6e607612 basic neopia api integration 2014-01-10 16:25:02 -05:00
b6247fa22f prepare partials for closet_hangers#index, too 2013-12-27 21:48:28 -05:00
f07996d762 cache pet images on items#show, in case that's what's being a super-slow jerkface 2013-12-05 15:22:43 -06:00
8bd7ad5a1e support manually uploaded swf asset images - not the actual uploading, but block them from being reconverted 2013-10-16 15:50:48 -05:00
019303031b choose list when importing from pets 2013-08-17 12:07:04 -04:00
72c59f0b68 if there's only one item search result, redirect to it 2013-07-09 19:54:22 -07:00
4c208c9ac3 instead of returning an empty item list on contradiction, return an empty proxy collection 2013-07-03 18:17:16 -07:00
b92131b26c use item proxies in items#index when given item IDs 2013-06-27 00:15:20 -07:00
9e3cac82ec use proxies for item html, too
Some lame benchmarking on my box, dev, cache classes, many items:

No proxies:
    Fresh JSON:  175,  90,  90,  93,  82, 88, 158, 150, 85, 167 = 117.8
    Cached JSON: (none)
    Fresh HTML:  371, 327, 355, 328, 322, 346 = 341.5
    Cached HTML: 173, 123, 175, 187, 171, 179 = 168

Proxies:
    Fresh JSON:  175, 183, 269, 219, 195, 178 = 203.17
    Cached JSON:  88,  70,  89, 162,  80,  77 = 94.3
    Fresh HTML:  494, 381, 350, 334, 451, 372 = 397
    Cached HTML: 176, 170, 104, 101, 111, 116 = 129.7

So, overhead is significant, but the gains when cached (and that should be
all the time, since we currently have 0 evictions) are definitely worth
it. Worth pushing, and probably putting some future effort into reducing
overhead.

On production (again, lame), items#index was consistently averaging
73-74ms when super healthy, and 82ms when pets#index was being louder
than usual. For reference is all. This will probably perform
significantly worse at first (in JSON, anyway, since HTML is already
mostly cached), so it might be worth briefly warming the cache after
pushing.
2013-06-26 23:50:19 -07:00
e42de795dd Use item proxies for JSON caching
That is, once we get our list of IDs from the search engine, only
fetch records whose JSON we don't already have cached.

It's simpler here to use as_json, but it'd probably be even faster
if I figure out how to serve a plain JSON string from a Rails
controller. In the meantime, requests of entirely cached items
are coming in at about 85ms on average on my box (dev, cache
classes, many items), about 10ms better than the last
iteration.
2013-06-26 23:01:12 -07:00
a7574f0864 Don't add duplicate hangers now that closet import can specify a list
Bug report that this resolves:

...However, when I was using the "Import from SDB" tool just a few
minutes ago, it ended up adding EVERY neocash item into the "Not
In A List" section, regardless if I already that item imported
into my "Your Items". So, basically.. I had duplicates of
everything and it would not allow me to move them around into
separate catergories or anything. I know that every other time i've
used the import tool, it would only add NEW items that are not
currently already in my lists yet.
2013-06-25 23:40:02 -07:00
3c91f0cde0 import items to a specific list 2013-04-09 15:50:33 -05:00
f547a75c40 ruby 2.0.0 compatibility... hopefully. 2013-02-25 01:14:45 -05:00
e71530a958 only show item zones on outfits#edit occupies filter helper 2013-02-05 11:52:52 -06:00
4efcdaac49 re-enable item translations, now that i made a corresponding server config change 2013-01-28 13:11:28 -06:00
f7ae45e3e7 temporarily disable item translation 2013-01-28 03:30:43 -06:00
206811a2fb oops, deal with missing item fields better 2013-01-28 03:01:25 -06:00
895aef86c2 oops: only infer public locales from language header 2013-01-27 00:35:22 -06:00
8bb553701a remove N+1 queries in contributions#index 2013-01-25 15:23:48 -06:00
dd30fbe0d7 move from with_translations to includes(:translations), since we dont usually care about requiring 2013-01-24 18:26:00 -06:00
b2822d901b fix n+1 query for translations on items#index 2013-01-24 18:26:00 -06:00
26ac3782ec move zones to database 2013-01-24 18:26:00 -06:00
ce4e2fd53c move species to database 2013-01-24 18:25:59 -06:00
965465ca51 move species to database 2013-01-24 18:25:59 -06:00
332a7e67d8 update ItemsController to show new search errors properly 2013-01-24 18:24:35 -06:00
6e09b8bc10 globalized search first draft
Confirmed features:
    * Output (retrieval, sorting, etc.)
    * Name (positive and negative, but new behavior)
    * Flags (positive and negative)

Planned features:
    * users:owns, user:wants

Known issues:
    * Sets are broken
        * Don't render properly
        * Shouldn't actually be done as joined sets, anyway, since
          we actually want (set1_zone1 OR set1_zone2) AND
          (set2_zone1 OR set2_zone2), which will require breaking
          it into multiple terms queries.
    * Name has regressed: ignores phrases, doesn't require *all*
      words. While we're breaking sets into multiple queries,
      maybe we'll do something similar for name. In fact, we
      really kinda have to if we're gonna keep sorting by name,
      since "straw hat" returns all hats. Eww.
2013-01-24 18:24:35 -06:00
c9ae7155b1 locale metadata, including hidden locales for item loading and selection 2013-01-24 18:24:34 -06:00
ef2423e87f globalize3 for items 2013-01-24 18:24:34 -06:00
9c8f7f498f basic translation infrastructure for items - search is still english-only, and probably will have to be replaced with a legit search engine 2013-01-24 18:24:34 -06:00
b22188fa4a locale cookie should be long-term, not a session cookie 2013-01-24 18:24:33 -06:00
0f49d3ed02 simple locale dropdown in layouts#application 2013-01-24 18:24:33 -06:00
d96c54f3cc infer locale from params, then cookies, then Accept-Language header 2013-01-24 18:23:21 -06:00
062f485598 i18n for pets#load flashes 2013-01-24 18:23:21 -06:00
629e5c68a9 i18n for outfits/edit.js userbar message and outfit save errors 2013-01-24 18:23:20 -06:00
029373addd i18n for outfits#destroy flashes 2013-01-24 18:23:20 -06:00
467fb24c42 i18n for closet_hangers#create, closet_hangers#destroy, closet_hangers#update, closet_hangers#update_quantities (flashes, largely intertwined) 2013-01-24 18:23:20 -06:00
e55d407d63 i18n for neopets_pages#create (flashes - holy snap, that was nasty) 2013-01-24 18:23:19 -06:00
0f52ba5b4e i18n for neopets_users#create flashes 2013-01-24 18:23:19 -06:00
7bc255e9c8 i18n for users#index, users#update flashes 2013-01-24 18:23:19 -06:00
3c9e37f614 i18n for broken_image_reports#create flashes 2013-01-24 18:23:19 -06:00
ac0490dc1d i18n for items#show (including javascripts/items/show.js) 2013-01-24 18:23:19 -06:00
5e89e2b947 i18n for items#index (and layouts#items) 2013-01-24 18:23:18 -06:00
132a49d30b i18n for outfits#new (and layouts#application), including caching 2013-01-24 18:23:18 -06:00
bfd825d98e attempt to fix new species_support_ids format. sigh. 2013-01-23 00:25:09 -06:00
9701221035 wardrobe now considers item.species_support_ids when deciding compatibility
For example, the Meerca Maid Tray is a foreground item, so the SWF is marked
as compatible with all body types, but the item itself is clearly marked as
Meercas-only. items#show reflected this properly, but the swf_assets#index
call that the wardrobe uses ignored item.species_support_ids.

So, /bodies/:body_id/swf_assets.json?item_ids[]=... was deprecated in favor
of /pet_types/:pet_type_id/items/swf_assets.json?item_ids=[]..., which is
much like the former route but, before loading assets, also loads the pet
type and items, then filters the items by compatibility, then only loads
assets for the compatible items.
2013-01-02 23:15:32 -05:00
f56b544963 brought-to-you-by on items#show lists contributors 2012-10-24 22:09:05 -05:00
99669b8e4e cache homepage latest contribution 2012-08-09 22:59:35 -04:00
f6d34841ec cache newest items on homepage and items#index 2012-08-09 22:35:30 -04:00
4a69772cd2 remove N+1 queries on current user outfits page 2012-08-09 18:32:33 -04:00
72237f225c modeling hub 2012-08-06 21:15:31 -04:00
c2a0c5de74 new frontpage layout, yay 2012-08-01 13:34:54 -04:00
374c7e6147 Sharing now fully supports saved outfits, not just shared ones 2012-07-26 23:47:22 -04:00
7b5856ebf9 basic sharing
Sharing pane works, everything is great for guests. Logged in
users are on the way, since right now Share Outfit re-saves
anonymously rather than showing sharing data for the existing
outfit.
2012-07-17 12:15:04 -04:00
71da64b47f create /start/:species_name/:color_name route 2012-06-05 12:44:11 -04:00
e3b0a5e2d7 fix bug on closet_hangers#destroy in html format 2012-04-08 17:04:44 -05:00
f3d64840d6 filter lists on petpage export 2012-04-08 15:59:51 -05:00
7d0edbf23c closet_hangers#destroy now tied to hanger ID, not item 2012-03-23 16:25:10 -05:00
44156c5b21 can now have the same item in more than one list 2012-03-23 16:25:10 -05:00
abcf70a0c4 fix issue with csrf_param in wardrobe ajax
Due to a silly slip-up involving Javascript object literal syntax, we were
sending {csrf_param: "token"} instead of {authenticity_token: "token"} with
wardrobe AJAX requests. This would cause users to be auto-logged-out for
failing to provide a proper token. Oops.
2012-01-14 12:35:05 -06:00
d335c2e677 properly handle search error in rails 3.0.5 2012-01-13 15:10:25 -06:00
696b2aedaf give SWFs real, unique ID numbers
Lots of scary bugs were being caused by the fact that the possibly-duplicate Neopets ID
was being treated as an SWF's real primary key, meaning that a save meant for object swf
number 123 could be saved to biology swf number 123. Which is awful.

This update gives SWFs their own unique internal ID numbers. All external lookups still use
the remote ID and the type, meaning that the client side remains totally unchanged (phew).
However, all database relationships with SWFs use the new ID numbers, making everything
cleaner. Yay.

There are probably a few places where it would be appropriate to optimize certain lookups
that still depend on remote ID and type. Whatever. Today's goal was to remove crazy
glitches that have been floating around like mad. And I think that goal has been met.
2012-01-12 17:17:59 -06:00
0e56de4148 image mode is now public 2011-08-07 19:52:11 -04:00
7358aae680 report broken images 2011-08-07 18:23:44 -04:00
4c510f91db search by username 2011-08-05 11:28:11 -04:00
ea4564569b show own/want on new items 2011-08-04 10:33:35 -04:00
5d3343bd6c show twice as many new items 2011-08-04 10:30:00 -04:00
d99a1ad792 newest items 2011-08-04 10:01:44 -04:00
2398f34071 import items from pets 2011-08-03 11:35:06 -04:00
513711bf60 import sdb as well as closet 2011-08-02 22:42:56 -04:00
374e85f9d0 drop in redirect image url for urls blocked on petpages 2011-08-02 20:01:48 -04:00
be5bdb1eec handle search errors better in wardrobe 2011-08-01 00:00:39 -04:00
dacfc99ce7 allow your_items_path to be cached on home 2011-07-31 22:17:59 -04:00
037cb1e95a your items link on home 2011-07-31 18:45:53 -04:00
30096f6b0a items petpage export 2011-07-31 02:52:19 -04:00
137aeac8d4 show traders on items#show 2011-07-31 00:19:28 -04:00
b9700e3d7c show owns/wanted items on somene elses items list 2011-07-30 23:03:43 -04:00
0c92bf5987 set list visibility in closet_lists#edit 2011-07-30 22:34:27 -04:00
0e522fa371 better handle list emptiness for drag-n-drop 2011-07-30 19:47:04 -04:00
75961abc17 privacy for unlisted hangers 2011-07-30 19:45:28 -04:00
d893b0ab41 Your Items autocomplete supports lists 2011-07-29 11:25:17 -04:00
358840076c closet lists, round one 2011-07-29 10:52:04 -04:00
b86ce67c02 first pass at closet lists, including form 2011-07-26 20:27:23 -04:00
c3279f0512 keep track of the closet page we are importing, even if it errored out 2011-07-25 14:22:26 -04:00
d9f94ae3fa Your Items page aware of wanting items 2011-07-22 17:55:05 -04:00
b1670b1595 fix bug with adding/removing wanted items 2011-07-22 16:17:13 -04:00
85af53417b distinguish between owning and wanting an item 2011-07-22 15:35:38 -04:00
01ba06b1b4 closet neopets username 2011-07-22 14:02:04 -04:00
c5103b6557 neomail link on closets 2011-07-20 15:16:22 -04:00
02ef70f749 simplify closet hangers view, replace user_is?(@user) with !public_perspective? 2011-07-20 12:39:18 -04:00
884ad2d5b8 user:owns in item search 2011-07-17 17:24:29 -04:00
e72c9a0092 closet hangers delete gets nifty ajax, too 2011-07-15 23:39:19 -04:00
77818471c5 closet hangers page has nice remove button 2011-07-15 23:14:26 -04:00
eeb3fc3af9 closet hangers page gets serious ajax action 2011-07-15 22:52:53 -04:00
437b1c052d quantity form on your items page 2011-07-15 17:21:18 -04:00
e6020a5cfe simplify closeting item 2011-07-15 16:32:05 -04:00
47e3b72937 restructure backend of closet hanger quantity updates 2011-07-15 16:16:40 -04:00
fab612950a basic hanger interface from item 2011-07-14 13:56:44 -04:00
3a193d534d closeted icon, all over the place 2011-07-14 13:56:44 -04:00
a33898a393 import closet page 2011-07-14 13:56:20 -04:00
6ebacc99dd closet page saving backend 2011-07-14 13:56:20 -04:00
d5641dddbb user closet display 2011-07-14 13:56:20 -04:00
d0dd797cdf delete outfits from outfit page 2011-07-14 13:14:06 -04:00
443b144f29 image mode 2011-06-27 15:33:34 -04:00
b57043e0d2 Merge branch 'images' 2011-05-22 16:34:31 -04:00
6c9ddac8dd totally pro wardrobe image adapter, via konami 2011-05-22 16:30:02 -04:00
740693018b sitemap.xml 2011-05-20 20:49:48 -04:00
3b7f158890 cache just content on items, not action, so we can still use title and canonical 2011-05-20 20:23:37 -04:00
b13fd7ae99 moving toward s3 image storage 2011-05-20 19:19:14 -04:00
648649f5cc support special colors in the infinite closet 2011-05-02 18:07:56 -04:00
1207e84804 nice page to view current user's outfits 2011-03-23 18:23:01 -04:00
492841d9bc load happy pets for item db previews 2011-02-22 18:11:12 -05:00
2a7fea11e6 handle timeout errors for pet data, swfs, pet images 2011-02-19 22:49:13 -05:00
ea4ec0f99d gracefully handle connection errors with neopets servers 2011-02-19 22:09:12 -05:00
fa14232473 allow guests to share outfits 2011-02-10 17:50:47 -05:00
bb1f10c60b Merge branch 'fixleak' 2011-02-05 10:33:39 -05:00
4b66a560e7 roulette system :) 2011-01-27 16:35:46 -05:00
8c8776ff63 devise implemented, but not remembering 2011-01-26 13:40:15 -05:00
ba43d104db cache item_zone_sets.json too 2010-12-11 10:36:59 -05:00
f2bcde47ea cache the constant pet_attributes.json 2010-12-11 10:32:42 -05:00
ca155314fa home page caching, reset top contributors only when necessary 2010-12-11 09:37:39 -05:00
ca9e1fb0ca cache item show pages as a first try :) 2010-12-08 20:15:46 -05:00
8447667f62 Merge branch 'bugmash' 2010-11-25 21:33:37 -05:00
99fb6b984f ensure that we're only returning item assets for items and biology assets for pet states 2010-11-25 21:33:34 -05:00
e2d48a67df sort colors by name on frontpage, in wardrobe 2010-11-24 21:17:24 -05:00
b308c0f0ba outfit renaming, plus some bug fixes here and there 2010-11-24 20:51:01 -05:00
1f1c219005 fix species:x bug on new arel, start tracking unintended search exceptions 2010-11-16 23:32:53 -05:00
98d908d33c return nil, not 500, when missing certain swf_assets.json param 2010-11-15 16:04:54 -05:00
41aa9008fc remove indiscriminate asset caching 2010-11-15 15:58:16 -05:00
d81c08f866 remember me on login 2010-11-13 19:42:56 -05:00
9b0cf8b597 show outfit page 2010-11-13 17:26:27 -05:00
e6b1465355 wardrobe has an 'active outfit' - phew! cloning is hard 2010-11-12 20:58:28 -05:00
6b92c2aa33 loading current user outfit list, deleting outfits, toggling star 2010-11-11 13:43:22 -05:00
1dd2ccb00b lovely interface for saving outfits. still no reading them yet 2010-11-10 16:59:54 -05:00
1fd98fb191 basic interaction with fake outfits 2010-11-08 20:40:03 -05:00
7db0beec75 points for bulk pet adding 2010-11-06 19:07:15 -04:00
d10ab2615f actually contributing things, yay 2010-11-06 18:08:45 -04:00
ef004cc6cb needed objects 2010-11-06 13:07:12 -04:00
446a117ec8 top contributors 2010-11-06 12:15:10 -04:00
3992e57adc user contribution page 2010-11-06 11:57:22 -04:00
a5b119a9bc contributions viewing 2010-11-06 11:52:58 -04:00
2d550724f0 bulk add pets 2010-11-05 20:09:03 -04:00