Inventory Functional Spec

Category:Functional Specs
The Functional Spec explains how a user interacts with a feature, and what results they can expect from the feature. Ideally, the UI will indicate what the user can expect to happen next. Use screenshots when appropriate.
== General Description ==
What does this feature do?
Allows the user to store items.
== Interface Requirements ==
How does the user use/activate this feature?
Clicking the Inventory button or hitting ctrl-i.
== Performance Requirements ==
Will this feature affect:
* Client FPS? YES. Large inventories take longer to draw (perhaps this is fixed).
* Simulator FPS? YES. Inventory is fetched from dataserver on the Simulator, so it may have a small effect on Simulator performance.
* Database? YES. The dataserver fetches inventory from the Database.
* Asset server? YES. Rezzing items reads from the Asset server. Creating inventory items writes to the Asset server.
* Network load? YES. The inventory structure must be streamed to you. Rezzed or opened items must be streamed to you. Uploaded items must be streamed to the asset server.
* Any other system? NO.
== Design Constraints ==
* Will this feature be unavailable on certain hardware? NO.
* Is this feature consistent (similar look & feel) with other features? PARTIAL. Inventory has its own Menu, which is not accessible from the keyboard.
* Is this feature well integrated (accessible when you need it, and in the place(s) you expect to find it)? YES.
* Is this feature discoverable (newbie friendly)? PARTIAL. There's room for improvement.
* Is this feature Safe, Predictable, and Responsive? YES.
== Feature Dependencies ==
* Features that this feature will affect
Attachments, Rezzing objects
* Features that affect this feature
Upload Assets, Focus, Take, Take Copy
== Security risks ==
* Does this feature give access to something it should not? NO.
== Feature Rules ==
The rules of the feature, organized in order of precedence. (eg. Rule 1 supersedes Rule 2, which supersedes Rule 3)
* Object taken or returned into inventory go into their previous folder.
* Returned object that have no previous folder will be put in the Lost and Found folder.
* Accepted or uploaded assets of a certain type (eg. Clothing, Script, Animation) will go into a system folder of the same type.
* Accepted categories will go into the Inventory folder.
== Feature Usage ==
When appropriate, the feature will be laid out in chronological order, or in the order they are most likely to be used. (eg. Create a group, then add members, then deed land, ... kick members, leave group)
Inventory
== Default inventory ==
A new user will have the following default inventory folders:
* Animations
* Body Parts
* ??Calling Cards
* Clothing
* Gestures
* Landmarks
* ??Lost and Found
* Notecards
* Objects
* Photo Album
* Scripts
* Sounds
* Textures
* ??Trash
* Library
== Adding Inventory ==
=== Uploading Assets ===
=== Creating objects in world and taking them ===
Create a new object, right click > take it, will remove it from the world and place it into your Objects folder.
Taking an item or a copy of an item that was originally rezzed from inventory will put the item back into its previous folder.
If you create an item on someone else's land and they may return it to you.
Returned items go to the folder they were rezzed from.
If the object never had a folder or that folder has been deleted, object is put "Lost and Found" folder.
=== Creating new items via context menu ===
Right click on a folder and click one of the following.
New Folder
New Script
New Note
New Gesture
New Clothes
New Body Parts
The new item will be placed in the folder you right clicked.
- You may not create items in the Library. The Library is read-only.
=== Creating new items via Create menu ===
Click the Inventory Create menu, and choose one of the following.
New Folder
New Script
New Note
New Gesture
New Clothes
New Body Parts
The new item will be automatically sorted into the appropriate system folder.
=== Creating Landmarks via World menu ===
World menu > Create Landmark Here
=== Creating Body parts and Clothing via Appearance mode ===
=== Create scripts via Object contents button ===
=== Automatic sorting into folders ===
=== Accepting inventory ===
Accepting inv item
Same for items received while offline
Accepting auto-opening inv item
Same for items received while offline
Accepting inv category
Same for items received while offline
=== Declining inventory ===
Declining inventory item
Same for items received while offline
Declining auto-opening inventory item
Same for items received while offline
Declining inventory category
Same for items received while offline
=== Automatic Declining inventory ===
While in busy mode
From muted person or item
From muted group
=== Window behavior when receiving inventory ===
received item from person or script
received auto-open item from person or script
received category from person or script
received group notice attachment
== Rezzing from inventory ==
== Attaching from inventory ==
=== Context menu ===
You get a collision prompt when using "Attach to" option if there's an attachment already on that attach point. You do not get a warning if you drag and drop the attachment onto your Avatar or select Wear via context menu.
=== Dragging on your Avatar ===
=== Dragging a folder onto your Avatar ===
=== Dragging a Library folder onto your Avatar ===
Dragging items from the Library folder onto your avatar will place a copy of the items in your Inventory. (The acquired date will not be set on these objects. bug?)
== Searching Inventory ==
Keyboard:
ctrl-I toggles inventory open / closed
(should it do anything other than hide it? close or open any folders?)
focus should be in the search field by default when inventory is opened
search for item
press return, where does focus go?
press up and down arrow keys, where does focus go?
press up and down arrow keys while search is loading & searching your inv, where does focus go?
press right and left arrow keys opens and closes folders
press tab
When searching, items matching the search, only items matching the search term and the folder the item resides in will be displayed.
Selecting a folder, then clearing the search field will keep the folder selected.
??Closing inventory, then reopening inventory will clear the search field and place the cursor in the sierch field.
??Pressing the down arrow while focus is in search field will move focus to inventory contents.
After accepting an inventory item, the system folder the item was sorted into will be opened, and the item will ??have tentative selection ??be highlighted. Opening the inventory at this point will scroll the inventory so the highlighted item is in view.
When an item has ??highlight (eg. It is outlined, but the color of the item name is not inversed), ??pressing the down arrow key once will move select the item below it.
After accepting a category, the category is added as the last folder in your folder.
(??bugs)The category is not sorted or highlighted. The next time you login, the category will be sorted alphabetically.
== Visible item search (what's the name of this feature?) ==
cursor is in inventory tree area of inventory window
type a few letters of an item name
first item matching will be highlighted
1 second(??) typing timeout
=== Filters ===
=== Recent Items ===
default filter for recent items is everything since the last time you logged in.
Filters can be changed for both the inventory tab and the recent items tab. Filters are reset when you relog.
=== Sorting ===
sort order defaults to sort by date in descending order. This only affects items, and folders are always sorted alphabetically.
Sort order can be changed to alphabetically.
Sort order is saved session to session.
== Organizing Inventory (or drag and drop behavior) ==
=== Multi select items ===
shift-click
ctrl-click
Keyboard:
shift up-arrow
shift down-arrow
=== Moving Items ===
dragging onto scroll bars will scroll the inv [no longer works?]
dragging over closed folders auto opens them. folder will close again after drop.
after dropping in an open folder
dragging onto "recent items tab will open the recent items tab" [bug?]
=== Copying Items ===
=== Renaming Items ===
=== Changing item properies ===
=== Opening a second Inventory window ===
=== Closing all folders ===
== Deleting Inventory ==
Deleting an item via the UI or keyboard delete key moves the item to the Trash folder.
Inventory File menu > Empty Trash to remove the contents of the trash forever.
(Future implementations will automatically empty the trash)
== Object Inventory ==
any items with duplicate names in an object will be renamed by adding a number to the end name, even if it's a no-modify item
=== Drag rules ===
Esc will cancel a drag operation
dragging items onto another avatar or their name tag will give it to them
??dragging items onto avatars transparent attachment will not give the item to the av.
??Transparent is defined as 80%.
dragging an item over an object in world will show a selection silhouette around the object.
ctrl dragging a an item over an object will highlight the object, indicating the item will be put into the object contents.
ctrl-dragging a script onto an object will turn the script off.
dragging items onto an object will automatically put them into the root prim.
Ctrl-dragging will drop the item into the prim even if it's a child.
Dragging a no copy item from object contents to your inventory will pop up a warning that you will be removing(and not copying) the item from the object contents.
??you can multi select inventory items and drag them to an object's contents.
you can drag a folder of contents onto an object
You cannot multi select items in an object and drag them to inventory
Rezzing an object by dragging it from inventory into world will keep the object highlighted, but not selected, in your inventory. If you hit delete once, the in-world object will be deleted, if you hit delete a second time the item in your inventory will Not be deleted, because it's only highlighted.
== Inventory usability ==
=== Keyboard interaction ===
Hitting tab while focus is in the inventory will cycle focus between the search folder, the inventory tabs and the inventory contents (??what is the name of this portion of the window?).
Enter key operation:
* objects - will open properties panel
* everything else - view the item
Arrow keys:
* The up and down arrow keys will move focus up and down in the inventory.
** Pressing down while your cursor is in the search field will move focus to the "My Inventory" folder.
** Pressing up while the "My Inventory" folder is focused will move the cursor into the search field.
The right arrow key will open a folder.
The left arrow key will close a folder.
The Home key will jump the inventory to the top, but will not move the selection.
The End key will jump inventory to the bottom, but will not move the selection.
The Page Up/Page Down keys will scroll up and down respectively, but will not move the selection.
=== Mouse interaction ===
Dragging items to the top or bottom of the inventory will scroll the inventory up or down.
Dragging items to the top of the inventory often inadvertantly opens the "Recent Items" tab.
if you have multiple inventories open close them all, and reopen inventory, the open folders will match that of the last inventory that was closed.
== Metrics ==
Speed - how fast the inventory opens and loads.
Responsiveness - time between clicking/dragging an inventory item to ground and the cursor switching from "not" to "allow drop" (this time seems to be increasing - may be related to sim data server load)
Predictability - Do you know what's going to happen when you release the mouse button?
Safety - Do we help you avoid disaster?